Mario Kart 64
Loading...
Searching...
No Matches
Thwomp.h
Go to the documentation of this file.
1#pragma once
2
3#include <libultraship.h>
4#include <vector>
5#include "engine/World.h"
7#include "engine/CoreMath.h"
8
10
11class World;
13
14extern "C" {
15#include "macros.h"
16#include "main.h"
17#include "vehicles.h"
18#include "waypoints.h"
19#include "common_structs.h"
20#include "objects.h"
21#include "camera.h"
22#include "some_data.h"
23}
24
27
38class OThwomp : public OObject {
39public:
40 enum States : uint16_t {
44 MOVE_FAR, // Requires enough space to work
46 SLIDE, // Moves sideways left / right
47 JAILED // Has no collision
48 };
49
50 // This is simply a helper function to keep Spawning code clean
51 static inline OThwomp* Spawn(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 primAlpha, u16 boundingBoxSize = 7) {
52 IRotator rot;
53 rot.Set(0, direction, 0);
54
55 SpawnParams params = {
56 .Name = "mk:thwomp",
57 .Behaviour = behaviour,
58 .Location = FVector(x, 0, z),
59 .Rotation = rot,
60 .Scale = FVector(0, scale, 0),
61 .PrimAlpha = primAlpha,
62 .BoundingBoxSize = boundingBoxSize
63 };
64 return static_cast<OThwomp*>(gWorldInstance.AddObject(new OThwomp(params)));
65 }
66
67 explicit OThwomp(const SpawnParams& params);
68
70 _count--;
71 }
72
73 static size_t GetCount() {
74 return _count;
75 }
76
77 virtual void SetSpawnParams(SpawnParams& params) override;
78 virtual void Tick60fps() override;
79 virtual void Draw(s32 cameraId) override;
80 virtual void DrawEditorProperties() override;
81 void SetVisibility(s32 objectIndex);
82 void func_80080B28(s32 objectIndex, s32 playerId);
83 void DrawModel(s32);
85 void ThwompLights(s32 objectIndex);
86 void func_80080DE4(s32 arg0);
87 s32 func_8007F75C(s32 playerId);
88 void func_8007F8D8();
89 void SetPlayerCrushedEffect(s32 objectIndex, Player* player);
90 void func_80080A4C(s32 objectIndex, s32 cameraPlayerId);
91 void func_8007542C(s32 arg0);
92 void func_80074FD8(s32 objectIndex);
93 void AddParticles(s32 arg0);
94
95 s32 func_8007E50C(s32 objectIndex, Player* player, Camera* camera);
96 s32 func_8007E59C(s32 objectIndex);
97
98 void func_8007F544(s32 objectIndex);
99 void func_8007EFBC(s32 objectIndex);
100 void func_8007F280(s32 objectIndex);
101
102 void func_8007F660(s32 objectIndex, s32 arg1, s32 arg2);
103 void func_80080E8C(s32 objectIndex1, s32 objectIndex2, s32 arg2);
104 void func_8007F6C4(s32 objectIndex, s32 playerId);
105
106 void func_800810F4(s32 objectIndex);
107 void func_80081080(s32 objectIndex);
108
109 void StationaryBehaviour(s32 objectIndex);
110 void func_8007EC30(s32 objectIndex);
111
112 void MoveAndRotateBehaviour(s32 objectIndex);
113 void func_8007EE5C(s32 objectIndex);
114
115 void MoveFarBehaviour(s32 objectIndex);
116 void func_8007FA08(s32 objectIndex);
117 void func_8007FF5C(s32 objectIndex);
118 void func_8007FB48(s32 objectIndex);
119 void func_8007FEA4(s32 objectIndex);
120
121 void StationaryFastBehaviour(s32 objectIndex);
122 void func_80080078(s32 objectIndex);
123
124 void JailedBehaviour(s32 objectIndex);
125 void func_800802C0(s32 objectIndex);
126
127 void SlidingBehaviour(s32 objectIndex);
128 void func_80080524(s32 objectIndex);
129 void func_8008085C(s32 objectIndex);
130 void func_800806BC(s32 objectIndex);
131 void func_8008078C(s32 objectIndex);
132
133 void func_8007E63C(s32 objectIndex);
134
137 int16_t PrimAlpha;
138private:
139 static size_t _count;
140 static size_t _rand;
141 s32 _idx;
144 // We should probably return to the programmer the pointer to the actor so they can do thwomp->squishSize = value.
145};
World gWorldInstance
Definition Game.cpp:74
World gWorldInstance
Definition Game.cpp:74
OObject()
Definition Object.cpp:13
void func_8007EE5C(s32 objectIndex)
Definition Thwomp.cpp:904
void func_80080E8C(s32 objectIndex1, s32 objectIndex2, s32 arg2)
void func_8007FB48(s32 objectIndex)
Definition Thwomp.cpp:995
void func_80080078(s32 objectIndex)
Definition Thwomp.cpp:1123
void SetVisibility(s32 objectIndex)
Definition Thwomp.cpp:347
void func_8007F8D8()
Definition Thwomp.cpp:368
virtual void DrawEditorProperties() override
Definition Thwomp.cpp:1480
static size_t GetCount()
Definition Thwomp.h:73
static OThwomp * Spawn(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 primAlpha, u16 boundingBoxSize=7)
Definition Thwomp.h:51
void StationaryFastBehaviour(s32 objectIndex)
Definition Thwomp.cpp:1096
s32 _idx
Definition Thwomp.h:141
s32 func_8007E59C(s32 objectIndex)
Definition Thwomp.cpp:438
static size_t _rand
Definition Thwomp.h:140
void func_8008078C(s32 objectIndex)
Definition Thwomp.cpp:1282
void func_8007EC30(s32 objectIndex)
Definition Thwomp.cpp:856
void func_800802C0(s32 objectIndex)
Definition Thwomp.cpp:1192
void func_80080DE4(s32 arg0)
Definition Thwomp.cpp:812
void func_80081080(s32 objectIndex)
Definition Thwomp.cpp:215
virtual void Draw(s32 cameraId) override
Definition Thwomp.cpp:698
void JailedBehaviour(s32 objectIndex)
Definition Thwomp.cpp:1161
virtual void SetSpawnParams(SpawnParams &params) override
Definition Thwomp.cpp:88
void func_8007EFBC(s32 objectIndex)
Definition Thwomp.cpp:467
void func_8007FA08(s32 objectIndex)
Definition Thwomp.cpp:957
void func_8007F660(s32 objectIndex, s32 arg1, s32 arg2)
Definition Thwomp.cpp:619
OThwomp(const SpawnParams &params)
Definition Thwomp.cpp:55
void SetPlayerCrushedEffect(s32 objectIndex, Player *player)
Definition Thwomp.cpp:271
void func_80080A4C(s32 objectIndex, s32 cameraPlayerId)
Definition Thwomp.cpp:277
void func_800806BC(s32 objectIndex)
Definition Thwomp.cpp:1261
s16 _faceDirection
Definition Thwomp.h:142
void AddParticles(s32 arg0)
Definition Thwomp.cpp:232
void TranslateThwompLights()
Definition Thwomp.cpp:777
void func_8007F544(s32 objectIndex)
Definition Thwomp.cpp:456
s32 func_8007F75C(s32 playerId)
Definition Thwomp.cpp:398
void func_80080B28(s32 objectIndex, s32 playerId)
Definition Thwomp.cpp:641
void func_80074FD8(s32 objectIndex)
Definition Thwomp.cpp:325
int16_t PrimAlpha
Definition Thwomp.h:137
void func_8007F6C4(s32 objectIndex, s32 playerId)
Definition Thwomp.cpp:630
void func_8007F280(s32 objectIndex)
Definition Thwomp.cpp:543
void MoveFarBehaviour(s32 objectIndex)
Definition Thwomp.cpp:935
void func_8007FF5C(s32 objectIndex)
Definition Thwomp.cpp:984
void func_80080524(s32 objectIndex)
Definition Thwomp.cpp:1304
States
Definition Thwomp.h:40
@ JAILED
Definition Thwomp.h:47
@ MOVE_FAR
Definition Thwomp.h:44
@ SLIDE
Definition Thwomp.h:46
@ DISABLED
Definition Thwomp.h:41
@ STATIONARY_FAST
Definition Thwomp.h:45
@ MOVE_AND_ROTATE
Definition Thwomp.h:43
@ STATIONARY
Definition Thwomp.h:42
void SlidingBehaviour(s32 objectIndex)
Definition Thwomp.cpp:1222
s32 func_8007E50C(s32 objectIndex, Player *player, Camera *camera)
Definition Thwomp.cpp:424
void func_8007FEA4(s32 objectIndex)
Definition Thwomp.cpp:1073
OThwomp::States Behaviour
Definition Thwomp.h:136
void func_8007542C(s32 arg0)
Definition Thwomp.cpp:291
~OThwomp()
Definition Thwomp.h:69
void MoveAndRotateBehaviour(s32 objectIndex)
Definition Thwomp.cpp:881
void StationaryBehaviour(s32 objectIndex)
Definition Thwomp.cpp:827
void func_8007E63C(s32 objectIndex)
Definition Thwomp.cpp:1340
virtual void Tick60fps() override
Definition Thwomp.cpp:105
void func_800810F4(s32 objectIndex)
Definition Thwomp.cpp:193
void ThwompLights(s32 objectIndex)
Definition Thwomp.cpp:784
static size_t _count
Definition Thwomp.h:139
u16 BoundingBoxSize
Definition Thwomp.h:135
void DrawModel(s32)
Definition Thwomp.cpp:761
void func_8008085C(s32 objectIndex)
Definition Thwomp.cpp:1249
Definition World.h:39
Definition camera.h:35
Definition CoreMath.h:30
Definition CoreMath.h:137
Definition common_structs.h:264
Definition SpawnParams.h:30