From 4fbb031dd95f2a84e73fbca269f517e98808d293 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Tue, 15 Oct 2024 20:29:26 -0600 Subject: [PATCH] Refactors (#114) * Update Engine.cpp * fix * Add Actors * Refactor * Update Game.cpp * Refactors as per review --- src/code_80091750.c | 10 ++- src/engine/Cup.cpp | 7 +- src/engine/Cup.h | 3 +- src/engine/World.cpp | 48 ++++------- src/engine/World.h | 11 ++- src/engine/courses/BansheeBoardwalk.cpp | 2 - src/engine/courses/BansheeBoardwalk.h | 1 - src/engine/courses/BigDonut.cpp | 2 - src/engine/courses/BigDonut.h | 1 - src/engine/courses/BlockFort.cpp | 2 - src/engine/courses/BlockFort.h | 1 - src/engine/courses/BowsersCastle.cpp | 2 - src/engine/courses/BowsersCastle.h | 1 - src/engine/courses/ChocoMountain.cpp | 2 - src/engine/courses/ChocoMountain.h | 1 - src/engine/courses/Course.cpp | 2 - src/engine/courses/Course.h | 1 - src/engine/courses/DKJungle.cpp | 2 - src/engine/courses/DKJungle.h | 1 - src/engine/courses/DoubleDeck.cpp | 2 - src/engine/courses/DoubleDeck.h | 1 - src/engine/courses/FrappeSnowland.cpp | 1 - src/engine/courses/FrappeSnowland.h | 1 - src/engine/courses/KalimariDesert.cpp | 2 - src/engine/courses/KalimariDesert.h | 1 - src/engine/courses/KoopaTroopaBeach.cpp | 2 - src/engine/courses/KoopaTroopaBeach.h | 1 - src/engine/courses/LuigiRaceway.cpp | 2 - src/engine/courses/LuigiRaceway.h | 1 - src/engine/courses/MarioRaceway.cpp | 2 - src/engine/courses/MarioRaceway.h | 1 - src/engine/courses/MooMooFarm.cpp | 2 - src/engine/courses/MooMooFarm.h | 1 - src/engine/courses/PodiumCeremony.cpp | 2 - src/engine/courses/PodiumCeremony.h | 1 - src/engine/courses/RainbowRoad.cpp | 2 - src/engine/courses/RainbowRoad.h | 1 - src/engine/courses/RoyalRaceway.cpp | 2 - src/engine/courses/RoyalRaceway.h | 1 - src/engine/courses/SherbetLand.cpp | 2 - src/engine/courses/SherbetLand.h | 1 - src/engine/courses/Skyscraper.cpp | 2 - src/engine/courses/Skyscraper.h | 1 - src/engine/courses/TestCourse.cpp | 2 - src/engine/courses/TestCourse.h | 1 - src/engine/courses/ToadsTurnpike.cpp | 1 - src/engine/courses/ToadsTurnpike.h | 1 - src/engine/courses/WarioStadium.cpp | 14 ---- src/engine/courses/WarioStadium.h | 1 - src/engine/courses/YoshiValley.cpp | 2 - src/engine/courses/YoshiValley.h | 1 - src/menus.c | 11 +-- src/networking/start_game.c | 2 +- src/port/Engine.cpp | 3 +- src/port/Game.cpp | 106 +++++++++++++++--------- src/port/Game.h | 24 +++++- 56 files changed, 129 insertions(+), 175 deletions(-) diff --git a/src/code_80091750.c b/src/code_80091750.c index def1f448e..927572463 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -4944,6 +4944,7 @@ void func_8009CE64(s32 arg0) { switch (gNextDemoId) { /* switch 4 */ case 0: /* switch 4 */ SetCourseByClass(GetMarioRaceway()); + CourseManager_SetCup(GetFlowerCup()); gCurrentCourseId = 0; gScreenModeSelection = 0; gPlayerCountSelection1 = 1; @@ -4953,6 +4954,7 @@ void func_8009CE64(s32 arg0) { break; case 1: /* switch 4 */ SetCourseByClass(GetLuigiRaceway()); + CourseManager_SetCup(GetMushroomCup()); gCurrentCourseId = (s16) 1; gScreenModeSelection = (s32) 1; gPlayerCountSelection1 = 2; @@ -4963,6 +4965,7 @@ void func_8009CE64(s32 arg0) { break; case 2: /* switch 4 */ SetCourseByClass(GetKalimariDesert()); + CourseManager_SetCup(GetMushroomCup()); gCurrentCourseId = COURSE_KALAMARI_DESERT; gScreenModeSelection = 0; gPlayerCountSelection1 = (s32) 1; @@ -4972,6 +4975,7 @@ void func_8009CE64(s32 arg0) { break; case 3: /* switch 4 */ SetCourseByClass(GetWarioStadium()); + CourseManager_SetCup(GetStarCup()); gCurrentCourseId = 0x000E; gScreenModeSelection = 3; gPlayerCountSelection1 = 3; @@ -4983,6 +4987,7 @@ void func_8009CE64(s32 arg0) { break; case 4: /* switch 4 */ SetCourseByClass(GetBowsersCastle()); + CourseManager_SetCup(GetStarCup()); gCurrentCourseId = 2; gScreenModeSelection = 0; gPlayerCountSelection1 = (s32) 1; @@ -4992,6 +4997,7 @@ void func_8009CE64(s32 arg0) { break; case 5: /* switch 4 */ SetCourseByClass(GetSherbetLand()); + CourseManager_SetCup(GetFlowerCup()); gCurrentCourseId = 0x000C; gScreenModeSelection = 3; gPlayerCountSelection1 = 4; @@ -5010,8 +5016,8 @@ void func_8009CE64(s32 arg0) { gNextDemoId = 0; } printf("\nSELECTED!!!!!\n"); - // SetCupIndex(gCurrentCourseId); // World->GetCourse - gCupSelection = GetCupIndex(); // gCupSelectionByCourseId[gCurrentCourseId]; + + //gCupSelection = GetCupIndex(); // gCupSelectionByCourseId[gCurrentCourseId]; D_800DC540 = (s32) GetCupIndex(); gCourseIndexInCup = GetCupCursorPosition(); // gCupCourseSelection = (s8) gPerCupIndexByCourseId[gCurrentCourseId]; diff --git a/src/engine/Cup.cpp b/src/engine/Cup.cpp index edbc0ebbd..85d7fed44 100644 --- a/src/engine/Cup.cpp +++ b/src/engine/Cup.cpp @@ -1,9 +1,10 @@ #include "Cup.h" #include "courses/Course.h" -Cup::Cup(const char* name, std::vector courses) { - this->Name = name; - this->Courses = courses; +Cup::Cup(const char* id, const char* name, std::vector courses) { + Id = id; + Name = name; + Courses = courses; if (Courses.size() != 4) { throw std::invalid_argument("A cup must contain exactly 4 courses."); diff --git a/src/engine/Cup.h b/src/engine/Cup.h index c029cecd5..4266c0126 100644 --- a/src/engine/Cup.h +++ b/src/engine/Cup.h @@ -9,12 +9,13 @@ class Course; // <-- Forward declare class Cup { public: + const char* Id; const char* Name; u8 *Thumbnail; size_t CursorPosition = 0; // Course index in cup std::vector Courses; - explicit Cup(const char* name, std::vector courses); + explicit Cup(const char* id, const char* name, std::vector courses); virtual void ShuffleCourses(); diff --git a/src/engine/World.cpp b/src/engine/World.cpp index 346446bf2..01c6f13bd 100644 --- a/src/engine/World.cpp +++ b/src/engine/World.cpp @@ -26,22 +26,12 @@ World::World() {} Course* CurrentCourse; Cup* CurrentCup; -Cup* World::AddCup(const char* name, std::vector courses) { - // Create a new unique_ptr for Cup - auto cup = std::make_shared(name, courses); - - // Get raw pointer before moving the ownership - Cup* tmp = cup.get(); - - // Add the Cup to the container - Cups.push_back(std::move(cup)); - - // Return the raw pointer to the Cup - return tmp; +void World::AddCourse(Course* course) { + gWorldInstance.Courses.push_back(course); } -Cup* World::GetCup() { - return Cups[CupIndex].get(); +void World::AddCup(Cup* cup) { + Cups.push_back(cup); } void World::SetCourseFromCup() { @@ -96,15 +86,6 @@ TrainCrossing* World::AddCrossing(Vec3f position, u32 waypointMin, u32 waypointM return crossing.get(); } -//const char* World::GetCupName() { -// //return this->Cups[CupIndex].Name; -//} - -void World::SetCupIndex(int16_t courseId) { - - this->CupIndex = courseId; -} - u32 World::GetCupIndex() { return this->CupIndex; } @@ -117,9 +98,10 @@ u32 World::NextCup() { hack = 2; } - if (this->CupIndex < Cups.size() - 2) { + if (CupIndex < Cups.size() - hack) { CupIndex++; - CurrentCup = Cups[CupIndex].get(); + CurrentCup = Cups[CupIndex]; + CurrentCup->CursorPosition = 0; return CupIndex; } } @@ -127,14 +109,17 @@ u32 World::NextCup() { u32 World::PreviousCup() { if (CupIndex > 0) { CupIndex--; - CurrentCup = Cups[CupIndex].get(); + CurrentCup = Cups[CupIndex]; + CurrentCup->CursorPosition = 0; return CupIndex; } } -void World::SetCup() { - CurrentCup = Cups[CupIndex].get(); - CurrentCup->CursorPosition = 0; +void World::SetCup(Cup* cup) { + if (cup) { + CurrentCup = cup; + CurrentCup->CursorPosition = 0; + } } CProperties* World::GetCourseProps() { @@ -144,9 +129,10 @@ CProperties* World::GetCourseProps() { return nullptr; } -void World::SetCourse(const char*name) { +void World::SetCourse(const char* name) { + //! @todo Use content dictionary instead for (size_t i = 0; i < Courses.size(); i++) { - if (Courses[i]->Props.Name == name) { + if (strcmp(Courses[i]->Props.Name, name) == 0) { CurrentCourse = Courses[i]; break; } diff --git a/src/engine/World.h b/src/engine/World.h index 6345d9e6e..a2947499a 100644 --- a/src/engine/World.h +++ b/src/engine/World.h @@ -67,6 +67,8 @@ class World { public: explicit World(); + void AddCourse(Course* course); + AActor* AddActor(std::unique_ptr actor); void TickActors(); void DrawActors(Camera* camera); @@ -74,7 +76,6 @@ public: Object* AddObject(std::unique_ptr object); - CProperties* GetCourseProps(); void TickObjects(); void DrawObjects(Camera *camera); @@ -82,15 +83,13 @@ public: void DestroyObjects(); Object *GetObjectByIndex(size_t); - Cup* AddCup(const char* name, std::vector courses); - Cup* GetCup(); + void AddCup(Cup*); + void SetCup(Cup* cup); const char* GetCupName(); u32 GetCupIndex(); - void SetCupIndex(int16_t courseId); u32 NextCup(); u32 PreviousCup(); void SetCourseFromCup(); - void SetCup(); World* GetWorld(void); @@ -105,7 +104,7 @@ public: Course* CurrentCourse; Cup* CurrentCup; - std::vector> Cups; + std::vector Cups; size_t CupIndex = 1; std::vector> GameObjects; diff --git a/src/engine/courses/BansheeBoardwalk.cpp b/src/engine/courses/BansheeBoardwalk.cpp index 0e94885c7..09517031d 100644 --- a/src/engine/courses/BansheeBoardwalk.cpp +++ b/src/engine/courses/BansheeBoardwalk.cpp @@ -109,8 +109,6 @@ void BansheeBoardwalk::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_banshee_boardwalk_item_box_spawns)); } -void BansheeBoardwalk::Init() { } - // Likely sets minimap boundaries void BansheeBoardwalk::MinimapSettings() { D_80165880 = dma_textures((const char*)gTextureGhosts, 0x4CC2, 0xD980); diff --git a/src/engine/courses/BansheeBoardwalk.h b/src/engine/courses/BansheeBoardwalk.h index 7446c9af4..c8ef58a6b 100644 --- a/src/engine/courses/BansheeBoardwalk.h +++ b/src/engine/courses/BansheeBoardwalk.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/BigDonut.cpp b/src/engine/courses/BigDonut.cpp index daca979c0..18c8e65a4 100644 --- a/src/engine/courses/BigDonut.cpp +++ b/src/engine/courses/BigDonut.cpp @@ -103,8 +103,6 @@ void BigDonut::LoadTextures() { void BigDonut::SpawnActors() {} -void BigDonut::Init() { } - // Likely sets minimap boundaries void BigDonut::MinimapSettings() { D_8018D2A0 = 0.0257f; diff --git a/src/engine/courses/BigDonut.h b/src/engine/courses/BigDonut.h index 1c7865b47..41fd0457f 100644 --- a/src/engine/courses/BigDonut.h +++ b/src/engine/courses/BigDonut.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/BlockFort.cpp b/src/engine/courses/BlockFort.cpp index 27ac81305..e81550a64 100644 --- a/src/engine/courses/BlockFort.cpp +++ b/src/engine/courses/BlockFort.cpp @@ -106,8 +106,6 @@ void BlockFort::LoadTextures() { void BlockFort::SpawnActors() {} -void BlockFort::Init() { } - // Likely sets minimap boundaries void BlockFort::MinimapSettings() { D_8018D2A0 = 0.0335f; diff --git a/src/engine/courses/BlockFort.h b/src/engine/courses/BlockFort.h index 60755878f..eba210234 100644 --- a/src/engine/courses/BlockFort.h +++ b/src/engine/courses/BlockFort.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/BowsersCastle.cpp b/src/engine/courses/BowsersCastle.cpp index 5e1593b0c..58aab3456 100644 --- a/src/engine/courses/BowsersCastle.cpp +++ b/src/engine/courses/BowsersCastle.cpp @@ -111,8 +111,6 @@ void BowsersCastle::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_bowsers_castle_item_box_spawns)); } -void BowsersCastle::Init() { } - // Likely sets minimap boundaries void BowsersCastle::MinimapSettings() { D_8018D2C0[0] = 265; diff --git a/src/engine/courses/BowsersCastle.h b/src/engine/courses/BowsersCastle.h index 2c00d6e80..e0ee8918d 100644 --- a/src/engine/courses/BowsersCastle.h +++ b/src/engine/courses/BowsersCastle.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/ChocoMountain.cpp b/src/engine/courses/ChocoMountain.cpp index fe7b32281..bfb1950c3 100644 --- a/src/engine/courses/ChocoMountain.cpp +++ b/src/engine/courses/ChocoMountain.cpp @@ -110,8 +110,6 @@ void ChocoMountain::SpawnActors() { spawn_falling_rocks((struct ActorSpawnData*)LOAD_ASSET_RAW((const char*)d_course_choco_mountain_falling_rock_spawns)); } -void ChocoMountain::Init() { } - // Likely sets minimap boundaries void ChocoMountain::MinimapSettings() { D_8018D2A0 = 0.022f; diff --git a/src/engine/courses/ChocoMountain.h b/src/engine/courses/ChocoMountain.h index 8bf07ffdf..c45d6ff1f 100644 --- a/src/engine/courses/ChocoMountain.h +++ b/src/engine/courses/ChocoMountain.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/Course.cpp b/src/engine/courses/Course.cpp index 8c6301dc1..f844adcdf 100644 --- a/src/engine/courses/Course.cpp +++ b/src/engine/courses/Course.cpp @@ -125,8 +125,6 @@ void Course::SpawnActors() { } -void Course::Init() { -} void Course::InitClouds() { if (this->Props.Clouds) { init_clouds(this->Props.Clouds); diff --git a/src/engine/courses/Course.h b/src/engine/courses/Course.h index 94f8fa3a7..00eb54f46 100644 --- a/src/engine/courses/Course.h +++ b/src/engine/courses/Course.h @@ -92,7 +92,6 @@ public: virtual void Load(Vtx* vtx, Gfx *gfx); // Load custom course virtual void LoadTextures(); virtual void SpawnActors(); - virtual void Init(); virtual void InitClouds(); virtual void UpdateClouds(s32, Camera*); virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7); diff --git a/src/engine/courses/DKJungle.cpp b/src/engine/courses/DKJungle.cpp index f47252daa..bc8257548 100644 --- a/src/engine/courses/DKJungle.cpp +++ b/src/engine/courses/DKJungle.cpp @@ -117,8 +117,6 @@ void DKJungle::SpawnActors() { func_80298D10(); } -void DKJungle::Init() { } - // Likely sets minimap boundaries void DKJungle::MinimapSettings() { D_8018D2A0 = 0.0155f; diff --git a/src/engine/courses/DKJungle.h b/src/engine/courses/DKJungle.h index e9b4af9ed..bbe4e1cbf 100644 --- a/src/engine/courses/DKJungle.h +++ b/src/engine/courses/DKJungle.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/DoubleDeck.cpp b/src/engine/courses/DoubleDeck.cpp index 189dd3301..43b4b47c7 100644 --- a/src/engine/courses/DoubleDeck.cpp +++ b/src/engine/courses/DoubleDeck.cpp @@ -106,8 +106,6 @@ void DoubleDeck::LoadTextures() { void DoubleDeck::SpawnActors() {} -void DoubleDeck::Init() { } - // Likely sets minimap boundaries void DoubleDeck::MinimapSettings() { D_8018D2A0 = 0.0285f; diff --git a/src/engine/courses/DoubleDeck.h b/src/engine/courses/DoubleDeck.h index 989f6eec7..5d453742e 100644 --- a/src/engine/courses/DoubleDeck.h +++ b/src/engine/courses/DoubleDeck.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/FrappeSnowland.cpp b/src/engine/courses/FrappeSnowland.cpp index 28a5ef15e..8236c345a 100644 --- a/src/engine/courses/FrappeSnowland.cpp +++ b/src/engine/courses/FrappeSnowland.cpp @@ -113,7 +113,6 @@ void FrappeSnowland::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_frappe_snowland_item_box_spawns)); } -void FrappeSnowland::Init() { } void FrappeSnowland::InitClouds() { s32 var_s0; s32 var_s4; diff --git a/src/engine/courses/FrappeSnowland.h b/src/engine/courses/FrappeSnowland.h index cc9af2f3e..f01943015 100644 --- a/src/engine/courses/FrappeSnowland.h +++ b/src/engine/courses/FrappeSnowland.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void InitClouds() override; virtual void UpdateClouds(s32 sp1C, Camera* camera) override; virtual void MinimapSettings() override; diff --git a/src/engine/courses/KalimariDesert.cpp b/src/engine/courses/KalimariDesert.cpp index 691e4c112..c88e52f9a 100644 --- a/src/engine/courses/KalimariDesert.cpp +++ b/src/engine/courses/KalimariDesert.cpp @@ -148,8 +148,6 @@ void KalimariDesert::SpawnActors() { rrxing->crossingTrigger = crossing1; } -void KalimariDesert::Init() {} - // Likely sets minimap boundaries void KalimariDesert::MinimapSettings() { D_8018D2C0[0] = 263; diff --git a/src/engine/courses/KalimariDesert.h b/src/engine/courses/KalimariDesert.h index 345b807c1..337be914e 100644 --- a/src/engine/courses/KalimariDesert.h +++ b/src/engine/courses/KalimariDesert.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; diff --git a/src/engine/courses/KoopaTroopaBeach.cpp b/src/engine/courses/KoopaTroopaBeach.cpp index 35532b79c..fc0419984 100644 --- a/src/engine/courses/KoopaTroopaBeach.cpp +++ b/src/engine/courses/KoopaTroopaBeach.cpp @@ -112,8 +112,6 @@ void KoopaTroopaBeach::SpawnActors() { spawn_palm_trees((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_tree_spawn)); } -void KoopaTroopaBeach::Init() {} - // Likely sets minimap boundaries void KoopaTroopaBeach::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust3, 0x3C8U, 0x1000)); diff --git a/src/engine/courses/KoopaTroopaBeach.h b/src/engine/courses/KoopaTroopaBeach.h index 9a1ed3612..b930bbd95 100644 --- a/src/engine/courses/KoopaTroopaBeach.h +++ b/src/engine/courses/KoopaTroopaBeach.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; diff --git a/src/engine/courses/LuigiRaceway.cpp b/src/engine/courses/LuigiRaceway.cpp index c81ccb453..2f1ff2751 100644 --- a/src/engine/courses/LuigiRaceway.cpp +++ b/src/engine/courses/LuigiRaceway.cpp @@ -113,8 +113,6 @@ void LuigiRaceway::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_luigi_raceway_item_box_spawns)); } -void LuigiRaceway::Init() {} - // Likely sets minimap boundaries void LuigiRaceway::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust2, 0x4F4U, 0xC00)); diff --git a/src/engine/courses/LuigiRaceway.h b/src/engine/courses/LuigiRaceway.h index ef4cb5783..0f48c40ab 100644 --- a/src/engine/courses/LuigiRaceway.h +++ b/src/engine/courses/LuigiRaceway.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; diff --git a/src/engine/courses/MarioRaceway.cpp b/src/engine/courses/MarioRaceway.cpp index 4d4e2725f..2900ad36e 100644 --- a/src/engine/courses/MarioRaceway.cpp +++ b/src/engine/courses/MarioRaceway.cpp @@ -132,8 +132,6 @@ void MarioRaceway::SpawnActors() { actor->flags |= 0x4000; } -void MarioRaceway::Init() {} - // Likely sets minimap boundaries void MarioRaceway::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust5, 0x443, 0x1000)); diff --git a/src/engine/courses/MarioRaceway.h b/src/engine/courses/MarioRaceway.h index 9c4f94b24..6857c19a2 100644 --- a/src/engine/courses/MarioRaceway.h +++ b/src/engine/courses/MarioRaceway.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; diff --git a/src/engine/courses/MooMooFarm.cpp b/src/engine/courses/MooMooFarm.cpp index bc9889e10..f755dde39 100644 --- a/src/engine/courses/MooMooFarm.cpp +++ b/src/engine/courses/MooMooFarm.cpp @@ -125,8 +125,6 @@ void MooMooFarm::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_moo_moo_farm_item_box_spawns)); } -void MooMooFarm::Init() {} - // Likely sets minimap boundaries void MooMooFarm::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust0, 0x479, 0xC00)); diff --git a/src/engine/courses/MooMooFarm.h b/src/engine/courses/MooMooFarm.h index 70c3f51b2..71eff8913 100644 --- a/src/engine/courses/MooMooFarm.h +++ b/src/engine/courses/MooMooFarm.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; diff --git a/src/engine/courses/PodiumCeremony.cpp b/src/engine/courses/PodiumCeremony.cpp index b42c2ec8a..08da45829 100644 --- a/src/engine/courses/PodiumCeremony.cpp +++ b/src/engine/courses/PodiumCeremony.cpp @@ -105,8 +105,6 @@ void PodiumCeremony::SpawnActors() { spawn_piranha_plants((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_piranha_plant_spawn)); } -void PodiumCeremony::Init() { } - // Likely sets minimap boundaries void PodiumCeremony::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust4, 0x3F8, 0x1000)); diff --git a/src/engine/courses/PodiumCeremony.h b/src/engine/courses/PodiumCeremony.h index c2abc3dc8..c8f8b7c06 100644 --- a/src/engine/courses/PodiumCeremony.h +++ b/src/engine/courses/PodiumCeremony.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/RainbowRoad.cpp b/src/engine/courses/RainbowRoad.cpp index 6f4a0db50..038a40541 100644 --- a/src/engine/courses/RainbowRoad.cpp +++ b/src/engine/courses/RainbowRoad.cpp @@ -107,8 +107,6 @@ void RainbowRoad::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_rainbow_road_item_box_spawns)); } -void RainbowRoad::Init() {} - void RainbowRoad::InitClouds() { init_stars(this->Props.Clouds); } diff --git a/src/engine/courses/RainbowRoad.h b/src/engine/courses/RainbowRoad.h index 3fd3a0333..6c32adb51 100644 --- a/src/engine/courses/RainbowRoad.h +++ b/src/engine/courses/RainbowRoad.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void InitClouds() override; virtual void UpdateClouds(s32, Camera*) override; virtual void MinimapSettings() override; diff --git a/src/engine/courses/RoyalRaceway.cpp b/src/engine/courses/RoyalRaceway.cpp index c83b2f196..e252d866f 100644 --- a/src/engine/courses/RoyalRaceway.cpp +++ b/src/engine/courses/RoyalRaceway.cpp @@ -120,8 +120,6 @@ void RoyalRaceway::SpawnActors() { spawn_piranha_plants((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_piranha_plant_spawn)); } -void RoyalRaceway::Init() {} - // Likely sets minimap boundaries void RoyalRaceway::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust4, 0x3F8, 0x1000)); diff --git a/src/engine/courses/RoyalRaceway.h b/src/engine/courses/RoyalRaceway.h index 219f7c2f5..07498c6eb 100644 --- a/src/engine/courses/RoyalRaceway.h +++ b/src/engine/courses/RoyalRaceway.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; diff --git a/src/engine/courses/SherbetLand.cpp b/src/engine/courses/SherbetLand.cpp index 538b96c2a..38439eb95 100644 --- a/src/engine/courses/SherbetLand.cpp +++ b/src/engine/courses/SherbetLand.cpp @@ -107,8 +107,6 @@ void SherbetLand::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_sherbet_land_item_box_spawns)); } -void SherbetLand::Init() {} - // Likely sets minimap boundaries void SherbetLand::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust1, 0x485, 0xC00)); diff --git a/src/engine/courses/SherbetLand.h b/src/engine/courses/SherbetLand.h index 769adef85..7ab4f9028 100644 --- a/src/engine/courses/SherbetLand.h +++ b/src/engine/courses/SherbetLand.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; diff --git a/src/engine/courses/Skyscraper.cpp b/src/engine/courses/Skyscraper.cpp index ac6dde347..82a16ad93 100644 --- a/src/engine/courses/Skyscraper.cpp +++ b/src/engine/courses/Skyscraper.cpp @@ -106,8 +106,6 @@ void Skyscraper::LoadTextures() { void Skyscraper::SpawnActors() {} -void Skyscraper::Init() { } - // Likely sets minimap boundaries void Skyscraper::MinimapSettings() { D_8018D2A0 = 0.0445f; diff --git a/src/engine/courses/Skyscraper.h b/src/engine/courses/Skyscraper.h index a7b49d4bc..a37c6e6ff 100644 --- a/src/engine/courses/Skyscraper.h +++ b/src/engine/courses/Skyscraper.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; //virtual void InitClouds() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; diff --git a/src/engine/courses/TestCourse.cpp b/src/engine/courses/TestCourse.cpp index efc8f0834..dcc64ec79 100644 --- a/src/engine/courses/TestCourse.cpp +++ b/src/engine/courses/TestCourse.cpp @@ -165,8 +165,6 @@ struct ActorSpawnData rocks[] = { rrxing->crossingTrigger = crossing1; } -void TestCourse::Init() {} - // Likely sets minimap boundaries void TestCourse::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust5, 0x443, 0x1000)); diff --git a/src/engine/courses/TestCourse.h b/src/engine/courses/TestCourse.h index 313b1ac58..9d988e4c6 100644 --- a/src/engine/courses/TestCourse.h +++ b/src/engine/courses/TestCourse.h @@ -27,7 +27,6 @@ public: virtual void Load() override; virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; diff --git a/src/engine/courses/ToadsTurnpike.cpp b/src/engine/courses/ToadsTurnpike.cpp index 5bba22c10..d66faf571 100644 --- a/src/engine/courses/ToadsTurnpike.cpp +++ b/src/engine/courses/ToadsTurnpike.cpp @@ -112,7 +112,6 @@ void ToadsTurnpike::SpawnActors() { spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_toads_turnpike_item_box_spawns)); } -void ToadsTurnpike::Init() {} void ToadsTurnpike::InitClouds() { init_stars(this->Props.Clouds); } diff --git a/src/engine/courses/ToadsTurnpike.h b/src/engine/courses/ToadsTurnpike.h index fc6078721..8bba69de5 100644 --- a/src/engine/courses/ToadsTurnpike.h +++ b/src/engine/courses/ToadsTurnpike.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void InitClouds() override; virtual void UpdateClouds(s32, Camera*) override; virtual void MinimapSettings() override; diff --git a/src/engine/courses/WarioStadium.cpp b/src/engine/courses/WarioStadium.cpp index 7d299e703..bc90d15b6 100644 --- a/src/engine/courses/WarioStadium.cpp +++ b/src/engine/courses/WarioStadium.cpp @@ -107,20 +107,7 @@ void WarioStadium::LoadTextures() { } void WarioStadium::SpawnActors() { - Vec3f position; - Vec3f velocity = { 0.0f, 0.0f, 0.0f }; - Vec3s rotation = { 0, 0, 0 }; - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_wario_stadium_item_box_spawns)); - // vec3f_set(position, -131.0f, 83.0f, 286.0f); - // position[0] *= gCourseDirection; - // add_actor_to_empty_slot(position, rotation, velocity, ACTOR_WARIO_SIGN); - // vec3f_set(position, -2353.0f, 72.0f, -1608.0f); - // position[0] *= gCourseDirection; - // add_actor_to_empty_slot(position, rotation, velocity, ACTOR_WARIO_SIGN); - // vec3f_set(position, -2622.0f, 79.0f, 739.0f); - // position[0] *= gCourseDirection; - // add_actor_to_empty_slot(position, rotation, velocity, ACTOR_WARIO_SIGN); Vec3f pos = {-131.0f, 83.0f, 286.0f}; pos[0] *= gCourseDirection; @@ -135,7 +122,6 @@ void WarioStadium::SpawnActors() { gWorldInstance.AddActor(std::make_unique(pos3)); } -void WarioStadium::Init() {} void WarioStadium::InitClouds() { init_stars(this->Props.Clouds); } diff --git a/src/engine/courses/WarioStadium.h b/src/engine/courses/WarioStadium.h index c2f56564c..f41535be1 100644 --- a/src/engine/courses/WarioStadium.h +++ b/src/engine/courses/WarioStadium.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void InitClouds() override; virtual void UpdateClouds(s32,Camera*) override; virtual void MinimapSettings() override; diff --git a/src/engine/courses/YoshiValley.cpp b/src/engine/courses/YoshiValley.cpp index 796292985..fe7672d7e 100644 --- a/src/engine/courses/YoshiValley.cpp +++ b/src/engine/courses/YoshiValley.cpp @@ -117,8 +117,6 @@ void YoshiValley::SpawnActors() { add_actor_to_empty_slot(position, rotation, velocity, ACTOR_YOSHI_EGG); } -void YoshiValley::Init() {} - // Likely sets minimap boundaries void YoshiValley::MinimapSettings() { D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust0, 0x479, 0xC00)); diff --git a/src/engine/courses/YoshiValley.h b/src/engine/courses/YoshiValley.h index a0976968d..8fe294019 100644 --- a/src/engine/courses/YoshiValley.h +++ b/src/engine/courses/YoshiValley.h @@ -26,7 +26,6 @@ public: // course_texture* textures, const char* displaylists, size_t dlSize); virtual void LoadTextures() override; virtual void SpawnActors() override; - virtual void Init() override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; diff --git a/src/menus.c b/src/menus.c index dd37671af..676169ae6 100644 --- a/src/menus.c +++ b/src/menus.c @@ -1684,7 +1684,6 @@ GLOBAL_ASM("asm/non_matchings/menus/player_select_menu_act.s") u32 WorldNextCup(void); u32 WorldPreviousCup(void); u32 GetCupIndex(void); -void SetCup(void); // Handle navigating the course menu interface void course_select_menu_act(struct Controller* arg0, u16 arg1) { @@ -1713,8 +1712,6 @@ void course_select_menu_act(struct Controller* arg0, u16 arg1) { } D_800DC540 = GetCupIndex(); - //! @todo SetCourse(); - SetCup(); gCurrentCourseId = gCupCourseOrder[gCupSelection][gCourseIndexInCup]; SetCourseFromCup(); if ((buttonAndStickPress & B_BUTTON) != 0) { @@ -1842,7 +1839,7 @@ void func_800B3F74(s32 menuSelection) { case 10: { gIsMirrorMode = 0; gEnableDebugMode = CVarGetInteger("gEnableDebugMode", 0); - SetCupIndex(MUSHROOM_CUP); + CourseManager_SetCup(GetMushroomCup()); gCupSelection = MUSHROOM_CUP; gCourseIndexInCup = 0; gTimeTrialDataCourseIndex = 0; @@ -1953,13 +1950,13 @@ void func_800B3F74(s32 menuSelection) { case 3: case 13: { if (gModeSelection == BATTLE) { - SetCupIndex(BATTLE_CUP); + CourseManager_SetCup(GetBattleCup()); // gCupSelection = BATTLE_CUP; D_800DC540 = 4; D_8018EDEC = 4; } else { - if (GetCupIndex() == BATTLE_CUP) { - SetCupIndex(MUSHROOM_CUP); + if (GetCup() == GetBattleCup()) { + CourseManager_SetCup(GetMushroomCup()); // gCupSelection = MUSHROOM_CUP; } D_8018EDEC = 1; diff --git a/src/networking/start_game.c b/src/networking/start_game.c index ac70aa771..ab2cc4e28 100644 --- a/src/networking/start_game.c +++ b/src/networking/start_game.c @@ -53,7 +53,7 @@ void network_cup_vote(uint32_t course) { void set_course(const char* data) { if (data != NULL) { - SetCupIndex(data[0]); + //SetCup(data[0]); gCupSelection = data[0]; // gCurrentCourseId = gCupCourseOrder[gCupSelection][COURSE_ONE]; //! @todo SetCourse(); diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 163b573f4..22c14b38f 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -49,7 +49,8 @@ GameEngine::GameEngine() { !patches_path.empty() && std::filesystem::exists(patches_path)) { if (std::filesystem::is_directory(patches_path)) { for (const auto& p : std::filesystem::recursive_directory_iterator(patches_path)) { - if (StringHelper::IEquals(p.path().extension().string(), ".otr")) { + auto ext = p.path().extension().string(); + if (StringHelper::IEquals(ext, ".otr") || StringHelper::IEquals(ext, ".o2r")) { OTRFiles.push_back(p.path().generic_string()); } } diff --git a/src/port/Game.cpp b/src/port/Game.cpp index 11d78c73e..9787f4562 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -1,8 +1,11 @@ #include +#include "Game.h" + #include #include "Engine.h" #include "engine/World.h" +#include "engine/courses/Course.h" #include "engine/courses/MarioRaceway.h" #include "engine/courses/ChocoMountain.h" #include "engine/courses/BowsersCastle.h" @@ -71,6 +74,12 @@ BigDonut* gBigDonut; PodiumCeremony* gPodiumCeremony; TestCourse* gTestCourse; +Cup* gMushroomCup; +Cup* gFlowerCup; +Cup* gStarCup; +Cup* gSpecialCup; +Cup* gBattleCup; + void CustomEngineInit() { gMarioRaceway = new MarioRaceway(); @@ -97,44 +106,45 @@ void CustomEngineInit() { gTestCourse = new TestCourse(); /* Add all courses to the global course list */ - gWorldInstance.Courses.push_back(gMarioRaceway); - gWorldInstance.Courses.push_back(gChocoMountain); - gWorldInstance.Courses.push_back(gBowsersCastle); - gWorldInstance.Courses.push_back(gBansheeBoardwalk); - gWorldInstance.Courses.push_back(gYoshiValley); - gWorldInstance.Courses.push_back(gFrappeSnowland); - gWorldInstance.Courses.push_back(gKoopaTroopaBeach); - gWorldInstance.Courses.push_back(gRoyalRaceway); - gWorldInstance.Courses.push_back(gLuigiRaceway); - gWorldInstance.Courses.push_back(gMooMooFarm); - gWorldInstance.Courses.push_back(gToadsTurnpike); - gWorldInstance.Courses.push_back(gKalimariDesert); - gWorldInstance.Courses.push_back(gSherbetLand); - gWorldInstance.Courses.push_back(gRainbowRoad); - gWorldInstance.Courses.push_back(gWarioStadium); - gWorldInstance.Courses.push_back(gBlockFort); - gWorldInstance.Courses.push_back(gSkyscraper); - gWorldInstance.Courses.push_back(gDoubleDeck); - gWorldInstance.Courses.push_back(gDkJungle); - gWorldInstance.Courses.push_back(gBigDonut); - gWorldInstance.Courses.push_back(gTestCourse); + gWorldInstance.AddCourse(gMarioRaceway); + gWorldInstance.AddCourse(gChocoMountain); + gWorldInstance.AddCourse(gBowsersCastle); + gWorldInstance.AddCourse(gBansheeBoardwalk); + gWorldInstance.AddCourse(gYoshiValley); + gWorldInstance.AddCourse(gFrappeSnowland); + gWorldInstance.AddCourse(gKoopaTroopaBeach); + gWorldInstance.AddCourse(gRoyalRaceway); + gWorldInstance.AddCourse(gLuigiRaceway); + gWorldInstance.AddCourse(gMooMooFarm); + gWorldInstance.AddCourse(gToadsTurnpike); + gWorldInstance.AddCourse(gKalimariDesert); + gWorldInstance.AddCourse(gSherbetLand); + gWorldInstance.AddCourse(gRainbowRoad); + gWorldInstance.AddCourse(gWarioStadium); + gWorldInstance.AddCourse(gBlockFort); + gWorldInstance.AddCourse(gSkyscraper); + gWorldInstance.AddCourse(gDoubleDeck); + gWorldInstance.AddCourse(gDkJungle); + gWorldInstance.AddCourse(gBigDonut); + gWorldInstance.AddCourse(gTestCourse); + + gMushroomCup = new Cup("mk:mushroom_cup", "mushroom cup", std::vector{ gLuigiRaceway, gMooMooFarm, gKoopaTroopaBeach, gKalimariDesert }); + gFlowerCup = new Cup("mk:flower_cup", "flower cup", std::vector{ gToadsTurnpike, gFrappeSnowland, gChocoMountain, gMarioRaceway }); + gStarCup = new Cup("mk:star_cup", "star cup", std::vector{ gWarioStadium, gSherbetLand, gRoyalRaceway, gBowsersCastle }); + gSpecialCup = new Cup("mk:special_cup", "special cup", std::vector{ gDkJungle, gYoshiValley, gBansheeBoardwalk, gRainbowRoad }); + gBattleCup = new Cup("mk:battle_cup", "battle", std::vector{ gBigDonut, gBlockFort, gDoubleDeck, gSkyscraper }); /* Instantiate Cups */ - Cup* mushroom = gWorldInstance.AddCup( - "mushroom cup", std::vector{ gLuigiRaceway, gMooMooFarm, gKoopaTroopaBeach, gKalimariDesert }); - Cup* flower = gWorldInstance.AddCup( - "flower cup", std::vector{ gToadsTurnpike, gFrappeSnowland, gChocoMountain, gMarioRaceway }); - Cup* star = gWorldInstance.AddCup( - "star cup", std::vector{ gWarioStadium, gSherbetLand, gRoyalRaceway, gBowsersCastle }); - Cup* special = gWorldInstance.AddCup( - "special cup", std::vector{ gDkJungle, gYoshiValley, gBansheeBoardwalk, gRainbowRoad }); - Cup* battle = - gWorldInstance.AddCup("battle", std::vector{ gBigDonut, gBlockFort, gDoubleDeck, gSkyscraper }); + gWorldInstance.AddCup(gMushroomCup); + gWorldInstance.AddCup(gFlowerCup); + gWorldInstance.AddCup(gStarCup); + gWorldInstance.AddCup(gSpecialCup); + gWorldInstance.AddCup(gBattleCup); /* Set default course; mario raceway */ gWorldInstance.CurrentCourse = gMarioRaceway; - gWorldInstance.CurrentCup = flower; - gWorldInstance.CurrentCup->CursorPosition = 2; + gWorldInstance.CurrentCup = gFlowerCup; + gWorldInstance.CurrentCup->CursorPosition = 3; } extern "C" { @@ -151,12 +161,12 @@ extern "C" { return gWorldInstance.PreviousCup(); } - void SetCupIndex(int16_t courseId) { - gWorldInstance.SetCupIndex(courseId); + void CourseManager_SetCup(void* cup) { + gWorldInstance.SetCup((Cup*)cup); } - void SetCup() { - gWorldInstance.SetCup(); + void* GetCup() { + return gWorldInstance.CurrentCup; } u32 GetCupIndex(void) { @@ -165,7 +175,7 @@ extern "C" { } const char* GetCupName(void) { - return gWorldInstance.Cups[gWorldInstance.CupIndex]->Name; + return gWorldInstance.CurrentCup->Name; } void LoadCourse() { @@ -521,8 +531,24 @@ extern "C" { return gPodiumCeremony; } - void* GetTestCourse(void) { - return gTestCourse; + void* GetMushroomCup(void) { + return gMushroomCup; + } + + void* GetFlowerCup(void) { + return gFlowerCup; + } + + void* GetStarCup(void) { + return gStarCup; + } + + void* GetSpecialCup(void) { + return gSpecialCup; + } + + void* GetBattleCup(void) { + return gBattleCup; } } diff --git a/src/port/Game.h b/src/port/Game.h index 1e923de6b..64fa0fb3a 100644 --- a/src/port/Game.h +++ b/src/port/Game.h @@ -1,15 +1,18 @@ +#ifndef _GAME_H +#define _GAME_H + #include #include "engine/Engine.h" #ifdef __cplusplus extern "C" { +#include "camera.h" #endif + u32 WorldNextCup(void); u32 WorldPreviousCup(void); -void SetCupIndex(int16_t courseId); -void SetCup(); u32 GetCupIndex(void); const char* GetCupName(void); @@ -25,6 +28,8 @@ void SetCourse(const char* name); void NextCourse(); void PreviousCourse(); +void CourseManager_SetCup(void*); + void CourseManager_SpawnVehicles(); void CourseManager_UpdateVehicles(); @@ -128,7 +133,18 @@ void* GetBigDonut(void); void* GetPodiumCeremony(void); -void* GetTestCourse(void); +void* GetMushroomCup(void); + +void* GetFlowerCup(void); + +void* GetStarCup(void); + +void* GetSpecialCup(void); + +void* GetBattleCup(void); + #ifdef __cplusplus } -#endif \ No newline at end of file +#endif + +#endif // _GAME_H \ No newline at end of file