Refactors (#114)

* Update Engine.cpp

* fix

* Add Actors

* Refactor

* Update Game.cpp

* Refactors as per review
This commit is contained in:
MegaMech
2024-10-15 20:29:26 -06:00
committed by GitHub
parent af81bad1f3
commit 4fbb031dd9
56 changed files with 129 additions and 175 deletions
+4 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
-2
View File
@@ -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);
-1
View File
@@ -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;
-2
View File
@@ -103,8 +103,6 @@ void BigDonut::LoadTextures() {
void BigDonut::SpawnActors() {}
void BigDonut::Init() { }
// Likely sets minimap boundaries
void BigDonut::MinimapSettings() {
D_8018D2A0 = 0.0257f;
-1
View File
@@ -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;
-2
View File
@@ -106,8 +106,6 @@ void BlockFort::LoadTextures() {
void BlockFort::SpawnActors() {}
void BlockFort::Init() { }
// Likely sets minimap boundaries
void BlockFort::MinimapSettings() {
D_8018D2A0 = 0.0335f;
-1
View File
@@ -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;
-2
View File
@@ -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;
-1
View File
@@ -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;
-2
View File
@@ -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;
-1
View File
@@ -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;
-2
View File
@@ -125,8 +125,6 @@ void Course::SpawnActors() {
}
void Course::Init() {
}
void Course::InitClouds() {
if (this->Props.Clouds) {
init_clouds(this->Props.Clouds);
-1
View File
@@ -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);
-2
View File
@@ -117,8 +117,6 @@ void DKJungle::SpawnActors() {
func_80298D10();
}
void DKJungle::Init() { }
// Likely sets minimap boundaries
void DKJungle::MinimapSettings() {
D_8018D2A0 = 0.0155f;
-1
View File
@@ -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;
-2
View File
@@ -106,8 +106,6 @@ void DoubleDeck::LoadTextures() {
void DoubleDeck::SpawnActors() {}
void DoubleDeck::Init() { }
// Likely sets minimap boundaries
void DoubleDeck::MinimapSettings() {
D_8018D2A0 = 0.0285f;
-1
View File
@@ -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;
-1
View File
@@ -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;
-1
View File
@@ -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;
-2
View File
@@ -148,8 +148,6 @@ void KalimariDesert::SpawnActors() {
rrxing->crossingTrigger = crossing1;
}
void KalimariDesert::Init() {}
// Likely sets minimap boundaries
void KalimariDesert::MinimapSettings() {
D_8018D2C0[0] = 263;
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -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);
}
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-2
View File
@@ -106,8 +106,6 @@ void Skyscraper::LoadTextures() {
void Skyscraper::SpawnActors() {}
void Skyscraper::Init() { }
// Likely sets minimap boundaries
void Skyscraper::MinimapSettings() {
D_8018D2A0 = 0.0445f;
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;
-1
View File
@@ -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);
}
-1
View File
@@ -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;
-14
View File
@@ -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);
}
-1
View File
@@ -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;
-2
View File
@@ -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));
-1
View File
@@ -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;