Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/HCZ/LaundroMobile.h
338 views
1
#ifndef OBJ_LAUNDROMOBILE_H
2
#define OBJ_LAUNDROMOBILE_H
3
4
#include "Game.h"
5
6
typedef enum {
7
LAUNDROMOBILE_BOSS,
8
LAUNDROMOBILE_BOMB,
9
LAUNDROMOBILE_LAUNDRY,
10
LAUNDROMOBILE_LOOPPOINT,
11
LAUNDROMOBILE_BLOCK,
12
LAUNDROMOBILE_SPIKES,
13
LAUNDROMOBILE_DELAYEDSPLASH,
14
} LaundroMobileTypes;
15
16
// Object Class
17
struct ObjectLaundroMobile {
18
RSDK_OBJECT
19
uint8 health;
20
uint8 invincibilityTimer;
21
int32 currentVelocity;
22
Entity *loopPoints[6];
23
uint8 nextLoopPoint;
24
uint8 playingLoopSfx;
25
uint8 loopSfxTimer;
26
uint8 attackDir;
27
int8 attackCount;
28
TABLE(int32 attackCounts[8], { 1, 2, 2, 2, 1, 2, 2, 3 });
29
uint8 isUnderwater;
30
int32 animSpeed;
31
uint8 rocketActive;
32
int32 rocketAngles[4];
33
Vector2 rocketPositions[4];
34
uint8 unused[4]; // no clue, never even touched
35
int32 rocketSpeeds[2];
36
int32 playerRadius[PLAYER_COUNT];
37
int32 playerAngles[PLAYER_COUNT];
38
uint8 travelledPaths;
39
uint8 useStageWrap;
40
EntityLaundroMobile *laundroMobile;
41
TABLE(int32 debrisInfo[73], { 12, 6, 0, -0x50000, -0x40000, 0, 0, 7, 0, 0x50000, -0x40000, 0, 0, 10, 0,
42
-0x50000, -0x40000, 0, 0, 11, 0, 0x50000, -0x40000, 0, 0, 10, 0, -0x50000, -0x40000, 0,
43
0x200000, 11, 0, 0x50000, -0x40000, 0, 0x200000, 10, 0, -0x50000, -0x40000, 0, 0x400000, 11, 0,
44
0x50000, -0x40000, 0, 0x400000, 8, 0, -0x50000, -0x40000, 0, 0x400000, 9, 0, 0x50000, -0x40000, 0,
45
0x400000, 12, 0, -0x50000, -0x40000, 0, 0x400000, 13, 0, 0x50000, -0x40000, 0, 0x400000 });
46
uint16 aniFrames;
47
uint16 eggmanFrames;
48
Hitbox hitboxBoss;
49
Hitbox hitboxMissile;
50
Hitbox hitboxBox;
51
Hitbox hitboxBomb;
52
Hitbox innerBox;
53
Hitbox outerBox;
54
uint16 sfxHit;
55
uint16 sfxExplosion;
56
uint16 sfxButton2;
57
uint16 sfxFan;
58
uint16 sfxRoll;
59
uint16 sfxWash;
60
uint16 sfxHullClose;
61
uint16 sfxPush;
62
uint16 sfxFireball;
63
uint16 sfxButton;
64
uint16 sfxLedgeBreak;
65
uint16 sfxPimPom;
66
#if MANIA_USE_PLUS
67
uint16 sfxRumble;
68
uint16 sfxImpact;
69
#endif
70
};
71
72
// Entity Class
73
struct EntityLaundroMobile {
74
RSDK_ENTITY
75
uint8 type;
76
StateMachine(state);
77
StateMachine(stateDraw);
78
int32 timer;
79
int32 startY;
80
Vector2 originPos;
81
Vector2 unusedPos; // updated in the level wrap, but never used aside from that
82
EntityWhirlpool *whirlpool;
83
Animator mainAnimator;
84
Animator propellerAnimator;
85
Animator eggmanAnimator;
86
Animator flameAnimator;
87
};
88
89
// Object Struct
90
extern ObjectLaundroMobile *LaundroMobile;
91
92
// Standard Entity Events
93
void LaundroMobile_Update(void);
94
void LaundroMobile_LateUpdate(void);
95
void LaundroMobile_StaticUpdate(void);
96
void LaundroMobile_Draw(void);
97
void LaundroMobile_Create(void *data);
98
void LaundroMobile_StageLoad(void);
99
#if GAME_INCLUDE_EDITOR
100
void LaundroMobile_EditorDraw(void);
101
void LaundroMobile_EditorLoad(void);
102
#endif
103
void LaundroMobile_Serialize(void);
104
105
// Extra Entity Functions
106
void LaundroMobile_CheckPlayerCollisions(void);
107
void LaundroMobile_Explode(void);
108
void LaundroMobile_HandleStageWrap(void);
109
void LaundroMobile_HandleRocketMovement(void);
110
void LaundroMobile_HandleEggmanAnimations(void);
111
void LaundroMobile_HandleTileCollisions(void);
112
113
// Phase 1
114
void LaundroMobile_StateBoss_AwaitPlayer_Phase1(void);
115
void LaundroMobile_StateBoss_SetupArena_Phase1(void);
116
void LaundroMobile_StateBoss_EnterEggman_Phase1(void);
117
void LaundroMobile_StateBoss_StartupPropellers(void);
118
void LaundroMobile_StateBoss_HandlePhase1(void);
119
void LaundroMobile_StateBoss_Destroyed_Phase1(void);
120
void LaundroMobile_StateBoss_Explode_Phase1(void);
121
void LaundroMobile_StateBoss_WaitForLastStageWrap(void);
122
123
// Phase 2
124
void LaundroMobile_StateBoss_AwaitPlayer_Phase2(void);
125
void LaundroMobile_StateBoss_SetupArena_Phase2(void);
126
void LaundroMobile_StateBoss_EnterEggman_Phase2(void);
127
void LaundroMobile_StateBoss_StartupRockets(void);
128
void LaundroMobile_StateBoss_SpeedUpRockets(void);
129
void LaundroMobile_StateBoss_RiseUpToAttack(void);
130
void LaundroMobile_StateBoss_Attacking(void);
131
void LaundroMobile_StateBoss_ReturnToLaundry(void);
132
void LaundroMobile_StateBoss_PrepareWhirlpool(void);
133
void LaundroMobile_StateBoss_StartupWhirlpool(void);
134
void LaundroMobile_StateBoss_WhirlpoolActive(void);
135
void LaundroMobile_StateBoss_PrepareRockets(void);
136
void LaundroMobile_StateBoss_Destroyed_Phase2(void);
137
void LaundroMobile_StateBoss_Explode_Phase2(void);
138
139
#if MANIA_USE_PLUS
140
void LaundroMobile_StageFinish_Wait(void);
141
142
// HCZ2 Outro
143
void LaundroMobile_StateOutro_StartCutscene(void);
144
void LaundroMobile_StateOutro_Rumble(void);
145
void LaundroMobile_StateOutro_WaterGush(void);
146
void LaundroMobile_StateOutro_ExitHCZ(void);
147
#endif
148
149
void LaundroMobile_Draw_Boss(void);
150
void LaundroMobile_Draw_Boss_Destroyed(void);
151
152
void LaundroMobile_StateBomb_Spawner(void);
153
void LaundroMobile_StateBomb_Bomb_Idle(void);
154
void LaundroMobile_StateBomb_Bomb_Activated(void);
155
156
void LaundroMobile_Draw_Simple(void);
157
158
void LaundroMobile_StateBlock_Spawner(void);
159
void LaundroMobile_StateBlock_Block(void);
160
161
void LaundroMobile_State_Laundry(void);
162
void LaundroMobile_Draw_Laundry(void);
163
164
void LaundroMobile_State_DelayedSplash(void);
165
166
#endif //! OBJ_LAUNDROMOBILE_H
167
168