Path: blob/master/SonicMania/Objects/ERZ/ERZKing.h
338 views
#ifndef OBJ_ERZKING_H1#define OBJ_ERZKING_H23#include "Game.h"45typedef enum {6ERZKING_KING,7ERZKING_ARM_L,8ERZKING_ARM_R,9} ERZKingTypes;1011typedef enum {12ERZKING_HEAVY_GUNNER,13ERZKING_HEAVY_MYSTIC,14} ERZKingHeavyTypes;1516// Object Class17struct ObjectERZKing {18RSDK_OBJECT19int32 boundsL;20int32 boundsR;21int32 boundsM;22int32 boundsT;23int32 boundsB;24uint16 sfxHit;25uint16 sfxExplosion2;26uint16 aniFrames;27};2829// Entity Class30struct EntityERZKing {31RSDK_ENTITY32StateMachine(state);33StateMachine(stateDraw);34Vector2 originPos;35int32 type;36int32 timer;37int32 nextType;38int32 invincibilityTimer;39int32 health;40int32 typeChangeTimer;41int32 bodyAngle;42int32 armAngles[10];43Vector2 armPositions[10];44Vector2 rubyPos;45Vector2 unused;46EntityERZKing *parent;47Animator basicAnimator;48Animator headAnimator;49Animator bodyAnimator;50Animator beltAnimator;51Animator particleAnimator;52Animator rubyAnimator;53Animator unusedAnimator;54Animator armAnimator;55Animator cuffAnimator;56Animator handAnimator;57Hitbox hitbox;58uint8 storeDrawFX;59};6061// Object Struct62extern ObjectERZKing *ERZKing;6364// Standard Entity Events65void ERZKing_Update(void);66void ERZKing_LateUpdate(void);67void ERZKing_StaticUpdate(void);68void ERZKing_Draw(void);69void ERZKing_Create(void *data);70void ERZKing_StageLoad(void);71#if GAME_INCLUDE_EDITOR72void ERZKing_EditorDraw(void);73void ERZKing_EditorLoad(void);74#endif75void ERZKing_Serialize(void);7677// Extra Entity Functions78void ERZKing_CheckPlayerCollisions(void);79void ERZKing_Hit(void);80void ERZKing_HandleFrames(void);8182void ERZKing_Draw_Body(void);83void ERZKing_Draw_Arm(void);8485void ERZKing_State_SetupArena(void);86void ERZKing_State_SetupBody(void);87void ERZKing_State_EnterKing(void);88void ERZKing_State_FlyAround(void);89void ERZKing_State_ChangeHBH(void);90void ERZKing_State_Arm(void);91void ERZKing_State_Explode(void);9293#endif //! OBJ_ERZKING_H949596