Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/MMZ/SizeLaser.h
338 views
1
#ifndef OBJ_SIZELASER_H
2
#define OBJ_SIZELASER_H
3
4
#include "Game.h"
5
6
typedef enum {
7
SIZELASER_SHRINK,
8
SIZELASER_GROW,
9
} SizeLaserTypes;
10
11
typedef enum {
12
SIZELASER_ORIENTATION_DOWN,
13
SIZELASER_ORIENTATION_RIGHT,
14
SIZELASER_ORIENTATION_LEFT,
15
} SizeLaserOrientations;
16
17
// Object Class
18
struct ObjectSizeLaser {
19
RSDK_OBJECT
20
Hitbox hitbox;
21
Hitbox playerOuterBox[PLAYER_COUNT];
22
Hitbox playerInnerBox[PLAYER_COUNT];
23
Vector2 playerPositions[PLAYER_COUNT];
24
uint16 aniFrames;
25
uint16 sonicFrames;
26
uint16 tailsFrames;
27
uint16 tailFrames;
28
uint16 knuxFrames;
29
#if MANIA_USE_PLUS
30
uint16 mightyFrames;
31
uint16 rayFrames;
32
#endif
33
uint16 sfxShrink2;
34
uint16 sfxGrow2;
35
};
36
37
// Entity Class
38
struct EntitySizeLaser {
39
RSDK_ENTITY
40
StateMachine(state);
41
uint8 type;
42
uint8 orientation;
43
int32 timer;
44
Vector2 impactPos;
45
int32 extend;
46
Animator mainAnimator;
47
Animator impactAnimator;
48
};
49
50
// Object Struct
51
extern ObjectSizeLaser *SizeLaser;
52
53
// Standard Entity Events
54
void SizeLaser_Update(void);
55
void SizeLaser_LateUpdate(void);
56
void SizeLaser_StaticUpdate(void);
57
void SizeLaser_Draw(void);
58
void SizeLaser_Create(void *data);
59
void SizeLaser_StageLoad(void);
60
#if GAME_INCLUDE_EDITOR
61
void SizeLaser_EditorDraw(void);
62
void SizeLaser_EditorLoad(void);
63
#endif
64
void SizeLaser_Serialize(void);
65
66
// Extra Entity Functions
67
bool32 SizeLaser_SfxCheck_SizeLaser(void);
68
69
void SizeLaser_SetPlayerSize(EntityPlayer *player, bool32 chibiFlag);
70
void SizeLaser_PlayerState_Resize(void);
71
void SizeLaser_PlayerState_GrowNormal(void);
72
void SizeLaser_PlayerState_ShrinkChibi(void);
73
void SizeLaser_PlayerState_GrowGiant(void);
74
75
void SizeLaser_CheckPlayerCollisions(void);
76
77
void SizeLaser_State_Emitter(void);
78
void SizeLaser_State_Laser(void);
79
void SizeLaser_State_Impact(void);
80
81
#endif //! OBJ_SIZELASER_H
82
83