Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/LRZ/HeavyKing.h
338 views
1
#ifndef OBJ_HEAVYKING_H
2
#define OBJ_HEAVYKING_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectHeavyKing {
8
RSDK_OBJECT
9
TABLE(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 });
10
int32 attackPatternPos;
11
Hitbox hitboxBody;
12
Hitbox hitboxBoss;
13
Hitbox hitboxCharging;
14
int32 boundsL;
15
int32 boundsM;
16
int32 boundsR;
17
int32 spinRaySpawnPos;
18
int32 startY;
19
uint16 sfxHit;
20
uint16 sfxImpact2;
21
uint16 sfxImpact5;
22
uint16 sfxCharge;
23
uint16 sfxExplosion;
24
uint16 sfxFreeze;
25
uint16 sfxRodPlant;
26
uint16 sfxRodShine;
27
uint16 sfxElecOn;
28
uint16 sfxTwinCharge;
29
uint16 sfxImpact6;
30
uint16 aniFrames;
31
uint16 cutsceneFrames;
32
};
33
34
// Entity Class
35
struct EntityHeavyKing {
36
RSDK_ENTITY
37
StateMachine(state);
38
StateMachine(stateStore);
39
int32 timer;
40
int32 invincibilityTimer;
41
int32 health;
42
int32 curAttack;
43
int32 attacksRemaining;
44
Vector2 originPos;
45
EntityKingClaw *claw;
46
EntityHPZEmerald *masterEmerald;
47
EntityHPZEmerald *targetEmerald;
48
Animator bodyAnimator;
49
Animator scepterAnimator;
50
Animator electricityAnimator;
51
Animator storedBodyAnimator;
52
Animator storedScepterAnimator;
53
};
54
55
// Object Struct
56
extern ObjectHeavyKing *HeavyKing;
57
58
// Standard Entity Events
59
void HeavyKing_Update(void);
60
void HeavyKing_LateUpdate(void);
61
void HeavyKing_StaticUpdate(void);
62
void HeavyKing_Draw(void);
63
void HeavyKing_Create(void *data);
64
void HeavyKing_StageLoad(void);
65
#if GAME_INCLUDE_EDITOR
66
void HeavyKing_EditorDraw(void);
67
void HeavyKing_EditorLoad(void);
68
#endif
69
void HeavyKing_Serialize(void);
70
71
// Extra Entity Functions
72
void HeavyKing_CheckPlayerCollisions(void);
73
void HeavyKing_CheckPlayerCollisions_Charging(void);
74
void HeavyKing_Hit(void);
75
void HeavyKing_HandleClawMovement(void);
76
void HeavyKing_HandleAnimators(void);
77
void HeavyKing_HandleHoverMovement(void);
78
void HeavyKing_FindTargetEmerald(void);
79
80
void HeavyKing_StartLeap(int32 startFrame);
81
void HeavyKing_HandleAttackFinish(void);
82
void HeavyKing_CreateSpinRayFX(void);
83
void HeavyKing_CreateExpandRingFX(void);
84
void HeavyKing_CreateLaser(void);
85
void HeavyKing_CreateExpandRing(void);
86
87
// Cutscene States
88
void HeavyKing_State_SetupArena(void);
89
void HeavyKing_State_HandleCutsceneSetup(void);
90
void HeavyKing_StateCutscene_PlayerLookUp(void);
91
void HeavyKing_StateCutscene_EnterKing(void);
92
void HeavyKing_StateCutscene_ReturnCamToPlayer(void);
93
void HeavyKing_StateCutscene_GrabMasterEmerald(void);
94
void HeavyKing_StateCutscene_FinishThinking(void);
95
void HeavyKing_StateCutscene_GetHigherGround(void);
96
void HeavyKing_StateCutscene_Complaining(void);
97
void HeavyKing_StateCutscene_ChargeSpindash(void);
98
void HeavyKing_StateCutscene_AttackClaw(void);
99
void HeavyKing_StateCutscene_AttackRebound(void);
100
101
// Boss States
102
void HeavyKing_State_JumpToTargetEmerald(void);
103
void HeavyKing_State_Leaping(void);
104
void HeavyKing_State_LeapToMasterEmerald(void);
105
void HeavyKing_State_LandedOnMasterEmerald(void);
106
void HeavyKing_State_ChargeStart(void);
107
void HeavyKing_State_Charging(void);
108
void HeavyKing_State_ChargeStop(void);
109
void HeavyKing_State_PrepareHover(void);
110
void HeavyKing_State_StartHovering(void);
111
void HeavyKing_State_Hovering(void);
112
void HeavyKing_State_LaserAttack(void);
113
void HeavyKing_State_ExpandRingAttack(void);
114
void HeavyKing_State_TwinChargeAttack(void);
115
void HeavyKing_State_HitRecoil(void);
116
void HeavyKing_State_Destroyed(void);
117
void HeavyKing_State_Escape(void);
118
void HeavyKing_State_Finish(void);
119
120
#endif //! OBJ_HEAVYKING_H
121
122