Path: blob/master/SonicMania/Objects/SPZ/EggJanken.h
338 views
#ifndef OBJ_EGGJANKEN_H1#define OBJ_EGGJANKEN_H23#include "Game.h"45#define EGGJANKEN_ARM_COUNT (2)6#define EGGJANKEN_JOINT_COUNT (3)7#define EGGJANKEN_SEGMENT_COUNT (EGGJANKEN_JOINT_COUNT + 1)89// Object Class10struct ObjectEggJanken {11RSDK_OBJECT12uint16 aniFrames;13Animator armAnimator;14Hitbox hitboxBody;15Hitbox hitboxButtonSolid;16Hitbox hitboxButton;17Hitbox hitboxArm;18StateMachine(stateJankenResult[9]);19uint16 sfxBeep3;20uint16 sfxBeep4;21uint16 sfxFail;22uint16 sfxClick;23uint16 sfxHit;24uint16 sfxDrop;25uint16 sfxImpact4;26uint16 sfxImpact3;27uint16 sfxExplosion;28};2930// Entity Class31struct EntityEggJanken {32RSDK_ENTITY33StateMachine(state);34StateMachine(stateDraw);35StateMachine(stateEyes);36uint8 health;37int32 timer;38uint8 invincibilityTimer;39int32 slotTimer;40Vector2 solidPos;41Vector2 moveOffset;42uint16 radius;43Vector2 origin;44int32 startY;45int32 storedXVel;46uint8 eyeFrames[EGGJANKEN_ARM_COUNT];47uint8 jankenResult2[EGGJANKEN_ARM_COUNT];48int32 jointFlags[EGGJANKEN_ARM_COUNT];49int32 jointAngleVels[EGGJANKEN_ARM_COUNT];50int32 armRadius[EGGJANKEN_ARM_COUNT];51int32 armRadiusSpeed[EGGJANKEN_ARM_COUNT];52Vector2 armPos[EGGJANKEN_ARM_COUNT];53StateMachine(stateArm[EGGJANKEN_ARM_COUNT]);54int32 jointAngles[EGGJANKEN_SEGMENT_COUNT * EGGJANKEN_ARM_COUNT];55int32 jointTargetAngles[EGGJANKEN_SEGMENT_COUNT * EGGJANKEN_ARM_COUNT];56int32 jointDirection[EGGJANKEN_SEGMENT_COUNT * EGGJANKEN_ARM_COUNT];57int32 jointDelays[EGGJANKEN_SEGMENT_COUNT * EGGJANKEN_ARM_COUNT];58uint8 attackingArmID;59uint8 armID;60uint8 armJointID;61int32 fullRotation;62bool32 isMoving;63Animator eyeAnimator;64Animator bodyAnimator;65Animator buttonAnimator;66Animator propellorLAnimator;67Animator propellorRAnimator;68};6970// Object Entity71extern ObjectEggJanken *EggJanken;7273// Standard Entity Events74void EggJanken_Update(void);75void EggJanken_LateUpdate(void);76void EggJanken_StaticUpdate(void);77void EggJanken_Draw(void);78void EggJanken_Create(void *data);79void EggJanken_StageLoad(void);80#if GAME_INCLUDE_EDITOR81void EggJanken_EditorDraw(void);82void EggJanken_EditorLoad(void);83#endif84void EggJanken_Serialize(void);8586// Extra Entity Functions87void EggJanken_CheckPlayerCollisions(void);88void EggJanken_HandleMovement(void);89void EggJanken_Explode(void);9091void EggJanken_ResetStates(void);92void EggJanken_SwapArmSwingDir(void);9394// Result States95void EggJanken_Result_PlayerWins(void);96void EggJanken_Result_PlayerLoses(void);97void EggJanken_Result_PlayerDraws(void);9899// Boss States100void EggJanken_State_SetupArena(void);101void EggJanken_State_StartFight(void);102void EggJanken_State_EnterJanken(void);103void EggJanken_State_AwaitButtonPress(void);104void EggJanken_State_Opened(void);105void EggJanken_State_InitialArmExtend(void);106void EggJanken_State_InitialArmRaise(void);107void EggJanken_State_None(void);108void EggJanken_State_Destroyed(void);109void EggJanken_State_ButtonPressed(void);110111void EggJanken_State_ResultPlayerWinner(void);112void EggJanken_State_HitShake(void);113114void EggJanken_State_FinishedBeingHit(void);115void EggJanken_State_RaiseArms(void);116void EggJanken_State_SwingDropArms(void);117void EggJanken_State_ResultPlayerDraw(void);118void EggJanken_State_WaitForArmAttackExtend(void);119void EggJanken_State_PrepareArmAttack(void);120void EggJanken_State_ArmAttack(void);121void EggJanken_State_FinishedArmAttack(void);122123void EggJanken_State_ResultPlayerLoser(void);124void EggJanken_State_FlipOver(void);125void EggJanken_State_ExtendDropArms(void);126void EggJanken_State_DropTarget(void);127void EggJanken_State_Drop(void);128void EggJanken_State_DropArms(void);129void EggJanken_State_Dropped(void);130void EggJanken_State_RetractDropArms(void);131void EggJanken_State_RiseUp(void);132void EggJanken_State_FlipBackOver(void);133134// Eyes States135void EggJanken_Eyes_Setup(void);136void EggJanken_Eyes_ChangeSlots(void);137void EggJanken_Eyes_None(void);138139// Arm States140void EggJanken_Arm_None(void);141void EggJanken_Arm_Idle(void);142void EggJanken_Arm_RetractArm(void);143void EggJanken_Arm_ExtendArm(void);144void EggJanken_Arm_StretchRetractArm(void);145void EggJanken_Arm_SwingArm(void);146void EggJanken_Arm_ArmAttack(void);147void EggJanken_Arm_Dropping(void);148149// Draw States150void EggJanken_Draw_Closed(void);151void EggJanken_Draw_Active(void);152void EggJanken_Draw_Destroyed(void);153154#endif //! OBJ_EGGJANKEN_H155156157