mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-06-05 03:08:53 -04:00
Refactors (#114)
* Update Engine.cpp * fix * Add Actors * Refactor * Update Game.cpp * Refactors as per review
This commit is contained in:
+8
-2
@@ -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];
|
||||
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
#include "Cup.h"
|
||||
#include "courses/Course.h"
|
||||
|
||||
Cup::Cup(const char* name, std::vector<Course*> courses) {
|
||||
this->Name = name;
|
||||
this->Courses = courses;
|
||||
Cup::Cup(const char* id, const char* name, std::vector<Course*> courses) {
|
||||
Id = id;
|
||||
Name = name;
|
||||
Courses = courses;
|
||||
|
||||
if (Courses.size() != 4) {
|
||||
throw std::invalid_argument("A cup must contain exactly 4 courses.");
|
||||
|
||||
+2
-1
@@ -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<Course*> Courses;
|
||||
|
||||
explicit Cup(const char* name, std::vector<Course*> courses);
|
||||
explicit Cup(const char* id, const char* name, std::vector<Course*> courses);
|
||||
|
||||
virtual void ShuffleCourses();
|
||||
|
||||
|
||||
+17
-31
@@ -26,22 +26,12 @@ World::World() {}
|
||||
Course* CurrentCourse;
|
||||
Cup* CurrentCup;
|
||||
|
||||
Cup* World::AddCup(const char* name, std::vector<Course*> courses) {
|
||||
// Create a new unique_ptr for Cup
|
||||
auto cup = std::make_shared<Cup>(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;
|
||||
}
|
||||
|
||||
+5
-6
@@ -67,6 +67,8 @@ class World {
|
||||
public:
|
||||
explicit World();
|
||||
|
||||
void AddCourse(Course* course);
|
||||
|
||||
AActor* AddActor(std::unique_ptr<AActor> actor);
|
||||
void TickActors();
|
||||
void DrawActors(Camera* camera);
|
||||
@@ -74,7 +76,6 @@ public:
|
||||
|
||||
Object* AddObject(std::unique_ptr<GameObject> 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<Course*> 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<std::shared_ptr<Cup>> Cups;
|
||||
std::vector<Cup*> Cups;
|
||||
size_t CupIndex = 1;
|
||||
|
||||
std::vector<std::unique_ptr<GameObject>> GameObjects;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -103,8 +103,6 @@ void BigDonut::LoadTextures() {
|
||||
|
||||
void BigDonut::SpawnActors() {}
|
||||
|
||||
void BigDonut::Init() { }
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void BigDonut::MinimapSettings() {
|
||||
D_8018D2A0 = 0.0257f;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -106,8 +106,6 @@ void BlockFort::LoadTextures() {
|
||||
|
||||
void BlockFort::SpawnActors() {}
|
||||
|
||||
void BlockFort::Init() { }
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void BlockFort::MinimapSettings() {
|
||||
D_8018D2A0 = 0.0335f;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -125,8 +125,6 @@ void Course::SpawnActors() {
|
||||
|
||||
}
|
||||
|
||||
void Course::Init() {
|
||||
}
|
||||
void Course::InitClouds() {
|
||||
if (this->Props.Clouds) {
|
||||
init_clouds(this->Props.Clouds);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -117,8 +117,6 @@ void DKJungle::SpawnActors() {
|
||||
func_80298D10();
|
||||
}
|
||||
|
||||
void DKJungle::Init() { }
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void DKJungle::MinimapSettings() {
|
||||
D_8018D2A0 = 0.0155f;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -106,8 +106,6 @@ void DoubleDeck::LoadTextures() {
|
||||
|
||||
void DoubleDeck::SpawnActors() {}
|
||||
|
||||
void DoubleDeck::Init() { }
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void DoubleDeck::MinimapSettings() {
|
||||
D_8018D2A0 = 0.0285f;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -148,8 +148,6 @@ void KalimariDesert::SpawnActors() {
|
||||
rrxing->crossingTrigger = crossing1;
|
||||
}
|
||||
|
||||
void KalimariDesert::Init() {}
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void KalimariDesert::MinimapSettings() {
|
||||
D_8018D2C0[0] = 263;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust3, 0x3C8U, 0x1000));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust2, 0x4F4U, 0xC00));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -132,8 +132,6 @@ void MarioRaceway::SpawnActors() {
|
||||
actor->flags |= 0x4000;
|
||||
}
|
||||
|
||||
void MarioRaceway::Init() {}
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void MarioRaceway::MinimapSettings() {
|
||||
D_8018D220 = reinterpret_cast<uint8_t (*)[1024]>(dma_textures(gTextureExhaust5, 0x443, 0x1000));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust0, 0x479, 0xC00));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust4, 0x3F8, 0x1000));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust4, 0x3F8, 0x1000));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust1, 0x485, 0xC00));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -106,8 +106,6 @@ void Skyscraper::LoadTextures() {
|
||||
|
||||
void Skyscraper::SpawnActors() {}
|
||||
|
||||
void Skyscraper::Init() { }
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void Skyscraper::MinimapSettings() {
|
||||
D_8018D2A0 = 0.0445f;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -165,8 +165,6 @@ struct ActorSpawnData rocks[] = {
|
||||
rrxing->crossingTrigger = crossing1;
|
||||
}
|
||||
|
||||
void TestCourse::Init() {}
|
||||
|
||||
// Likely sets minimap boundaries
|
||||
void TestCourse::MinimapSettings() {
|
||||
D_8018D220 = reinterpret_cast<uint8_t (*)[1024]>(dma_textures(gTextureExhaust5, 0x443, 0x1000));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<AWarioSign>(pos3));
|
||||
}
|
||||
|
||||
void WarioStadium::Init() {}
|
||||
void WarioStadium::InitClouds() {
|
||||
init_stars(this->Props.Clouds);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<uint8_t (*)[1024]>(dma_textures(gTextureExhaust0, 0x479, 0xC00));
|
||||
|
||||
@@ -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;
|
||||
|
||||
+4
-7
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
+2
-1
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
+66
-40
@@ -1,8 +1,11 @@
|
||||
#include <libultraship.h>
|
||||
|
||||
#include "Game.h"
|
||||
|
||||
#include <Fast3D/gfx_pc.h>
|
||||
#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<Course*>{ gLuigiRaceway, gMooMooFarm, gKoopaTroopaBeach, gKalimariDesert });
|
||||
gFlowerCup = new Cup("mk:flower_cup", "flower cup", std::vector<Course*>{ gToadsTurnpike, gFrappeSnowland, gChocoMountain, gMarioRaceway });
|
||||
gStarCup = new Cup("mk:star_cup", "star cup", std::vector<Course*>{ gWarioStadium, gSherbetLand, gRoyalRaceway, gBowsersCastle });
|
||||
gSpecialCup = new Cup("mk:special_cup", "special cup", std::vector<Course*>{ gDkJungle, gYoshiValley, gBansheeBoardwalk, gRainbowRoad });
|
||||
gBattleCup = new Cup("mk:battle_cup", "battle", std::vector<Course*>{ gBigDonut, gBlockFort, gDoubleDeck, gSkyscraper });
|
||||
|
||||
/* Instantiate Cups */
|
||||
Cup* mushroom = gWorldInstance.AddCup(
|
||||
"mushroom cup", std::vector<Course*>{ gLuigiRaceway, gMooMooFarm, gKoopaTroopaBeach, gKalimariDesert });
|
||||
Cup* flower = gWorldInstance.AddCup(
|
||||
"flower cup", std::vector<Course*>{ gToadsTurnpike, gFrappeSnowland, gChocoMountain, gMarioRaceway });
|
||||
Cup* star = gWorldInstance.AddCup(
|
||||
"star cup", std::vector<Course*>{ gWarioStadium, gSherbetLand, gRoyalRaceway, gBowsersCastle });
|
||||
Cup* special = gWorldInstance.AddCup(
|
||||
"special cup", std::vector<Course*>{ gDkJungle, gYoshiValley, gBansheeBoardwalk, gRainbowRoad });
|
||||
Cup* battle =
|
||||
gWorldInstance.AddCup("battle", std::vector<Course*>{ 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-4
@@ -1,15 +1,18 @@
|
||||
#ifndef _GAME_H
|
||||
#define _GAME_H
|
||||
|
||||
#include <libultraship.h>
|
||||
#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
|
||||
#endif
|
||||
|
||||
#endif // _GAME_H
|
||||
Reference in New Issue
Block a user