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
38#endif
39// NOLINTBEGIN(readability-identifier-naming)
40
41void Graphics_PushFrame(Gfx* pool);
42
43uintptr_t CM_GetTrack();
45
46void HM_InitIntro(void);
47void HM_TickIntro(void);
48void HM_DrawIntro(void);
49
50void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha);
51void CM_DrawBattleBombKarts(s32 cameraId);
52
53u32 WorldNextCup(void);
54
55u32 WorldPreviousCup(void);
56
57u32 GetCupIndex(void);
58
59const char* GetCupName(void);
60
61void LoadTrack();
62
63void CM_SetCup(void*);
64
65void CM_SetCupIndex(size_t index);
66
67void CM_DrawTrack(ScreenContext* arg0);
68
70void CM_ActivateFinishLakitu(s32 playerId);
71void CM_ActivateSecondLapLakitu(s32 playerId);
72void CM_ActivateFinalLapLakitu(s32 playerId);
73void CM_ActivateReverseLakitu(s32 playerId);
74
75void CM_InitClouds();
76
77void CM_DrawActors(Camera* camera);
79
80Camera* CM_GetPlayerCamera(s32 playerIndex);
81void CM_SetViewProjection(Camera* camera);
82void CM_TickCameras();
83Camera* CM_AddCamera(Vec3f spawn, s16 rot, u32 mode);
84Camera* CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode);
85Camera* CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode);
86bool CM_IsTourEnabled();
87Camera* CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode);
88void CM_AttachCamera(Camera* camera, s32 playerIdx);
89void CM_SetFreeCamera(bool state);
90void CM_CameraSetActive(size_t idx, bool state);
91void CM_ActivateTourCamera(Camera* camera);
92void CM_TickObjects();
94void CM_DrawObjects(s32 cameraId);
95
96void CM_TickEditor();
97void CM_DrawEditor();
100void Editor_CleanWorld();
101
102void CM_TickParticles(void);
103void CM_DrawParticles(s32 cameraId);
104
105void CM_TickClouds(s32 arg0, Camera* camera);
106
107void CM_Waypoints(Player* player, int8_t playerId);
108
109void CM_SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6,
110 f32* arg7);
111
113
115
116void CM_DrawTrackObjects(s32 cameraId);
117
118void CM_SomeSounds();
119
121
122void CM_WhatDoesThisDo(Player* player, int8_t playerId);
123
124void CM_WhatDoesThisDoAI(Player* player, int8_t playerId);
125
126void CM_SetStaffGhost();
127
128void CM_BombKartsWaypoint(s32 cameraId);
129
130void CM_TickTrack();
131
132s32 CM_GetCrossingOnTriggered(uintptr_t* crossing);
133
134void CM_BeginPlay();
135
136void CM_DrawTransparency(ScreenContext* screen, uint16_t pathCounter, uint16_t cameraRot,
137 uint16_t playerDirection);
138
139void CM_AICrossingBehaviour(s32 playerId);
140
141void CM_ClearVehicles(void);
142
143void CM_CrossingTrigger();
144
145void CM_VehicleCollision(s32 playerId, Player* player);
146
147void CM_TickActors();
148
149void CM_DrawBombKarts(s32 cameraId);
150
151void SetMarioRaceway(void);
152
153size_t GetCupCursorPosition();
154
155void SetCupCursorPosition(size_t position);
156
157size_t GetCupSize();
158
159void* GetTrack(void);
160
161struct Actor* CM_GetActor(size_t index);
162void CM_DeleteActor(size_t index);
163struct Actor* CM_AddBaseActor();
164void CM_ActorBeginPlay(struct Actor* actor);
165void CM_ActorGenerateCollision(struct Actor* actor);
166void Editor_AddLight(s8* direction);
167size_t CM_GetActorSize();
168size_t CM_FindActorIndex(struct Actor* actor);
169void CM_ActorCollision(Player* player, struct Actor* actor);
170void CM_CleanCameras(void);
171void CM_CleanWorld(void);
172
173f32 CM_GetWaterLevel(Vec3f pos, Collision* collision);
174
175bool IsMarioRaceway();
176bool IsLuigiRaceway();
177bool IsChocoMountain();
178bool IsBowsersCastle();
179bool IsBansheeBoardwalk();
180bool IsYoshiValley();
181bool IsFrappeSnowland();
182bool IsKoopaTroopaBeach();
183bool IsRoyalRaceway();
184bool IsMooMooFarm();
185bool IsToadsTurnpike();
186bool IsKalimariDesert();
187bool IsSherbetLand();
188bool IsRainbowRoad();
189bool IsWarioStadium();
190bool IsBlockFort();
191bool IsSkyscraper();
192bool IsDoubleDeck();
193bool IsDkJungle();
194bool IsBigDonut();
195bool IsPodiumCeremony();
196
197void SelectMarioRaceway();
198void SelectLuigiRaceway();
202void SelectYoshiValley();
205void SelectRoyalRaceway();
206void SelectMooMooFarm();
209void SelectSherbetLand();
210void SelectRainbowRoad();
211void SelectWarioStadium();
212void SelectBlockFort();
213void SelectSkyscraper();
214void SelectDoubleDeck();
215void SelectDkJungle();
216void SelectBigDonut();
218
219void* GetMushroomCup(void);
220
221void* GetFlowerCup(void);
222
223void* GetStarCup(void);
224
225void* GetSpecialCup(void);
226
227void* GetBattleCup(void);
228
229void* GetCup();
230
231void CM_RunGarbageCollector(void);
232void CM_ResetAudio(void);
233
234// Add print formatting check attribute
235#if defined(__GNUC__) || defined(__clang__)
236__attribute__((format(printf, 1, 2)))
237#endif
238
239NORETURN void CM_ThrowRuntimeError(const char* fmt, ...);
240
241// NOLINTEND(readability-identifier-naming)
242
243#ifdef __cplusplus
244}
245#endif
246
247#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:557
void CM_SomeSounds()
Definition Game.cpp:603
u32 GetCupIndex(void)
Definition Game.cpp:205
size_t CM_GetActorSize()
Definition Game.cpp:799
bool IsBlockFort()
Definition Game.cpp:832
void * GetTrack(void)
Definition Game.cpp:715
NORETURN void CM_ThrowRuntimeError(const char *fmt,...)
Definition Game.cpp:910
void CM_TickClouds(s32 arg0, Camera *camera)
Definition Game.cpp:563
void CM_CleanWorld(void)
Definition Game.cpp:756
void SelectDkJungle()
Definition Game.cpp:857
void SelectSkyscraper()
Definition Game.cpp:855
void SelectChocoMountain()
Definition Game.cpp:841
bool IsWarioStadium()
Definition Game.cpp:831
void CM_AICrossingBehaviour(s32 playerId)
Definition Game.cpp:272
void CM_ActorGenerateCollision(struct Actor *actor)
Definition Game.cpp:772
Camera * CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:426
void SelectToadsTurnpike()
Definition Game.cpp:849
void CM_DrawActors(Camera *camera)
Definition Game.cpp:340
void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha)
Definition Game.cpp:239
void SelectBlockFort()
Definition Game.cpp:854
void CM_SetStaffGhost()
Definition Game.cpp:627
bool IsLuigiRaceway()
Definition Game.cpp:818
void CM_TickTrack()
Definition Game.cpp:645
void CM_AttachCamera(Camera *camera, s32 playerIdx)
Definition Game.cpp:479
Properties * CM_GetProps()
Definition Game.cpp:638
void CM_DrawParticles(s32 cameraId)
Definition Game.cpp:551
void CM_DrawStaticMeshActors()
Definition Game.cpp:357
void CM_ActivateTourCamera(Camera *camera)
Definition Game.cpp:509
void HM_DrawIntro(void)
Definition Game.cpp:177
bool IsBansheeBoardwalk()
Definition Game.cpp:821
void SelectMooMooFarm()
Definition Game.cpp:848
void SelectWarioStadium()
Definition Game.cpp:853
struct Actor * CM_AddBaseActor()
Definition Game.cpp:764
uintptr_t CM_GetTrack()
Definition Game.cpp:634
bool IsSherbetLand()
Definition Game.cpp:829
bool IsDkJungle()
Definition Game.cpp:835
bool IsDoubleDeck()
Definition Game.cpp:834
bool IsMarioRaceway()
Definition Game.cpp:817
bool IsRainbowRoad()
Definition Game.cpp:830
void CM_ClearVehicles(void)
Definition Game.cpp:260
void CM_Waypoints(Player *player, int8_t playerId)
Definition Game.cpp:569
void CM_TickCameras()
Definition Game.cpp:404
void CM_SetViewProjection(Camera *camera)
Definition Game.cpp:396
void HM_InitIntro(void)
Definition Game.cpp:169
void CM_DrawObjects(s32 cameraId)
Definition Game.cpp:531
void CM_RunGarbageCollector(void)
Definition Game.cpp:883
struct Actor * CM_GetActor(size_t index)
Definition Game.cpp:719
void CM_DrawTransparency(ScreenContext *screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection)
Definition Game.cpp:651
void SelectYoshiValley()
Definition Game.cpp:844
void CM_ResetAudio(void)
Definition Game.cpp:887
void Editor_CleanWorld()
Definition Game.cpp:792
void Graphics_PushFrame(Gfx *pool)
Definition Game.cpp:53
void CM_TickEditor()
Definition Game.cpp:537
void CM_DrawTrack(ScreenContext *arg0)
Definition Game.cpp:295
void * GetSpecialCup(void)
Definition Game.cpp:874
void * GetBattleCup(void)
Definition Game.cpp:878
void CM_TickObjects()
Definition Game.cpp:517
Camera * CM_AddCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:408
bool CM_IsTourEnabled()
Definition Game.cpp:458
void CM_DrawBombKarts(s32 cameraId)
void CM_ActivateFinalLapLakitu(s32 playerId)
Definition Game.cpp:688
void CM_TickParticles(void)
Definition Game.cpp:545
bool IsToadsTurnpike()
Definition Game.cpp:827
void CM_SetCupIndex(size_t index)
Definition Game.cpp:209
f32 CM_GetWaterLevel(Vec3f pos, Collision *collision)
Definition Game.cpp:811
void CM_InitTrackObjects()
Definition Game.cpp:582
void CM_BeginPlay()
Definition Game.cpp:361
void CM_WhatDoesThisDo(Player *player, int8_t playerId)
Definition Game.cpp:615
bool IsMooMooFarm()
Definition Game.cpp:826
void CM_SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7)
Definition Game.cpp:575
void SelectRainbowRoad()
Definition Game.cpp:852
bool IsBowsersCastle()
Definition Game.cpp:820
void * GetMushroomCup(void)
Definition Game.cpp:862
void Editor_ClearMatrix()
Definition Game.cpp:788
size_t CM_FindActorIndex(struct Actor *actor)
Definition Game.cpp:729
void CM_ActivateFinishLakitu(s32 playerId)
Definition Game.cpp:674
void SelectBowsersCastle()
Definition Game.cpp:842
void SelectPodiumCeremony()
Definition Game.cpp:859
void SelectRoyalRaceway()
Definition Game.cpp:847
void * GetStarCup(void)
Definition Game.cpp:870
void SelectFrappeSnowland()
Definition Game.cpp:845
Camera * CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:470
bool IsChocoMountain()
Definition Game.cpp:819
void CM_ActivateReverseLakitu(s32 playerId)
Definition Game.cpp:695
bool IsSkyscraper()
Definition Game.cpp:833
s32 CM_GetCrossingOnTriggered(uintptr_t *crossing)
Definition Game.cpp:280
bool IsKoopaTroopaBeach()
Definition Game.cpp:824
void CM_TickTrackObjects()
Definition Game.cpp:588
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:839
bool IsPodiumCeremony()
Definition Game.cpp:837
void CM_TickDraw()
void SelectDoubleDeck()
Definition Game.cpp:856
void CM_CreditsSpawnActors()
Definition Game.cpp:609
bool IsYoshiValley()
Definition Game.cpp:822
void SelectKoopaTroopaBeach()
Definition Game.cpp:846
void CM_WhatDoesThisDoAI(Player *player, int8_t playerId)
Definition Game.cpp:621
void * GetFlowerCup(void)
Definition Game.cpp:866
void CM_TickObjects60fps()
Definition Game.cpp:525
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:595
bool IsBigDonut()
Definition Game.cpp:836
void CM_CleanCameras(void)
Definition Game.cpp:760
void CM_SpawnStarterLakitu()
Definition Game.cpp:661
void HM_TickIntro(void)
Definition Game.cpp:173
void CM_CameraSetActive(size_t idx, bool state)
Definition Game.cpp:483
void SelectBigDonut()
Definition Game.cpp:858
void CM_ActivateSecondLapLakitu(s32 playerId)
Definition Game.cpp:681
void CM_ActorBeginPlay(struct Actor *actor)
Definition Game.cpp:768
void CM_DrawEditor()
Definition Game.cpp:541
void CM_DeleteActor(size_t index)
Definition Game.cpp:746
bool IsKalimariDesert()
Definition Game.cpp:828
Camera * CM_GetPlayerCamera(s32 playerIndex)
Definition Game.cpp:383
void CM_BombKartsWaypoint(s32 cameraId)
Definition Game.cpp:229
void SelectLuigiRaceway()
Definition Game.cpp:840
void CM_SetFreeCamera(bool state)
Definition Game.cpp:489
void CM_ActorCollision(Player *player, struct Actor *actor)
Definition Game.cpp:803
void SelectBansheeBoardwalk()
Definition Game.cpp:843
void CM_SetCup(void *)
Definition Game.cpp:197
size_t GetCupCursorPosition()
Definition Game.cpp:702
void CM_TickActors()
Definition Game.cpp:334
void SetCupCursorPosition(size_t position)
Definition Game.cpp:706
void CM_CrossingTrigger()
Definition Game.cpp:264
void Editor_AddLight(s8 *direction)
Definition Game.cpp:782
size_t GetCupSize()
Definition Game.cpp:711
Camera * CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:417
void SetMarioRaceway(void)
Definition Game.cpp:182
const char * GetCupName(void)
Definition Game.cpp:213
void SelectKalimariDesert()
Definition Game.cpp:850
bool IsFrappeSnowland()
Definition Game.cpp:823
void SelectSherbetLand()
Definition Game.cpp:851
void LoadTrack()
Definition Game.cpp:217
bool IsRoyalRaceway()
Definition Game.cpp:825
Definition DataRegistry.h:8
Definition Registry.h:60
Definition World.h:39
f32 Vec3f[3]
Definition common_structs.h:10
#define NORETURN
Definition macros.h:18
#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