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
8#ifdef __cplusplus
12class Track;
13struct Properties;
14class World;
15
16template<class T, typename... TArgs> T* SpawnActor(TArgs&&... args) {
17 return T::Spawn(std::forward<TArgs>(args)...);
18}
19
20extern "C" {
21#endif
22#include "camera.h"
23#include "actor_types.h"
24#include "code_800029B0.h"
25
26extern s32 gTrophyIndex;
27
28#ifdef __cplusplus
29extern TrackEditor::Editor gEditor;
30extern HarbourMastersIntro gMenuIntro;
31extern bool bCleanWorld;
36World* GetWorld(void); // Retrieve the world instance
37#endif
38// NOLINTBEGIN(readability-identifier-naming)
39
40void Graphics_PushFrame(Gfx* pool);
41
42uintptr_t CM_GetTrack();
44
45void HM_InitIntro(void);
46void HM_TickIntro(void);
47void HM_DrawIntro(void);
48
49void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha);
50void CM_DrawBattleBombKarts(s32 cameraId);
51
52u32 WorldNextCup(void);
53
54u32 WorldPreviousCup(void);
55
56u32 GetCupIndex(void);
57
58const char* GetCupName(void);
59
60void LoadTrack();
61
62void CM_SetCup(void*);
63
64void CM_SetCupIndex(size_t index);
65
66void CM_DrawTrack(ScreenContext* arg0);
67
69void CM_ActivateFinishLakitu(s32 playerId);
70void CM_ActivateSecondLapLakitu(s32 playerId);
71void CM_ActivateFinalLapLakitu(s32 playerId);
72void CM_ActivateReverseLakitu(s32 playerId);
73
74void CM_InitClouds();
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_TickClouds(s32 arg0, Camera* camera);
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_DrawBombKarts(s32 cameraId);
149
150void SetMarioRaceway(void);
151
152size_t GetCupCursorPosition();
153
154void SetCupCursorPosition(size_t position);
155
156size_t GetCupSize();
157
158void* GetTrack(void);
159
160struct Actor* CM_GetActor(size_t index);
161void CM_DeleteActor(size_t index);
162struct Actor* CM_AddBaseActor();
163void CM_ActorBeginPlay(struct Actor* actor);
164void CM_ActorGenerateCollision(struct Actor* actor);
165void Editor_AddLight(s8* direction);
166size_t CM_GetActorSize();
167size_t CM_FindActorIndex(struct Actor* actor);
168void CM_ActorCollision(Player* player, struct Actor* actor);
169void CM_CleanCameras(void);
170void CM_CleanWorld(void);
171
172f32 CM_GetWaterLevel(Vec3f pos, Collision* collision);
173
174bool IsMarioRaceway();
175bool IsLuigiRaceway();
176bool IsChocoMountain();
177bool IsBowsersCastle();
178bool IsBansheeBoardwalk();
179bool IsYoshiValley();
180bool IsFrappeSnowland();
181bool IsKoopaTroopaBeach();
182bool IsRoyalRaceway();
183bool IsMooMooFarm();
184bool IsToadsTurnpike();
185bool IsKalimariDesert();
186bool IsSherbetLand();
187bool IsRainbowRoad();
188bool IsWarioStadium();
189bool IsBlockFort();
190bool IsSkyscraper();
191bool IsDoubleDeck();
192bool IsDkJungle();
193bool IsBigDonut();
194bool IsPodiumCeremony();
195
196void SelectMarioRaceway();
197void SelectLuigiRaceway();
201void SelectYoshiValley();
204void SelectRoyalRaceway();
205void SelectMooMooFarm();
208void SelectSherbetLand();
209void SelectRainbowRoad();
210void SelectWarioStadium();
211void SelectBlockFort();
212void SelectSkyscraper();
213void SelectDoubleDeck();
214void SelectDkJungle();
215void SelectBigDonut();
217
218void* GetMushroomCup(void);
219
220void* GetFlowerCup(void);
221
222void* GetStarCup(void);
223
224void* GetSpecialCup(void);
225
226void* GetBattleCup(void);
227
228void* GetCup();
229
230void CM_RunGarbageCollector(void);
231void CM_ResetAudio(void);
232
233// Add print formatting check attribute
234#if defined(__GNUC__) || defined(__clang__)
235__attribute__((format(printf, 1, 2)))
236#endif
237
238// Add noreturn attribute
239#if defined(_MSC_VER)
240 __declspec(noreturn)
241#elif defined(__APPLE__)
242#elif defined(__cplusplus) || (__STDC_VERSION__ >= 202311)
243 [[noreturn]]
244#elif defined(__GNUC__)
245 __attribute__((noreturn))
246#endif
247void CM_ThrowRuntimeError(const char* fmt, ...);
248
249// NOLINTEND(readability-identifier-naming)
250
251#ifdef __cplusplus
252}
253#endif
254
255#endif // _GAME_H
Registry< TrackInfo > gTrackRegistry
Definition Game.cpp:76
bool bCleanWorld
Definition Game.cpp:61
Registry< ItemInfo > gItemRegistry
Definition Game.cpp:78
DataRegistry< RandomItemTable > gItemTableRegistry
Definition Game.cpp:81
s32 gTrophyIndex
Definition Game.cpp:73
HarbourMastersIntro gMenuIntro
Definition Game.cpp:69
TrackEditor::Editor gEditor
Definition Game.cpp:71
Registry< ActorInfo, const SpawnParams & > gActorRegistry
Definition Game.cpp:77
World * GetWorld()
Definition Game.cpp:85
void CM_InitClouds()
Definition Game.cpp:554
void CM_SomeSounds()
Definition Game.cpp:600
u32 GetCupIndex(void)
Definition Game.cpp:205
size_t CM_GetActorSize()
Definition Game.cpp:796
bool IsBlockFort()
Definition Game.cpp:829
void * GetTrack(void)
Definition Game.cpp:712
void CM_TickClouds(s32 arg0, Camera *camera)
Definition Game.cpp:560
void CM_CleanWorld(void)
Definition Game.cpp:753
void SelectDkJungle()
Definition Game.cpp:854
void SelectSkyscraper()
Definition Game.cpp:852
void SelectChocoMountain()
Definition Game.cpp:838
bool IsWarioStadium()
Definition Game.cpp:828
void CM_AICrossingBehaviour(s32 playerId)
Definition Game.cpp:272
void CM_ActorGenerateCollision(struct Actor *actor)
Definition Game.cpp:769
Camera * CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:423
void SelectToadsTurnpike()
Definition Game.cpp:846
void CM_DrawActors(Camera *camera)
Definition Game.cpp:337
void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha)
Definition Game.cpp:239
void SelectBlockFort()
Definition Game.cpp:851
void CM_SetStaffGhost()
Definition Game.cpp:624
bool IsLuigiRaceway()
Definition Game.cpp:815
void CM_TickTrack()
Definition Game.cpp:642
void CM_AttachCamera(Camera *camera, s32 playerIdx)
Definition Game.cpp:476
Properties * CM_GetProps()
Definition Game.cpp:635
void CM_DrawParticles(s32 cameraId)
Definition Game.cpp:548
void CM_DrawStaticMeshActors()
Definition Game.cpp:354
void CM_ActivateTourCamera(Camera *camera)
Definition Game.cpp:506
void HM_DrawIntro(void)
Definition Game.cpp:177
bool IsBansheeBoardwalk()
Definition Game.cpp:818
void SelectMooMooFarm()
Definition Game.cpp:845
void SelectWarioStadium()
Definition Game.cpp:850
struct Actor * CM_AddBaseActor()
Definition Game.cpp:761
uintptr_t CM_GetTrack()
Definition Game.cpp:631
bool IsSherbetLand()
Definition Game.cpp:826
bool IsDkJungle()
Definition Game.cpp:832
bool IsDoubleDeck()
Definition Game.cpp:831
bool IsMarioRaceway()
Definition Game.cpp:814
bool IsRainbowRoad()
Definition Game.cpp:827
void CM_ClearVehicles(void)
Definition Game.cpp:260
void CM_Waypoints(Player *player, int8_t playerId)
Definition Game.cpp:566
void CM_TickCameras()
Definition Game.cpp:401
void CM_SetViewProjection(Camera *camera)
Definition Game.cpp:393
void HM_InitIntro(void)
Definition Game.cpp:169
void CM_DrawObjects(s32 cameraId)
Definition Game.cpp:528
void CM_RunGarbageCollector(void)
Definition Game.cpp:880
struct Actor * CM_GetActor(size_t index)
Definition Game.cpp:716
void CM_DrawTransparency(ScreenContext *screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection)
Definition Game.cpp:648
void SelectYoshiValley()
Definition Game.cpp:841
void CM_ResetAudio(void)
Definition Game.cpp:884
void Editor_CleanWorld()
Definition Game.cpp:789
void Graphics_PushFrame(Gfx *pool)
Definition Game.cpp:53
void CM_TickEditor()
Definition Game.cpp:534
void CM_DrawTrack(ScreenContext *arg0)
Definition Game.cpp:295
void * GetSpecialCup(void)
Definition Game.cpp:871
void * GetBattleCup(void)
Definition Game.cpp:875
void CM_TickObjects()
Definition Game.cpp:514
Camera * CM_AddCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:405
bool CM_IsTourEnabled()
Definition Game.cpp:455
void CM_DrawBombKarts(s32 cameraId)
void CM_ActivateFinalLapLakitu(s32 playerId)
Definition Game.cpp:685
void CM_TickParticles(void)
Definition Game.cpp:542
bool IsToadsTurnpike()
Definition Game.cpp:824
void CM_SetCupIndex(size_t index)
Definition Game.cpp:209
f32 CM_GetWaterLevel(Vec3f pos, Collision *collision)
Definition Game.cpp:808
void CM_ThrowRuntimeError(const char *fmt,...)
Definition Game.cpp:907
void CM_InitTrackObjects()
Definition Game.cpp:579
void CM_BeginPlay()
Definition Game.cpp:358
void CM_WhatDoesThisDo(Player *player, int8_t playerId)
Definition Game.cpp:612
bool IsMooMooFarm()
Definition Game.cpp:823
void CM_SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7)
Definition Game.cpp:572
void SelectRainbowRoad()
Definition Game.cpp:849
bool IsBowsersCastle()
Definition Game.cpp:817
void * GetMushroomCup(void)
Definition Game.cpp:859
void Editor_ClearMatrix()
Definition Game.cpp:785
size_t CM_FindActorIndex(struct Actor *actor)
Definition Game.cpp:726
void CM_ActivateFinishLakitu(s32 playerId)
Definition Game.cpp:671
void SelectBowsersCastle()
Definition Game.cpp:839
void SelectPodiumCeremony()
Definition Game.cpp:856
void SelectRoyalRaceway()
Definition Game.cpp:844
void * GetStarCup(void)
Definition Game.cpp:867
void SelectFrappeSnowland()
Definition Game.cpp:842
Camera * CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:467
bool IsChocoMountain()
Definition Game.cpp:816
void CM_ActivateReverseLakitu(s32 playerId)
Definition Game.cpp:692
bool IsSkyscraper()
Definition Game.cpp:830
s32 CM_GetCrossingOnTriggered(uintptr_t *crossing)
Definition Game.cpp:280
bool IsKoopaTroopaBeach()
Definition Game.cpp:821
void CM_TickTrackObjects()
Definition Game.cpp:585
u32 WorldPreviousCup(void)
Definition Game.cpp:193
void * GetCup()
Definition Game.cpp:201
void CM_DrawBattleBombKarts(s32 cameraId)
Definition Game.cpp:254
void SelectMarioRaceway()
Definition Game.cpp:836
bool IsPodiumCeremony()
Definition Game.cpp:834
void CM_TickDraw()
void SelectDoubleDeck()
Definition Game.cpp:853
void CM_CreditsSpawnActors()
Definition Game.cpp:606
bool IsYoshiValley()
Definition Game.cpp:819
void SelectKoopaTroopaBeach()
Definition Game.cpp:843
void CM_WhatDoesThisDoAI(Player *player, int8_t playerId)
Definition Game.cpp:618
void * GetFlowerCup(void)
Definition Game.cpp:863
void CM_TickObjects60fps()
Definition Game.cpp:522
void CM_VehicleCollision(s32 playerId, Player *player)
Definition Game.cpp:221
u32 WorldNextCup(void)
Definition Game.cpp:189
void CM_DrawTrackObjects(s32 cameraId)
Definition Game.cpp:592
bool IsBigDonut()
Definition Game.cpp:833
void CM_CleanCameras(void)
Definition Game.cpp:757
void CM_SpawnStarterLakitu()
Definition Game.cpp:658
void HM_TickIntro(void)
Definition Game.cpp:173
void CM_CameraSetActive(size_t idx, bool state)
Definition Game.cpp:480
void SelectBigDonut()
Definition Game.cpp:855
void CM_ActivateSecondLapLakitu(s32 playerId)
Definition Game.cpp:678
void CM_ActorBeginPlay(struct Actor *actor)
Definition Game.cpp:765
void CM_DrawEditor()
Definition Game.cpp:538
void CM_DeleteActor(size_t index)
Definition Game.cpp:743
bool IsKalimariDesert()
Definition Game.cpp:825
Camera * CM_GetPlayerCamera(s32 playerIndex)
Definition Game.cpp:380
void CM_BombKartsWaypoint(s32 cameraId)
Definition Game.cpp:229
void SelectLuigiRaceway()
Definition Game.cpp:837
void CM_SetFreeCamera(bool state)
Definition Game.cpp:486
void CM_ActorCollision(Player *player, struct Actor *actor)
Definition Game.cpp:800
void SelectBansheeBoardwalk()
Definition Game.cpp:840
void CM_SetCup(void *)
Definition Game.cpp:197
size_t GetCupCursorPosition()
Definition Game.cpp:699
void CM_TickActors()
Definition Game.cpp:331
void SetCupCursorPosition(size_t position)
Definition Game.cpp:703
void CM_CrossingTrigger()
Definition Game.cpp:264
void Editor_AddLight(s8 *direction)
Definition Game.cpp:779
size_t GetCupSize()
Definition Game.cpp:708
Camera * CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:414
void SetMarioRaceway(void)
Definition Game.cpp:182
const char * GetCupName(void)
Definition Game.cpp:213
void SelectKalimariDesert()
Definition Game.cpp:847
bool IsFrappeSnowland()
Definition Game.cpp:820
void SelectSherbetLand()
Definition Game.cpp:848
void LoadTrack()
Definition Game.cpp:217
bool IsRoyalRaceway()
Definition Game.cpp:822
Definition DataRegistry.h:8
Definition Registry.h:60
Definition World.h:39
f32 Vec3f[3]
Definition common_structs.h:10
#define fmt(...)
Definition pak.cpp:8
Definition actor_types.h:126
Vec3f pos
Definition actor_types.h:135
Definition camera.h:35
Definition common_structs.h:147
Definition common_structs.h:264
Definition Track.h:90
Definition code_800029B0.h:10