SpaghettiKart
Loading...
Searching...
No Matches
Thwomp.h
Go to the documentation of this file.
1#pragma once
2
3#include <libultraship.h>
5#include "engine/World.h"
7#include "engine/CoreMath.h"
8
10
11extern "C" {
12#include "common_structs.h"
13#include "camera.h"
14}
15
18
29class OThwomp : public OObject {
30public:
31 enum States : uint16_t {
35 MOVE_FAR, // Requires enough space to work
37 SLIDE, // Moves sideways left / right
38 JAILED // Has no collision
39 };
40
41 // This is simply a helper function to keep Spawning code clean
42 static OThwomp* Spawn(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 primAlpha, u16 boundingBoxSize = 7) {
43 IRotator rot;
44 rot.Set(0, direction, 0);
45
46 SpawnParams params = {
47 .Name = "mk:thwomp",
48 .Behaviour = behaviour,
49 .Location = FVector(x, 0, z),
50 .Rotation = rot,
51 .Scale = FVector(0, scale, 0),
52 .PrimAlpha = primAlpha,
53 .BoundingBoxSize = boundingBoxSize
54 };
55 return dynamic_cast<OThwomp*>(AddObjectToWorld<OThwomp>(params));
56 }
57
58 explicit OThwomp(const SpawnParams& params);
59
61 _count--;
62 }
63
64 static size_t GetCount() {
65 return _count;
66 }
67
68 virtual void SetSpawnParams(SpawnParams& params) override;
69 virtual void Tick60fps() override;
70 virtual void Draw(s32 cameraId) override;
71 virtual void DrawEditorProperties() override;
72 void SetVisibility(s32 objectIndex);
73 void func_80080B28(s32 objectIndex, s32 playerId);
74 void DrawModel(s32, s32);
76 void ThwompLights(s32 objectIndex);
77 void func_80080DE4(s32 arg0);
78 s32 func_8007F75C(s32 playerId);
79 void func_8007F8D8();
80 void SetPlayerCrushedEffect(s32 objectIndex, Player* player);
81 void func_80080A4C(s32 objectIndex, s32 cameraPlayerId);
82 void func_8007542C(s32 arg0);
83 void func_80074FD8(s32 objectIndex);
84 void AddParticles(s32 arg0);
85
86 s32 func_8007E50C(s32 objectIndex, Player* player, Camera* camera);
87 s32 func_8007E59C(s32 objectIndex);
88
89 void func_8007F544(s32 objectIndex);
90 void func_8007EFBC(s32 objectIndex);
91 void func_8007F280(s32 objectIndex);
92
93 void func_8007F660(s32 objectIndex, s32 arg1, s32 arg2);
94 void func_80080E8C(s32 objectIndex1, s32 objectIndex2, s32 arg2);
95 void func_8007F6C4(s32 objectIndex, s32 playerId);
96
97 void func_800810F4(s32 objectIndex);
98 void func_80081080(s32 objectIndex);
99
100 void StationaryBehaviour(s32 objectIndex);
101 void func_8007EC30(s32 objectIndex);
102
103 void MoveAndRotateBehaviour(s32 objectIndex);
104 void func_8007EE5C(s32 objectIndex);
105
106 void MoveFarBehaviour(s32 objectIndex);
107 void func_8007FA08(s32 objectIndex);
108 void func_8007FF5C(s32 objectIndex);
109 void func_8007FB48(s32 objectIndex);
110 void func_8007FEA4(s32 objectIndex);
111
112 void StationaryFastBehaviour(s32 objectIndex);
113 void func_80080078(s32 objectIndex);
114
115 void JailedBehaviour(s32 objectIndex);
116 void func_800802C0(s32 objectIndex);
117
118 void SlidingBehaviour(s32 objectIndex);
119 void func_80080524(s32 objectIndex);
120 void func_8008085C(s32 objectIndex);
121 void func_800806BC(s32 objectIndex);
122 void func_8008078C(s32 objectIndex);
123
124 void func_8007E63C(s32 objectIndex);
125
128 int16_t PrimAlpha;
129private:
130 static size_t _count;
131 static size_t _rand;
132 s32 _idx;
135 // We should probably return to the programmer the pointer to the actor so they can do thwomp->squishSize = value.
136};
static OObject * AddObjectToWorld(const SpawnParams &params)
Definition RegisterContent.h:10
OObject()
Definition Object.cpp:13
void func_8007EE5C(s32 objectIndex)
Definition Thwomp.cpp:907
void func_80080E8C(s32 objectIndex1, s32 objectIndex2, s32 arg2)
void func_8007FB48(s32 objectIndex)
Definition Thwomp.cpp:998
void func_80080078(s32 objectIndex)
Definition Thwomp.cpp:1126
void SetVisibility(s32 objectIndex)
Definition Thwomp.cpp:348
void func_8007F8D8()
Definition Thwomp.cpp:369
virtual void DrawEditorProperties() override
Definition Thwomp.cpp:1483
static size_t GetCount()
Definition Thwomp.h:64
static OThwomp * Spawn(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 primAlpha, u16 boundingBoxSize=7)
Definition Thwomp.h:42
void StationaryFastBehaviour(s32 objectIndex)
Definition Thwomp.cpp:1099
s32 _idx
Definition Thwomp.h:132
void DrawModel(s32, s32)
Definition Thwomp.cpp:764
s32 func_8007E59C(s32 objectIndex)
Definition Thwomp.cpp:439
static size_t _rand
Definition Thwomp.h:131
void func_8008078C(s32 objectIndex)
Definition Thwomp.cpp:1285
void func_8007EC30(s32 objectIndex)
Definition Thwomp.cpp:859
void func_800802C0(s32 objectIndex)
Definition Thwomp.cpp:1195
void func_80080DE4(s32 arg0)
Definition Thwomp.cpp:815
void func_80081080(s32 objectIndex)
Definition Thwomp.cpp:216
virtual void Draw(s32 cameraId) override
Definition Thwomp.cpp:699
void JailedBehaviour(s32 objectIndex)
Definition Thwomp.cpp:1164
virtual void SetSpawnParams(SpawnParams &params) override
Definition Thwomp.cpp:88
void func_8007EFBC(s32 objectIndex)
Definition Thwomp.cpp:468
void func_8007FA08(s32 objectIndex)
Definition Thwomp.cpp:960
void func_8007F660(s32 objectIndex, s32 arg1, s32 arg2)
Definition Thwomp.cpp:620
OThwomp(const SpawnParams &params)
Definition Thwomp.cpp:55
void SetPlayerCrushedEffect(s32 objectIndex, Player *player)
Definition Thwomp.cpp:272
void func_80080A4C(s32 objectIndex, s32 cameraPlayerId)
Definition Thwomp.cpp:278
void func_800806BC(s32 objectIndex)
Definition Thwomp.cpp:1264
s16 _faceDirection
Definition Thwomp.h:133
void AddParticles(s32 arg0)
Definition Thwomp.cpp:233
void TranslateThwompLights()
Definition Thwomp.cpp:780
void func_8007F544(s32 objectIndex)
Definition Thwomp.cpp:457
s32 func_8007F75C(s32 playerId)
Definition Thwomp.cpp:399
void func_80080B28(s32 objectIndex, s32 playerId)
Definition Thwomp.cpp:642
void func_80074FD8(s32 objectIndex)
Definition Thwomp.cpp:326
int16_t PrimAlpha
Definition Thwomp.h:128
void func_8007F6C4(s32 objectIndex, s32 playerId)
Definition Thwomp.cpp:631
void func_8007F280(s32 objectIndex)
Definition Thwomp.cpp:544
void MoveFarBehaviour(s32 objectIndex)
Definition Thwomp.cpp:938
void func_8007FF5C(s32 objectIndex)
Definition Thwomp.cpp:987
void func_80080524(s32 objectIndex)
Definition Thwomp.cpp:1307
States
Definition Thwomp.h:31
@ JAILED
Definition Thwomp.h:38
@ MOVE_FAR
Definition Thwomp.h:35
@ SLIDE
Definition Thwomp.h:37
@ DISABLED
Definition Thwomp.h:32
@ STATIONARY_FAST
Definition Thwomp.h:36
@ MOVE_AND_ROTATE
Definition Thwomp.h:34
@ STATIONARY
Definition Thwomp.h:33
void SlidingBehaviour(s32 objectIndex)
Definition Thwomp.cpp:1225
s32 func_8007E50C(s32 objectIndex, Player *player, Camera *camera)
Definition Thwomp.cpp:425
void func_8007FEA4(s32 objectIndex)
Definition Thwomp.cpp:1076
OThwomp::States Behaviour
Definition Thwomp.h:127
void func_8007542C(s32 arg0)
Definition Thwomp.cpp:292
~OThwomp()
Definition Thwomp.h:60
void MoveAndRotateBehaviour(s32 objectIndex)
Definition Thwomp.cpp:884
void StationaryBehaviour(s32 objectIndex)
Definition Thwomp.cpp:830
void func_8007E63C(s32 objectIndex)
Definition Thwomp.cpp:1343
virtual void Tick60fps() override
Definition Thwomp.cpp:105
void func_800810F4(s32 objectIndex)
Definition Thwomp.cpp:194
void ThwompLights(s32 objectIndex)
Definition Thwomp.cpp:787
static size_t _count
Definition Thwomp.h:130
u16 BoundingBoxSize
Definition Thwomp.h:126
void func_8008085C(s32 objectIndex)
Definition Thwomp.cpp:1252
Definition camera.h:35
Definition CoreMath.h:30
Definition CoreMath.h:141
Definition common_structs.h:264
Definition SpawnParams.h:30