Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/MMZ/MechaBu.h
338 views
1
#ifndef OBJ_MECHABU_H
2
#define OBJ_MECHABU_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectMechaBu {
8
RSDK_OBJECT
9
TABLE(int32 sawOffsets[10], { -0x150000, -0xF0000, -0x170000, -0xE0000, -0x190000, -0xA0000, -0x1A0000, -0x50000, -0x1A0000, -0x40000 });
10
Hitbox hitboxSaw;
11
Hitbox hitboxUnused;
12
uint16 aniFrames;
13
uint16 sfxSawUp;
14
uint16 sfxSawDown;
15
};
16
17
// Entity Class
18
struct EntityMechaBu {
19
RSDK_ENTITY
20
StateMachine(state);
21
PlaneFilterTypes planeFilter;
22
uint8 timer;
23
uint8 sawTimer;
24
Vector2 startPos;
25
uint8 startDir;
26
Vector2 sawPos;
27
Animator badnikAnimator;
28
Animator hornAnimator;
29
Animator sawAnimator;
30
};
31
32
// Object Struct
33
extern ObjectMechaBu *MechaBu;
34
35
// Standard Entity Events
36
void MechaBu_Update(void);
37
void MechaBu_LateUpdate(void);
38
void MechaBu_StaticUpdate(void);
39
void MechaBu_Draw(void);
40
void MechaBu_Create(void *data);
41
void MechaBu_StageLoad(void);
42
#if GAME_INCLUDE_EDITOR
43
void MechaBu_EditorDraw(void);
44
void MechaBu_EditorLoad(void);
45
#endif
46
void MechaBu_Serialize(void);
47
48
// Extra Entity Functions
49
void MechaBu_DebugSpawn(void);
50
void MechaBu_DebugDraw(void);
51
52
void MechaBu_CheckPlayerCollisions(void);
53
void MechaBu_CheckOffScreen(void);
54
Vector2 MechaBu_GetSawOffset(void);
55
56
void MechaBu_State_Init(void);
57
void MechaBu_State_Moving(void);
58
void MechaBu_State_Stopped(void);
59
void MechaBu_State_Falling(void);
60
61
#endif //! OBJ_MECHABU_H
62
63