summaryrefslogtreecommitdiff
path: root/src/port/Game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/port/Game.cpp')
-rw-r--r--src/port/Game.cpp44
1 files changed, 41 insertions, 3 deletions
diff --git a/src/port/Game.cpp b/src/port/Game.cpp
index 4d563659d..309ea01b8 100644
--- a/src/port/Game.cpp
+++ b/src/port/Game.cpp
@@ -163,6 +163,38 @@ void CustomEngineInit() {
// gModelLoader.Load();
}
+void CustomEngineDestroy() {
+ delete gMarioRaceway;
+ delete gChocoMountain;
+ delete gBowsersCastle;
+ delete gBansheeBoardwalk;
+ delete gYoshiValley;
+ delete gFrappeSnowland;
+ delete gKoopaTroopaBeach;
+ delete gRoyalRaceway;
+ delete gLuigiRaceway;
+ delete gMooMooFarm;
+ delete gToadsTurnpike;
+ delete gKalimariDesert;
+ delete gSherbetLand;
+ delete gRainbowRoad;
+ delete gWarioStadium;
+ delete gBlockFort;
+ delete gSkyscraper;
+ delete gDoubleDeck;
+ delete gDkJungle;
+ delete gBigDonut;
+ delete gPodiumCeremony;
+ delete gHarbour;
+ delete gTestCourse;
+
+ delete gMushroomCup;
+ delete gFlowerCup;
+ delete gStarCup;
+ delete gSpecialCup;
+ delete gBattleCup;
+}
+
extern "C" {
void HM_InitIntro() {
@@ -209,6 +241,10 @@ u32 GetCupIndex(void) {
return gWorldInstance.GetCupIndex();
}
+void CM_SetCupIndex(size_t index) {
+ gWorldInstance.SetCupIndex(index);
+}
+
const char* GetCupName(void) {
return gWorldInstance.CurrentCup->Name;
}
@@ -359,10 +395,11 @@ void CM_BeginPlay() {
if (course) {
// Do not spawn finishline in credits or battle mode. And if bSpawnFinishline.
- if ((gGamestate != CREDITS_SEQUENCE) && (gGamestate != BATTLE) && (course->bSpawnFinishline)) {
- gWorldInstance.AddActor(new AFinishline(course->FinishlineSpawnPoint));
+ if ((gGamestate != CREDITS_SEQUENCE) && (gModeSelection != BATTLE)) {
+ if (course->bSpawnFinishline) {
+ gWorldInstance.AddActor(new AFinishline(course->FinishlineSpawnPoint));
+ }
}
-
gEditor.AddLight("Sun", nullptr, D_800DC610[1].l->l.dir);
course->BeginPlay();
@@ -795,6 +832,7 @@ extern "C"
while (WindowIsRunning()) {
push_frame();
}
+ CustomEngineDestroy();
// GameEngine::Instance->ProcessFrame(push_frame);
GameEngine::Instance->Destroy();
return 0;