diff options
| author | coco875 <59367621+coco875@users.noreply.github.com> | 2025-01-26 02:43:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-25 18:43:30 -0700 |
| commit | 995c60c85cac45d23dbcbfea45f29ec4ed7618b6 (patch) | |
| tree | 55aa7092635da91e65a6bc1ff9f02134773e5122 /src/port/Game.cpp | |
| parent | a37bb5afbd280949411ac9061ce54e92166325d8 (diff) | |
fix ghost (#175)
* fix ghost
* remove a semi colon
Diffstat (limited to 'src/port/Game.cpp')
| -rw-r--r-- | src/port/Game.cpp | 837 |
1 files changed, 423 insertions, 414 deletions
diff --git a/src/port/Game.cpp b/src/port/Game.cpp index d73f5ccdf..5ac56da94 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -50,7 +50,7 @@ extern "C" { #include "render_courses.h" #include "menus.h" #include "update_objects.h" -//#include "engine/wasm.h" +// #include "engine/wasm.h" } extern "C" void Graphics_PushFrame(Gfx* data) { @@ -141,11 +141,16 @@ void CustomEngineInit() { 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 }); + 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 */ gWorldInstance.AddCup(gMushroomCup); @@ -172,574 +177,577 @@ void CustomEngineInit() { // Model loader systems allows cutting pieces out of courses and making them actors. // Commented out due to alleged stability issues. - //gModelLoader.Add(bowserStatueList); + // gModelLoader.Add(bowserStatueList); - //gModelLoader.Load(); + // gModelLoader.Load(); } extern "C" { - World* GetWorld(void) { - return &gWorldInstance; - } +World* GetWorld(void) { + return &gWorldInstance; +} - u32 WorldNextCup(void) { - return gWorldInstance.NextCup(); - } +u32 WorldNextCup(void) { + return gWorldInstance.NextCup(); +} - u32 WorldPreviousCup(void) { - return gWorldInstance.PreviousCup(); - } +u32 WorldPreviousCup(void) { + return gWorldInstance.PreviousCup(); +} - void CM_SetCup(void* cup) { - gWorldInstance.SetCup((Cup*)cup); - } +void CM_SetCup(void* cup) { + gWorldInstance.SetCup((Cup*) cup); +} - void* GetCup() { - return gWorldInstance.CurrentCup; - } +void* GetCup() { + return gWorldInstance.CurrentCup; +} - u32 GetCupIndex(void) { - return gWorldInstance.GetCupIndex(); - } +u32 GetCupIndex(void) { + return gWorldInstance.GetCupIndex(); +} - const char* GetCupName(void) { - return gWorldInstance.CurrentCup->Name; - } +const char* GetCupName(void) { + return gWorldInstance.CurrentCup->Name; +} - void LoadCourse() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->Load(); - } +void LoadCourse() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->Load(); } +} +size_t GetCourseIndex() { + return gWorldInstance.CourseIndex; +} - size_t GetCourseIndex() { - return gWorldInstance.CourseIndex; - } - - void SetCourse(const char* name) { - gWorldInstance.SetCourse(name); - } +void SetCourse(const char* name) { + gWorldInstance.SetCourse(name); +} - void NextCourse() { - gWorldInstance.NextCourse(); - } +void NextCourse() { + gWorldInstance.NextCourse(); +} +void PreviousCourse() { + gWorldInstance.PreviousCourse(); +} - void PreviousCourse() { - gWorldInstance.PreviousCourse(); - } - - void SetCourseById(s32 course) { - if (course < 0 || course >= gWorldInstance.Courses.size()) { - return; - } - gWorldInstance.CourseIndex = course; - gWorldInstance.CurrentCourse = gWorldInstance.Courses[gWorldInstance.CourseIndex]; +void SetCourseById(s32 course) { + if (course < 0 || course >= gWorldInstance.Courses.size()) { + return; } + gWorldInstance.CourseIndex = course; + gWorldInstance.CurrentCourse = gWorldInstance.Courses[gWorldInstance.CourseIndex]; +} - void CM_VehicleCollision(s32 playerId, Player* player) { - for (auto& actor : gWorldInstance.Actors) { - if (actor) { - actor->VehicleCollision(playerId, player); - } +void CM_VehicleCollision(s32 playerId, Player* player) { + for (auto& actor : gWorldInstance.Actors) { + if (actor) { + actor->VehicleCollision(playerId, player); } } +} - void CM_BombKartsWaypoint(s32 cameraId) { - for (auto& object : gWorldInstance.Objects) { - if (auto kart = dynamic_cast<OBombKart*>(object)) {; - if (kart) { - kart->Waypoint(cameraId); - } +void CM_BombKartsWaypoint(s32 cameraId) { + for (auto& object : gWorldInstance.Objects) { + if (auto kart = dynamic_cast<OBombKart*>(object)) { + if (kart) { + kart->Waypoint(cameraId); } } } +} - void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha) { +void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha) { - if ((playerId < 0) || (playerId > 4)) { - return; - } - - if (primAlpha == 0) { - gWorldInstance.playerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::DISABLED; - gWorldInstance.playerBombKart[playerId]._primAlpha = primAlpha; - } else { - gWorldInstance.playerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::ACTIVE; - gWorldInstance.playerBombKart[playerId]._primAlpha = primAlpha; - } + if ((playerId < 0) || (playerId > 4)) { + return; } - void CM_DrawBattleBombKarts(s32 cameraId) { - for (size_t i = 0; i < gPlayerCount; i++) { - gWorldInstance.playerBombKart[i].Draw(i, cameraId); - } + if (primAlpha == 0) { + gWorldInstance.playerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::DISABLED; + gWorldInstance.playerBombKart[playerId]._primAlpha = primAlpha; + } else { + gWorldInstance.playerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::ACTIVE; + gWorldInstance.playerBombKart[playerId]._primAlpha = primAlpha; } +} - void CM_ClearVehicles(void) { - gWorldInstance.Crossings.clear(); +void CM_DrawBattleBombKarts(s32 cameraId) { + for (size_t i = 0; i < gPlayerCount; i++) { + gWorldInstance.playerBombKart[i].Draw(i, cameraId); } +} - void CM_CrossingTrigger() { - for (auto& crossing : gWorldInstance.Crossings) { - if (crossing) { - crossing->CrossingTrigger(); - } - } - } +void CM_ClearVehicles(void) { + gWorldInstance.Crossings.clear(); +} - void CM_AICrossingBehaviour(s32 playerId) { - for (auto& crossing : gWorldInstance.Crossings) { - if (crossing) { - crossing->AICrossingBehaviour(playerId); - } +void CM_CrossingTrigger() { + for (auto& crossing : gWorldInstance.Crossings) { + if (crossing) { + crossing->CrossingTrigger(); } } +} - s32 CM_GetCrossingOnTriggered(uintptr_t* crossing) { - TrainCrossing* ptr = (TrainCrossing*) crossing; - if (ptr) { - return ptr->OnTriggered; +void CM_AICrossingBehaviour(s32 playerId) { + for (auto& crossing : gWorldInstance.Crossings) { + if (crossing) { + crossing->AICrossingBehaviour(playerId); } } +} - void CM_LoadTextures() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->LoadTextures(); - } +s32 CM_GetCrossingOnTriggered(uintptr_t* crossing) { + TrainCrossing* ptr = (TrainCrossing*) crossing; + if (ptr) { + return ptr->OnTriggered; } +} - void CM_RenderCourse(struct UnkStruct_800DC5EC* arg0) { - if (gWorldInstance.CurrentCourse->IsMod() == false) { - if ((CVarGetInteger("gFreecam", 0) == true)) { - // Render credits courses - func_8029569C(); - return; - } - } - - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->Render(arg0); - } +void CM_LoadTextures() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->LoadTextures(); } +} - void CM_RenderCredits() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->RenderCredits(); +void CM_RenderCourse(struct UnkStruct_800DC5EC* arg0) { + if (gWorldInstance.CurrentCourse->IsMod() == false) { + if ((CVarGetInteger("gFreecam", 0) == true)) { + // Render credits courses + func_8029569C(); + return; } } - void CM_TickActors() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.TickActors(); - } + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->Render(arg0); } +} - void CM_DrawActors(Camera* camera, struct Actor* actor) { - AActor* a = gWorldInstance.ConvertActorToAActor(actor); - if (a->IsMod()) { - a->Draw(camera); - } +void CM_RenderCredits() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->RenderCredits(); } +} - void CM_BeginPlay() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->BeginPlay(); - } +void CM_TickActors() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.TickActors(); } +} - void CM_TickObjects() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.TickObjects(); - } +void CM_DrawActors(Camera* camera, struct Actor* actor) { + AActor* a = gWorldInstance.ConvertActorToAActor(actor); + if (a->IsMod()) { + a->Draw(camera); } +} - // A couple objects such as lakitu are ticked inside of process_game_tick which support 60fps. - // This is a fallback to support that. - void CM_TickObjects60fps() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.TickObjects60fps(); - } +void CM_BeginPlay() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->BeginPlay(); } +} - void CM_DrawObjects(s32 cameraId) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.DrawObjects(cameraId); - } +void CM_TickObjects() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.TickObjects(); } +} - void CM_TickParticles() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.TickParticles(); - } +// A couple objects such as lakitu are ticked inside of process_game_tick which support 60fps. +// This is a fallback to support that. +void CM_TickObjects60fps() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.TickObjects60fps(); } +} - void CM_DrawParticles(s32 cameraId) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.DrawParticles(cameraId); - } +void CM_DrawObjects(s32 cameraId) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.DrawObjects(cameraId); } +} - // Helps prevents users from forgetting to add a finishline to their course - bool CM_DoesFinishlineExist() { - for (AActor* actor : gWorldInstance.Actors) { - if (dynamic_cast<AFinishline*>(actor)) { - return true; - } - } - return false; +void CM_TickParticles() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.TickParticles(); } +} - void CM_InitClouds() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->InitClouds(); - } +void CM_DrawParticles(s32 cameraId) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.DrawParticles(cameraId); } +} - void CM_UpdateClouds(s32 arg0, Camera* camera) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->UpdateClouds(arg0, camera); +// Helps prevents users from forgetting to add a finishline to their course +bool CM_DoesFinishlineExist() { + for (AActor* actor : gWorldInstance.Actors) { + if (dynamic_cast<AFinishline*>(actor)) { + return true; } } + return false; +} - void CM_Waypoints(Player* player, int8_t playerId) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->Waypoints(player, playerId); - } +void CM_InitClouds() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->InitClouds(); } +} - void CM_SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, - f32* arg6, f32* arg7) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->SomeCollisionThing(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); - } +void CM_UpdateClouds(s32 arg0, Camera* camera) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->UpdateClouds(arg0, camera); } +} - void CM_MinimapSettings() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->MinimapSettings(); - } +void CM_Waypoints(Player* player, int8_t playerId) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->Waypoints(player, playerId); } +} - void CM_InitCourseObjects() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->InitCourseObjects(); - } +void CM_SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->SomeCollisionThing(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } +} - void CM_UpdateCourseObjects() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->UpdateCourseObjects(); - } - TrainSmokeTick(); +void CM_MinimapSettings() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->MinimapSettings(); } +} - void CM_RenderCourseObjects(s32 cameraId) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->RenderCourseObjects(cameraId); - } - - TrainSmokeDraw(cameraId); +void CM_InitCourseObjects() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->InitCourseObjects(); } +} - void CM_SomeSounds() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->SomeSounds(); - } +void CM_UpdateCourseObjects() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->UpdateCourseObjects(); } + TrainSmokeTick(); +} - void CM_CreditsSpawnActors() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->CreditsSpawnActors(); - } +void CM_RenderCourseObjects(s32 cameraId) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->RenderCourseObjects(cameraId); } - void CM_WhatDoesThisDo(Player* player, int8_t playerId) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->WhatDoesThisDo(player, playerId); - } + TrainSmokeDraw(cameraId); +} + +void CM_SomeSounds() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->SomeSounds(); } +} - void CM_WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->WhatDoesThisDoAI(player, playerId); - } +void CM_CreditsSpawnActors() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->CreditsSpawnActors(); } +} - void CM_MinimapFinishlinePosition() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->MinimapFinishlinePosition(); - } +void CM_WhatDoesThisDo(Player* player, int8_t playerId) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->WhatDoesThisDo(player, playerId); } +} - void CM_SetStaffGhost() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->SetStaffGhost(); - } +void CM_WhatDoesThisDoAI(Player* player, int8_t playerId) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->WhatDoesThisDoAI(player, playerId); } +} - Properties* CM_GetProps() { - if (gWorldInstance.CurrentCourse) { - return &gWorldInstance.CurrentCourse->Props; - } - return NULL; +void CM_MinimapFinishlinePosition() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->MinimapFinishlinePosition(); } +} - void CM_ScrollingTextures() { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->ScrollingTextures(); - } +void CM_SetStaffGhost() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->SetStaffGhost(); } +} - void CM_DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { - if (gWorldInstance.CurrentCourse) { - gWorldInstance.CurrentCourse->DrawWater(screen, pathCounter, cameraRot, playerDirection); - } +Properties* CM_GetProps() { + if (gWorldInstance.CurrentCourse) { + return &gWorldInstance.CurrentCourse->Props; } + return NULL; +} - /** - * This should only be ran once per course, otherwise animation/timings might become sped up. - */ - void CM_SpawnStarterLakitu() { - if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { - return; - } +Properties* CM_GetPropsCourseId(s32 courseId) { + return &gWorldInstance.Courses[courseId]->Props; +} - for (size_t i = 0; i < gPlayerCountSelection1; i++) { - OLakitu* lakitu = new OLakitu(i, OLakitu::LakituType::STARTER); - gWorldInstance.Lakitus[i] = lakitu; - gWorldInstance.AddObject(lakitu); - } +void CM_ScrollingTextures() { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->ScrollingTextures(); } +} - // Checkered flag lakitu - void CM_ActivateFinishLakitu(s32 playerId) { - if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { - return; - } - gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::FINISH); +void CM_DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { + if (gWorldInstance.CurrentCourse) { + gWorldInstance.CurrentCourse->DrawWater(screen, pathCounter, cameraRot, playerDirection); } +} - void CM_ActivateSecondLapLakitu(s32 playerId) { - if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { - return; - } - gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::SECOND_LAP); +/** + * This should only be ran once per course, otherwise animation/timings might become sped up. + */ +void CM_SpawnStarterLakitu() { + if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { + return; } - void CM_ActivateFinalLapLakitu(s32 playerId) { - if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { - return; - } - gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::FINAL_LAP); + for (size_t i = 0; i < gPlayerCountSelection1; i++) { + OLakitu* lakitu = new OLakitu(i, OLakitu::LakituType::STARTER); + gWorldInstance.Lakitus[i] = lakitu; + gWorldInstance.AddObject(lakitu); } +} - void CM_ActivateReverseLakitu(s32 playerId) { - if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { - return; - } - gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::REVERSE); +// Checkered flag lakitu +void CM_ActivateFinishLakitu(s32 playerId) { + if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { + return; } + gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::FINISH); +} - size_t GetCupCursorPosition() { - return gWorldInstance.CurrentCup->CursorPosition; +void CM_ActivateSecondLapLakitu(s32 playerId) { + if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { + return; } + gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::SECOND_LAP); +} - void SetCupCursorPosition(size_t position) { - gWorldInstance.CurrentCup->SetCourse(position); - //gWorldInstance.CurrentCup->CursorPosition = position; +void CM_ActivateFinalLapLakitu(s32 playerId) { + if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { + return; } + gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::FINAL_LAP); +} - size_t GetCupSize() { - return gWorldInstance.CurrentCup->GetSize(); +void CM_ActivateReverseLakitu(s32 playerId) { + if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) { + return; } + gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::REVERSE); +} - void SetCourseFromCup() { - gWorldInstance.CurrentCourse = gWorldInstance.CurrentCup->GetCourse(); - } +size_t GetCupCursorPosition() { + return gWorldInstance.CurrentCup->CursorPosition; +} - void* GetCourse(void) { - return gWorldInstance.CurrentCourse; - } +void SetCupCursorPosition(size_t position) { + gWorldInstance.CurrentCup->SetCourse(position); + // gWorldInstance.CurrentCup->CursorPosition = position; +} - void SetCourseByClass(void* course) { - gWorldInstance.CurrentCourse = (Course*) course; - } +size_t GetCupSize() { + return gWorldInstance.CurrentCup->GetSize(); +} - struct Actor* CM_GetActor(size_t index) { - if (index < gWorldInstance.Actors.size()) { - AActor* actor = gWorldInstance.Actors[index]; - return reinterpret_cast<struct Actor*>(reinterpret_cast<char*>(actor) + sizeof(void*)); - } else { - //throw std::runtime_error("GetActor() index out of bounds"); - return NULL; - } - } +void SetCourseFromCup() { + gWorldInstance.CurrentCourse = gWorldInstance.CurrentCup->GetCourse(); +} - size_t CM_FindActorIndex(Actor* actor) { - // Move the ptr back to look at the vtable. - // This gets us the proper C++ class instead of just the variables used in C. - AActor* a = reinterpret_cast<AActor*>((char*)actor - sizeof(void*)); - auto actors = gWorldInstance.Actors; +void* GetCourse(void) { + return gWorldInstance.CurrentCourse; +} - auto it = std::find(actors.begin(), actors.end(), static_cast<AActor*>(a)); - if (it != actors.end()) { - return std::distance(actors.begin(), it); - } - printf("FindActorIndex() actor not found\n"); - return 0; - } +void SetCourseByClass(void* course) { + gWorldInstance.CurrentCourse = (Course*) course; +} - void CM_DeleteActor(size_t index) { - std::vector<AActor*> actors = gWorldInstance.Actors; - if (index < actors.size()) { - actors.erase(actors.begin() + index); - } - } - - /** - * Clean up actors and other game objects. - */ - void CM_CleanWorld(void) { - gWorldInstance.Actors.clear(); - gWorldInstance.Objects.clear(); - gWorldInstance.Emitters.clear(); - gWorldInstance.Lakitus.clear(); +struct Actor* CM_GetActor(size_t index) { + if (index < gWorldInstance.Actors.size()) { + AActor* actor = gWorldInstance.Actors[index]; + return reinterpret_cast<struct Actor*>(reinterpret_cast<char*>(actor) + sizeof(void*)); + } else { + // throw std::runtime_error("GetActor() index out of bounds"); + return NULL; } +} + +size_t CM_FindActorIndex(Actor* actor) { + // Move the ptr back to look at the vtable. + // This gets us the proper C++ class instead of just the variables used in C. + AActor* a = reinterpret_cast<AActor*>((char*) actor - sizeof(void*)); + auto actors = gWorldInstance.Actors; - struct Actor* CM_AddBaseActor(void) { - return (struct Actor*) gWorldInstance.AddBaseActor(); + auto it = std::find(actors.begin(), actors.end(), static_cast<AActor*>(a)); + if (it != actors.end()) { + return std::distance(actors.begin(), it); } + printf("FindActorIndex() actor not found\n"); + return 0; +} - size_t CM_GetActorSize() { - return gWorldInstance.Actors.size(); +void CM_DeleteActor(size_t index) { + std::vector<AActor*> actors = gWorldInstance.Actors; + if (index < actors.size()) { + actors.erase(actors.begin() + index); } +} - void CM_ActorCollision(Player* player, Actor* actor) { - AActor* a = gWorldInstance.ConvertActorToAActor(actor); +/** + * Clean up actors and other game objects. + */ +void CM_CleanWorld(void) { + gWorldInstance.Actors.clear(); + gWorldInstance.Objects.clear(); + gWorldInstance.Emitters.clear(); + gWorldInstance.Lakitus.clear(); +} - if (a->IsMod()) { - a->Collision(player, a); - } - } +struct Actor* CM_AddBaseActor(void) { + return (struct Actor*) gWorldInstance.AddBaseActor(); +} - void* GetMarioRaceway(void) { - return gMarioRaceway; - } +size_t CM_GetActorSize() { + return gWorldInstance.Actors.size(); +} - void* GetLuigiRaceway(void) { - return gLuigiRaceway; - } +void CM_ActorCollision(Player* player, Actor* actor) { + AActor* a = gWorldInstance.ConvertActorToAActor(actor); - void* GetChocoMountain(void) { - return gChocoMountain; + if (a->IsMod()) { + a->Collision(player, a); } +} - void* GetBowsersCastle(void) { - return gBowsersCastle; - } +void* GetMarioRaceway(void) { + return gMarioRaceway; +} - void* GetBansheeBoardwalk(void) { - return gBansheeBoardwalk; - } +void* GetLuigiRaceway(void) { + return gLuigiRaceway; +} - void* GetYoshiValley(void) { - return gYoshiValley; - } +void* GetChocoMountain(void) { + return gChocoMountain; +} - void* GetFrappeSnowland(void) { - return gFrappeSnowland; - } +void* GetBowsersCastle(void) { + return gBowsersCastle; +} - void* GetKoopaTroopaBeach(void) { - return gKoopaTroopaBeach; - } +void* GetBansheeBoardwalk(void) { + return gBansheeBoardwalk; +} - void* GetRoyalRaceway(void) { - return gRoyalRaceway; - } +void* GetYoshiValley(void) { + return gYoshiValley; +} - void* GetMooMooFarm(void) { - return gMooMooFarm; - } +void* GetFrappeSnowland(void) { + return gFrappeSnowland; +} - void* GetToadsTurnpike(void) { - return gToadsTurnpike; - } +void* GetKoopaTroopaBeach(void) { + return gKoopaTroopaBeach; +} - void* GetKalimariDesert(void) { - return gKalimariDesert; - } +void* GetRoyalRaceway(void) { + return gRoyalRaceway; +} - void* GetSherbetLand(void) { - return gSherbetLand; - } +void* GetMooMooFarm(void) { + return gMooMooFarm; +} - void* GetRainbowRoad(void) { - return gRainbowRoad; - } +void* GetToadsTurnpike(void) { + return gToadsTurnpike; +} - void* GetWarioStadium(void) { - return gWarioStadium; - } +void* GetKalimariDesert(void) { + return gKalimariDesert; +} - void* GetBlockFort(void) { - return gBlockFort; - } +void* GetSherbetLand(void) { + return gSherbetLand; +} - void* GetSkyscraper(void) { - return gSkyscraper; - } +void* GetRainbowRoad(void) { + return gRainbowRoad; +} - void* GetDoubleDeck(void) { - return gDoubleDeck; - } +void* GetWarioStadium(void) { + return gWarioStadium; +} - void* GetDkJungle(void) { - return gDkJungle; - } +void* GetBlockFort(void) { + return gBlockFort; +} - void* GetBigDonut(void) { - return gBigDonut; - } +void* GetSkyscraper(void) { + return gSkyscraper; +} - void* GetPodiumCeremony(void) { - return gPodiumCeremony; - } +void* GetDoubleDeck(void) { + return gDoubleDeck; +} - void* GetMushroomCup(void) { - return gMushroomCup; - } +void* GetDkJungle(void) { + return gDkJungle; +} - void* GetFlowerCup(void) { - return gFlowerCup; - } +void* GetBigDonut(void) { + return gBigDonut; +} - void* GetStarCup(void) { - return gStarCup; - } +void* GetPodiumCeremony(void) { + return gPodiumCeremony; +} - void* GetSpecialCup(void) { - return gSpecialCup; - } +void* GetMushroomCup(void) { + return gMushroomCup; +} - void* GetBattleCup(void) { - return gBattleCup; - } +void* GetFlowerCup(void) { + return gFlowerCup; +} - // End of frame cleanup of actors, objects, etc. - void CM_RunGarbageCollector(void) { - RunGarbageCollector(); - } +void* GetStarCup(void) { + return gStarCup; +} + +void* GetSpecialCup(void) { + return gSpecialCup; +} + +void* GetBattleCup(void) { + return gBattleCup; +} + +// End of frame cleanup of actors, objects, etc. +void CM_RunGarbageCollector(void) { + RunGarbageCollector(); +} } void push_frame() { - GameEngine::StartAudioFrame(); - GameEngine::Instance->StartFrame(); - thread5_iteration(); - GameEngine::EndAudioFrame(); + GameEngine::StartAudioFrame(); + GameEngine::Instance->StartFrame(); + thread5_iteration(); + GameEngine::EndAudioFrame(); // thread5_game_loop(); // Graphics_ThreadUpdate();w // Timer_Update(); @@ -751,9 +759,10 @@ int SDL_main(int argc, char** argv) { #if defined(__cplusplus) && defined(PLATFORM_IOS) extern "C" #endif -int main(int argc, char* argv[]) { + int + main(int argc, char* argv[]) { #endif - //load_wasm(); + // load_wasm(); GameEngine::Create(); audio_init(); sound_init(); |
