Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/ERZ/PKingAttack.h
338 views
1
#ifndef OBJ_PKINGATTACK_H
2
#define OBJ_PKINGATTACK_H
3
4
#include "Game.h"
5
6
typedef enum {
7
PKINGATTACK_LASER, // Leftover from LRZ/KingAttack, not used here
8
PKINGATTACK_ORBIT,
9
PKINGATTACK_LAUNCHED,
10
PKINGATTACK_TRAIL,
11
PKINGATTACK_LARGEBULLET, // Leftover from LRZ/KingAttack, not used here
12
PKINGATTACK_ENERGYLINE, // Leftover from LRZ/KingAttack, not used here
13
PKINGATTACK_SMALLBULLET, // Leftover from LRZ/KingAttack, not used here, though (new) code for it does exist
14
} PKingAttackTypes;
15
16
// Object Class
17
struct ObjectPKingAttack {
18
RSDK_OBJECT
19
// Not Used because he doesn't fire lasers... this object was prolly built off LRZ/KingAttack tbh
20
TABLE(int32 laserColors[8], { 0x000020, 0x000020, 0xE850D8, 0xE850D8, 0xE850D8, 0xE850D8, 0x000020, 0x000020 });
21
uint16 sfxPulse;
22
uint16 aniFrames;
23
};
24
25
// Entity Class
26
struct EntityPKingAttack {
27
RSDK_ENTITY
28
StateMachine(state);
29
int32 type;
30
int32 timer;
31
Entity *target;
32
Vector2 targetPos;
33
Vector2 targetVelocity;
34
Vector2 laserVertPostions[8]; // Leftover from LRZ/KingAttack, not used here
35
int32 *laserColors; // Leftover from LRZ/KingAttack, not used here
36
Hitbox hitbox;
37
Animator animator;
38
};
39
40
// Object Struct
41
extern ObjectPKingAttack *PKingAttack;
42
43
// Standard Entity Events
44
void PKingAttack_Update(void);
45
void PKingAttack_LateUpdate(void);
46
void PKingAttack_StaticUpdate(void);
47
void PKingAttack_Draw(void);
48
void PKingAttack_Create(void *data);
49
void PKingAttack_StageLoad(void);
50
#if GAME_INCLUDE_EDITOR
51
void PKingAttack_EditorDraw(void);
52
void PKingAttack_EditorLoad(void);
53
#endif
54
void PKingAttack_Serialize(void);
55
56
// Extra Entity Functions
57
void PKingAttack_CheckPlayerCollisions(void);
58
59
void PKingAttack_State_OrbitAppear(void);
60
void PKingAttack_State_Orbiting(void);
61
void PKingAttack_State_OrbitLaunched(void);
62
void PKingAttack_State_Trail(void);
63
void PKingAttack_State_SmallBullet(void);
64
65
#endif //! OBJ_PKINGATTACK_H
66
67