Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/SPZ/Canista.h
338 views
1
#ifndef OBJ_CANISTA_H
2
#define OBJ_CANISTA_H
3
4
#include "Game.h"
5
6
typedef enum {
7
CANISTA_TRIGGER_STATIC,
8
CANISTA_TRIGGER_DETECT,
9
} CanistaTriggerModes;
10
11
// Object Class
12
struct ObjectCanista {
13
RSDK_OBJECT
14
Hitbox hitboxBadnik;
15
Hitbox hitboxRange;
16
Hitbox hitboxDetect;
17
Hitbox hitboxProjectile;
18
uint16 aniFrames;
19
uint16 sfxPon;
20
};
21
22
// Entity Class
23
struct EntityCanista {
24
RSDK_ENTITY
25
StateMachine(state);
26
uint8 triggerMode;
27
Vector2 detectOffset;
28
Vector2 detectSize;
29
int32 shootOffset;
30
int32 shootSize;
31
int32 stopTimer;
32
int32 detectDelay;
33
EntityPlayer *detectedPlayer;
34
Vector2 startPos;
35
uint8 startDir;
36
uint8 moveDir;
37
uint8 timer;
38
Hitbox hitboxDetect;
39
int32 unused1;
40
int32 unused2;
41
Animator mainAnimator;
42
Animator tapeAnimator;
43
Animator cannonAnimator;
44
};
45
46
// Object Struct
47
extern ObjectCanista *Canista;
48
49
// Standard Entity Events
50
void Canista_Update(void);
51
void Canista_LateUpdate(void);
52
void Canista_StaticUpdate(void);
53
void Canista_Draw(void);
54
void Canista_Create(void *data);
55
void Canista_StageLoad(void);
56
#if GAME_INCLUDE_EDITOR
57
void Canista_EditorDraw(void);
58
void Canista_EditorLoad(void);
59
#endif
60
void Canista_Serialize(void);
61
62
// Extra Entity Functions
63
void Canista_DebugSpawn(void);
64
void Canista_DebugDraw(void);
65
66
void Canista_CheckPlayerBadnikCollisions(void);
67
void Canista_CheckOffScreen(void);
68
69
void Canista_State_Init(void);
70
void Canista_State_Moving(void);
71
void Canista_State_Idle(void);
72
73
void Canista_CheckPlayerProjectileCollisions(void);
74
void Canista_StateProjectile_Shot(void);
75
void Canista_StateProjectile_Fall(void);
76
77
#endif //! OBJ_CANISTA_H
78
79