SpaghettiKart
Loading...
Searching...
No Matches
Game.h
Go to the documentation of this file.
1#ifndef _GAME_H
2#define _GAME_H
3
4#include <libultraship.h>
6#include "engine/HM_Intro.h"
7#include "macros.h"
8
9#ifdef __cplusplus
13class Track;
14struct Properties;
15class World;
16
17template<class T, typename... TArgs> T* SpawnActor(TArgs&&... args) {
18 return T::Spawn(std::forward<TArgs>(args)...);
19}
20
21extern "C" {
22#endif
23#include "camera.h"
24#include "actor_types.h"
25#include "code_800029B0.h"
26
27extern s32 gTrophyIndex;
28
29#ifdef __cplusplus
30extern TrackEditor::Editor gEditor;
31extern HarbourMastersIntro gMenuIntro;
32extern bool bCleanWorld;
37World* GetWorld(void); // Retrieve the world instance
38void CM_RequestReset(void); // Queue a game reset; applied at the top of the next game frame
39#endif
40// NOLINTBEGIN(readability-identifier-naming)
41
42void Graphics_PushFrame(Gfx* pool);
43
44uintptr_t CM_GetTrack();
46
47void HM_InitIntro(void);
48void HM_TickIntro(void);
49void HM_DrawIntro(void);
50
51void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha);
52void CM_DrawBattleBombKarts(s32 cameraId);
53
54u32 WorldNextCup(void);
55
56u32 WorldPreviousCup(void);
57
58u32 GetCupIndex(void);
59
60const char* GetCupName(void);
61
62void LoadTrack();
63
64void CM_SetCup(void*);
65
66void CM_SetCupIndex(size_t index);
67
68void CM_DrawTrack(ScreenContext* arg0);
69
71void CM_ActivateFinishLakitu(s32 playerId);
72void CM_ActivateSecondLapLakitu(s32 playerId);
73void CM_ActivateFinalLapLakitu(s32 playerId);
74void CM_ActivateReverseLakitu(s32 playerId);
75
76void CM_DrawActors(Camera* camera);
78
79Camera* CM_GetPlayerCamera(s32 playerIndex);
80void CM_SetViewProjection(Camera* camera);
81void CM_TickCameras();
82Camera* CM_AddCamera(Vec3f spawn, s16 rot, u32 mode);
83Camera* CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode);
84Camera* CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode);
85bool CM_IsTourEnabled();
86Camera* CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode);
87void CM_AttachCamera(Camera* camera, s32 playerIdx);
88void CM_SetFreeCamera(bool state);
89void CM_CameraSetActive(size_t idx, bool state);
90void CM_ActivateTourCamera(Camera* camera);
91void CM_TickObjects();
93void CM_DrawObjects(s32 cameraId);
94
95void CM_TickEditor();
96void CM_DrawEditor();
100
101void CM_TickParticles(void);
102void CM_DrawParticles(s32 cameraId);
103
104void CM_RaceDrawSky(ScreenContext* screen, s32 someId);
105
106void CM_Waypoints(Player* player, int8_t playerId);
107
108void CM_SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6,
109 f32* arg7);
110
112
114
115void CM_DrawTrackObjects(s32 cameraId);
116
117void CM_SomeSounds();
118
120
121void CM_WhatDoesThisDo(Player* player, int8_t playerId);
122
123void CM_WhatDoesThisDoAI(Player* player, int8_t playerId);
124
125void CM_SetStaffGhost();
126
127void CM_BombKartsWaypoint(s32 cameraId);
128
129void CM_TickTrack();
130
131s32 CM_GetCrossingOnTriggered(uintptr_t* crossing);
132
133void CM_BeginPlay();
134
135void CM_DrawTransparency(ScreenContext* screen, uint16_t pathCounter, uint16_t cameraRot,
136 uint16_t playerDirection);
137
138void CM_AICrossingBehaviour(s32 playerId);
139
140void CM_ClearVehicles(void);
141
142void CM_CrossingTrigger();
143
144void CM_VehicleCollision(s32 playerId, Player* player);
145
146void CM_TickActors();
147
148void CM_TickActors60fps();
149
150void CM_DrawBombKarts(s32 cameraId);
151
152void SetMarioRaceway(void);
153
154size_t GetCupCursorPosition();
155
156void SetCupCursorPosition(size_t position);
157
158size_t GetCupSize();
159
160void* GetTrack(void);
161
162struct Actor* CM_GetActor(size_t index);
163void CM_DeleteActor(size_t index);
164struct Actor* CM_AddBaseActor();
165void CM_ActorBeginPlay(struct Actor* actor);
166void CM_ActorGenerateCollision(struct Actor* actor);
167void Editor_AddLight(s8* direction);
168size_t CM_GetActorSize();
169size_t CM_FindActorIndex(struct Actor* actor);
170void CM_ActorCollision(Player* player, struct Actor* actor);
171void CM_CleanCameras(void);
172void CM_CleanWorld(void);
173
174f32 CM_GetWaterLevel(Vec3f pos, struct Collision* collision);
175
176bool IsMarioRaceway();
177bool IsLuigiRaceway();
178bool IsChocoMountain();
179bool IsBowsersCastle();
180bool IsBansheeBoardwalk();
181bool IsYoshiValley();
182bool IsFrappeSnowland();
183bool IsKoopaTroopaBeach();
184bool IsRoyalRaceway();
185bool IsMooMooFarm();
186bool IsToadsTurnpike();
187bool IsKalimariDesert();
188bool IsSherbetLand();
189bool IsRainbowRoad();
190bool IsWarioStadium();
191bool IsBlockFort();
192bool IsSkyscraper();
193bool IsDoubleDeck();
194bool IsDkJungle();
195bool IsBigDonut();
196bool IsPodiumCeremony();
197
198void SelectMarioRaceway();
199void SelectLuigiRaceway();
203void SelectYoshiValley();
206void SelectRoyalRaceway();
207void SelectMooMooFarm();
210void SelectSherbetLand();
211void SelectRainbowRoad();
212void SelectWarioStadium();
213void SelectBlockFort();
214void SelectSkyscraper();
215void SelectDoubleDeck();
216void SelectDkJungle();
217void SelectBigDonut();
219
220void* GetMushroomCup(void);
221
222void* GetFlowerCup(void);
223
224void* GetStarCup(void);
225
226void* GetSpecialCup(void);
227
228void* GetBattleCup(void);
229
230void* GetCup();
231
232void CM_RunGarbageCollector(void);
233void CM_ResetAudio(void);
234
235NORETURN void CM_ThrowRuntimeError(const char* fmt, ...)
236#if defined(__GNUC__) || defined(__clang__)
237 __attribute__((format(printf, 1, 2)))
238#endif
239 ;
240
241// NOLINTEND(readability-identifier-naming)
242
243#ifdef __cplusplus
244}
245#endif
246
247#endif // _GAME_H
Registry< TrackInfo > gTrackRegistry
Definition Game.cpp:79
bool bCleanWorld
Definition Game.cpp:64
Registry< ItemInfo > gItemRegistry
Definition Game.cpp:81
DataRegistry< RandomItemTable > gItemTableRegistry
Definition Game.cpp:84
s32 gTrophyIndex
Definition Game.cpp:76
HarbourMastersIntro gMenuIntro
Definition Game.cpp:72
TrackEditor::Editor gEditor
Definition Game.cpp:74
void CM_RequestReset(void)
Definition Game.cpp:923
Registry< ActorInfo, const SpawnParams & > gActorRegistry
Definition Game.cpp:80
World * GetWorld()
Definition Game.cpp:89
void CM_SomeSounds()
Definition Game.cpp:615
u32 GetCupIndex(void)
Definition Game.cpp:210
size_t CM_GetActorSize()
Definition Game.cpp:819
bool IsBlockFort()
Definition Game.cpp:852
void * GetTrack(void)
Definition Game.cpp:735
NORETURN void CM_ThrowRuntimeError(const char *fmt,...)
Definition Game.cpp:996
void CM_CleanWorld(void)
Definition Game.cpp:776
void SelectDkJungle()
Definition Game.cpp:877
void SelectSkyscraper()
Definition Game.cpp:875
void SelectChocoMountain()
Definition Game.cpp:861
bool IsWarioStadium()
Definition Game.cpp:851
void CM_AICrossingBehaviour(s32 playerId)
Definition Game.cpp:277
void CM_ActorGenerateCollision(struct Actor *actor)
Definition Game.cpp:792
Camera * CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:439
void SelectToadsTurnpike()
Definition Game.cpp:869
void CM_DrawActors(Camera *camera)
Definition Game.cpp:352
void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha)
Definition Game.cpp:244
void SelectBlockFort()
Definition Game.cpp:874
void CM_SetStaffGhost()
Definition Game.cpp:639
bool IsLuigiRaceway()
Definition Game.cpp:838
void CM_TickTrack()
Definition Game.cpp:657
void CM_AttachCamera(Camera *camera, s32 playerIdx)
Definition Game.cpp:492
Properties * CM_GetProps()
Definition Game.cpp:650
void CM_DrawParticles(s32 cameraId)
Definition Game.cpp:564
void CM_DrawStaticMeshActors()
Definition Game.cpp:369
void CM_ActivateTourCamera(Camera *camera)
Definition Game.cpp:522
void HM_DrawIntro(void)
Definition Game.cpp:182
bool IsBansheeBoardwalk()
Definition Game.cpp:841
void SelectMooMooFarm()
Definition Game.cpp:868
void SelectWarioStadium()
Definition Game.cpp:873
struct Actor * CM_AddBaseActor()
Definition Game.cpp:784
uintptr_t CM_GetTrack()
Definition Game.cpp:646
bool IsSherbetLand()
Definition Game.cpp:849
bool IsDkJungle()
Definition Game.cpp:855
bool IsDoubleDeck()
Definition Game.cpp:854
bool IsMarioRaceway()
Definition Game.cpp:837
bool IsRainbowRoad()
Definition Game.cpp:850
void CM_ClearVehicles(void)
Definition Game.cpp:265
void CM_Waypoints(Player *player, int8_t playerId)
Definition Game.cpp:581
void CM_TickCameras()
Definition Game.cpp:417
void CM_SetViewProjection(Camera *camera)
Definition Game.cpp:409
void HM_InitIntro(void)
Definition Game.cpp:174
void CM_DrawObjects(s32 cameraId)
Definition Game.cpp:544
void CM_RunGarbageCollector(void)
Definition Game.cpp:903
struct Actor * CM_GetActor(size_t index)
Definition Game.cpp:739
void CM_TickActors60fps()
Definition Game.cpp:346
void CM_DrawTransparency(ScreenContext *screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection)
Definition Game.cpp:663
void SelectYoshiValley()
Definition Game.cpp:864
void CM_ResetAudio(void)
Definition Game.cpp:907
void Editor_CleanWorld()
Definition Game.cpp:812
void Graphics_PushFrame(Gfx *pool)
Definition Game.cpp:56
void CM_TickEditor()
Definition Game.cpp:550
void CM_DrawTrack(ScreenContext *arg0)
Definition Game.cpp:301
void * GetSpecialCup(void)
Definition Game.cpp:894
void * GetBattleCup(void)
Definition Game.cpp:898
void CM_TickObjects()
Definition Game.cpp:530
Camera * CM_AddCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:421
bool CM_IsTourEnabled()
Definition Game.cpp:471
void CM_DrawBombKarts(s32 cameraId)
void CM_ActivateFinalLapLakitu(s32 playerId)
Definition Game.cpp:708
void CM_TickParticles(void)
Definition Game.cpp:558
bool IsToadsTurnpike()
Definition Game.cpp:847
void CM_SetCupIndex(size_t index)
Definition Game.cpp:214
void CM_InitTrackObjects()
Definition Game.cpp:594
void CM_BeginPlay()
Definition Game.cpp:373
void CM_WhatDoesThisDo(Player *player, int8_t playerId)
Definition Game.cpp:627
bool IsMooMooFarm()
Definition Game.cpp:846
void CM_SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7)
Definition Game.cpp:587
void SelectRainbowRoad()
Definition Game.cpp:872
bool IsBowsersCastle()
Definition Game.cpp:840
void * GetMushroomCup(void)
Definition Game.cpp:882
void Editor_ClearMatrix()
Definition Game.cpp:808
size_t CM_FindActorIndex(struct Actor *actor)
Definition Game.cpp:749
void CM_ActivateFinishLakitu(s32 playerId)
Definition Game.cpp:694
void SelectBowsersCastle()
Definition Game.cpp:862
void SelectPodiumCeremony()
Definition Game.cpp:879
void SelectRoyalRaceway()
Definition Game.cpp:867
void * GetStarCup(void)
Definition Game.cpp:890
void SelectFrappeSnowland()
Definition Game.cpp:865
Camera * CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:483
bool IsChocoMountain()
Definition Game.cpp:839
void CM_ActivateReverseLakitu(s32 playerId)
Definition Game.cpp:715
bool IsSkyscraper()
Definition Game.cpp:853
s32 CM_GetCrossingOnTriggered(uintptr_t *crossing)
Definition Game.cpp:285
bool IsKoopaTroopaBeach()
Definition Game.cpp:844
void CM_TickTrackObjects()
Definition Game.cpp:600
u32 WorldPreviousCup(void)
Definition Game.cpp:198
void * GetCup()
Definition Game.cpp:206
void CM_RaceDrawSky(ScreenContext *screen, s32 someId)
Definition Game.cpp:570
void CM_DrawBattleBombKarts(s32 cameraId)
Definition Game.cpp:259
void SelectMarioRaceway()
Definition Game.cpp:859
bool IsPodiumCeremony()
Definition Game.cpp:857
void CM_TickDraw()
void SelectDoubleDeck()
Definition Game.cpp:876
void CM_CreditsSpawnActors()
Definition Game.cpp:621
bool IsYoshiValley()
Definition Game.cpp:842
void SelectKoopaTroopaBeach()
Definition Game.cpp:866
void CM_WhatDoesThisDoAI(Player *player, int8_t playerId)
Definition Game.cpp:633
void * GetFlowerCup(void)
Definition Game.cpp:886
void CM_TickObjects60fps()
Definition Game.cpp:538
void CM_VehicleCollision(s32 playerId, Player *player)
Definition Game.cpp:226
u32 WorldNextCup(void)
Definition Game.cpp:194
void CM_DrawTrackObjects(s32 cameraId)
Definition Game.cpp:607
bool IsBigDonut()
Definition Game.cpp:856
void CM_CleanCameras(void)
Definition Game.cpp:780
void CM_SpawnStarterLakitu()
Definition Game.cpp:673
void HM_TickIntro(void)
Definition Game.cpp:178
void CM_CameraSetActive(size_t idx, bool state)
Definition Game.cpp:496
void SelectBigDonut()
Definition Game.cpp:878
void CM_ActivateSecondLapLakitu(s32 playerId)
Definition Game.cpp:701
void CM_ActorBeginPlay(struct Actor *actor)
Definition Game.cpp:788
void CM_DrawEditor()
Definition Game.cpp:554
void CM_DeleteActor(size_t index)
Definition Game.cpp:766
bool IsKalimariDesert()
Definition Game.cpp:848
Camera * CM_GetPlayerCamera(s32 playerIndex)
Definition Game.cpp:396
f32 CM_GetWaterLevel(Vec3f pos, struct Collision *collision)
Definition Game.cpp:831
void CM_BombKartsWaypoint(s32 cameraId)
Definition Game.cpp:234
void SelectLuigiRaceway()
Definition Game.cpp:860
void CM_SetFreeCamera(bool state)
Definition Game.cpp:502
void CM_ActorCollision(Player *player, struct Actor *actor)
Definition Game.cpp:823
void SelectBansheeBoardwalk()
Definition Game.cpp:863
void CM_SetCup(void *)
Definition Game.cpp:202
size_t GetCupCursorPosition()
Definition Game.cpp:722
void CM_TickActors()
Definition Game.cpp:340
void SetCupCursorPosition(size_t position)
Definition Game.cpp:726
void CM_CrossingTrigger()
Definition Game.cpp:269
void Editor_AddLight(s8 *direction)
Definition Game.cpp:802
size_t GetCupSize()
Definition Game.cpp:731
Camera * CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:430
void SetMarioRaceway(void)
Definition Game.cpp:187
const char * GetCupName(void)
Definition Game.cpp:218
void SelectKalimariDesert()
Definition Game.cpp:870
bool IsFrappeSnowland()
Definition Game.cpp:843
void SelectSherbetLand()
Definition Game.cpp:871
void LoadTrack()
Definition Game.cpp:222
bool IsRoyalRaceway()
Definition Game.cpp:845
Definition DataRegistry.h:8
Definition Registry.h:60
Definition World.h:40
f32 Vec3f[3]
Definition common_structs.h:10
#define NORETURN
Definition macros.h:18
#define fmt(...)
Definition pak.cpp:8
Definition actor_types.h:124
Vec3f pos
Definition actor_types.h:133
Definition camera.h:35
Definition common_structs.h:147
Definition common_structs.h:264
Definition Track.h:93
Definition code_800029B0.h:14