Path: blob/master/SonicMania/Objects/ERZ/PhantomKing.h
338 views
#ifndef OBJ_PHANTOMKING_H1#define OBJ_PHANTOMKING_H23#include "Game.h"45typedef enum {6PHANTOMKING_KING,7PHANTOMKING_ARM_L,8PHANTOMKING_ARM_R,9} PhantomKingTypes;1011// Object Class12struct ObjectPhantomKing {13RSDK_OBJECT14int32 boundsL;15int32 boundsR;16int32 boundsM;17int32 boundsT;18int32 boundsB;19uint16 sfxHit;20uint16 sfxExplosion;21uint16 aniFrames;22bool32 defeated;23};2425// Entity Class26struct EntityPhantomKing {27RSDK_ENTITY28StateMachine(state);29StateMachine(stateDraw);30Vector2 originPos;31int32 type;32int32 timer;33int32 invincibilityTimer;34int32 health;35int32 typeChangeTimer; // Leftover from ERZKing, never used but the draw code for it is still there36int32 bodyAngle;37int32 armAngles[10];38Vector2 armPositions[10];39Vector2 armBezierPos;40Vector2 rubyPos;41Vector2 unused;42bool32 drawRuby;43bool32 canLaunchAttacks;44EntityPhantomKing *parent;45int32 armRadius;46int32 armAngle;47int32 armAngleOffset;48Animator basicAnimator;49Animator headAnimator;50Animator bodyAnimator;51Animator beltAnimator;52Animator particleAnimator;53Animator rubyAnimator;54Animator unusedAnimator;55Animator armAnimator;56Animator cuffAnimator;57Animator handAnimator;58Hitbox hitbox;59uint8 storeDrawFX;60bool32 finishedMovingRuby;61};6263// Object Struct64extern ObjectPhantomKing *PhantomKing;6566// Standard Entity Events67void PhantomKing_Update(void);68void PhantomKing_LateUpdate(void);69void PhantomKing_StaticUpdate(void);70void PhantomKing_Draw(void);71void PhantomKing_Create(void *data);72void PhantomKing_StageLoad(void);73#if GAME_INCLUDE_EDITOR74void PhantomKing_EditorDraw(void);75void PhantomKing_EditorLoad(void);76#endif77void PhantomKing_Serialize(void);7879// Extra Entity Functions80void PhantomKing_CheckPlayerCollisions(void);81void PhantomKing_Oscillate(void);82void PhantomKing_Hit(void);83void PhantomKing_Explode(void);84void PhantomKing_HandleFrames(void);85void PhantomKing_HandleAttacks(void);86void PhantomKing_SwitchToEggman(void);87void PhantomKing_SetupKing(EntityPhantomKing *king);8889void PhantomKing_Draw_Body(void);90void PhantomKing_Draw_Arm(void);9192void PhantomKing_State_Initialize(void);93void PhantomKing_State_SetupArms(void);94void PhantomKing_State_EnterKing(void);95void PhantomKing_State_InitialHover(void);96void PhantomKing_State_TakeRubyAway(void);97void PhantomKing_State_RubyHoldHover(void);98void PhantomKing_State_WrestleEggman(void);99void PhantomKing_State_FlyAround(void);100void PhantomKing_State_Switch(void);101void PhantomKing_State_HitFall(void);102103void PhantomKing_StateArm_Idle(void);104void PhantomKing_StateArm_WrestleEggman(void);105void PhantomKing_HandleArmMovement(void);106void PhantomKing_StateArm_PullBack(void);107void PhantomKing_StateArm_Point(void);108109void PhantomKing_DestroyEntity(void);110111void PhantomKing_State_Explode(void);112void PhantomKing_State_Destroyed(void);113114#endif //! OBJ_PHANTOMKING_H115116117