Path: blob/master/SonicMania/Objects/LRZ/HeavyKing.h
338 views
#ifndef OBJ_HEAVYKING_H1#define OBJ_HEAVYKING_H23#include "Game.h"45// Object Class6struct ObjectHeavyKing {7RSDK_OBJECT8TABLE(int32 attackPattern[32], { 0, 0, 1, 0, 2, 2, 1, 0, 0, 1, 1, 2, 0, 2, 0, 0, 2, 1, 1, 2, 1, 0, 1, 0, 2, 2, 0, 1, 0, 0, 2, 1 });9int32 attackPatternPos;10Hitbox hitboxBody;11Hitbox hitboxBoss;12Hitbox hitboxCharging;13int32 boundsL;14int32 boundsM;15int32 boundsR;16int32 spinRaySpawnPos;17int32 startY;18uint16 sfxHit;19uint16 sfxImpact2;20uint16 sfxImpact5;21uint16 sfxCharge;22uint16 sfxExplosion;23uint16 sfxFreeze;24uint16 sfxRodPlant;25uint16 sfxRodShine;26uint16 sfxElecOn;27uint16 sfxTwinCharge;28uint16 sfxImpact6;29uint16 aniFrames;30uint16 cutsceneFrames;31};3233// Entity Class34struct EntityHeavyKing {35RSDK_ENTITY36StateMachine(state);37StateMachine(stateStore);38int32 timer;39int32 invincibilityTimer;40int32 health;41int32 curAttack;42int32 attacksRemaining;43Vector2 originPos;44EntityKingClaw *claw;45EntityHPZEmerald *masterEmerald;46EntityHPZEmerald *targetEmerald;47Animator bodyAnimator;48Animator scepterAnimator;49Animator electricityAnimator;50Animator storedBodyAnimator;51Animator storedScepterAnimator;52};5354// Object Struct55extern ObjectHeavyKing *HeavyKing;5657// Standard Entity Events58void HeavyKing_Update(void);59void HeavyKing_LateUpdate(void);60void HeavyKing_StaticUpdate(void);61void HeavyKing_Draw(void);62void HeavyKing_Create(void *data);63void HeavyKing_StageLoad(void);64#if GAME_INCLUDE_EDITOR65void HeavyKing_EditorDraw(void);66void HeavyKing_EditorLoad(void);67#endif68void HeavyKing_Serialize(void);6970// Extra Entity Functions71void HeavyKing_CheckPlayerCollisions(void);72void HeavyKing_CheckPlayerCollisions_Charging(void);73void HeavyKing_Hit(void);74void HeavyKing_HandleClawMovement(void);75void HeavyKing_HandleAnimators(void);76void HeavyKing_HandleHoverMovement(void);77void HeavyKing_FindTargetEmerald(void);7879void HeavyKing_StartLeap(int32 startFrame);80void HeavyKing_HandleAttackFinish(void);81void HeavyKing_CreateSpinRayFX(void);82void HeavyKing_CreateExpandRingFX(void);83void HeavyKing_CreateLaser(void);84void HeavyKing_CreateExpandRing(void);8586// Cutscene States87void HeavyKing_State_SetupArena(void);88void HeavyKing_State_HandleCutsceneSetup(void);89void HeavyKing_StateCutscene_PlayerLookUp(void);90void HeavyKing_StateCutscene_EnterKing(void);91void HeavyKing_StateCutscene_ReturnCamToPlayer(void);92void HeavyKing_StateCutscene_GrabMasterEmerald(void);93void HeavyKing_StateCutscene_FinishThinking(void);94void HeavyKing_StateCutscene_GetHigherGround(void);95void HeavyKing_StateCutscene_Complaining(void);96void HeavyKing_StateCutscene_ChargeSpindash(void);97void HeavyKing_StateCutscene_AttackClaw(void);98void HeavyKing_StateCutscene_AttackRebound(void);99100// Boss States101void HeavyKing_State_JumpToTargetEmerald(void);102void HeavyKing_State_Leaping(void);103void HeavyKing_State_LeapToMasterEmerald(void);104void HeavyKing_State_LandedOnMasterEmerald(void);105void HeavyKing_State_ChargeStart(void);106void HeavyKing_State_Charging(void);107void HeavyKing_State_ChargeStop(void);108void HeavyKing_State_PrepareHover(void);109void HeavyKing_State_StartHovering(void);110void HeavyKing_State_Hovering(void);111void HeavyKing_State_LaserAttack(void);112void HeavyKing_State_ExpandRingAttack(void);113void HeavyKing_State_TwinChargeAttack(void);114void HeavyKing_State_HitRecoil(void);115void HeavyKing_State_Destroyed(void);116void HeavyKing_State_Escape(void);117void HeavyKing_State_Finish(void);118119#endif //! OBJ_HEAVYKING_H120121122