summaryrefslogtreecommitdiff
path: root/src/engine/courses/LuigiRaceway.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/courses/LuigiRaceway.cpp')
-rw-r--r--src/engine/courses/LuigiRaceway.cpp51
1 files changed, 29 insertions, 22 deletions
diff --git a/src/engine/courses/LuigiRaceway.cpp b/src/engine/courses/LuigiRaceway.cpp
index 2f1ff2751..f9a9de13a 100644
--- a/src/engine/courses/LuigiRaceway.cpp
+++ b/src/engine/courses/LuigiRaceway.cpp
@@ -6,8 +6,9 @@
#include "LuigiRaceway.h"
#include "GameObject.h"
#include "World.h"
-#include "BombKart.h"
+#include "engine/vehicles/OBombKart.h"
#include "assets/luigi_raceway_data.h"
+#include "engine/actors/AFinishline.h"
extern "C" {
#include "main.h"
@@ -30,6 +31,8 @@ extern "C" {
#include "collision.h"
#include "code_8003DC40.h"
#include "memory.h"
+ #include "courses/staff_ghost_data.h"
+ #include "framebuffer_effects.h"
extern const char *luigi_raceway_dls[];
extern s16 currentScreenSection;
}
@@ -103,16 +106,39 @@ LuigiRaceway::LuigiRaceway() {
Props.Skybox.FloorTopLeft = {216, 232, 248};
}
+void LuigiRaceway::Load() {
+ Course::Load();
+
+ parse_course_displaylists((TrackSectionsI*)LOAD_ASSET_RAW(d_course_luigi_raceway_addr));
+ func_80295C6C();
+ D_8015F8E4 = gCourseMinY - 10.0f;
+}
+
void LuigiRaceway::LoadTextures() {
dma_textures(gTextureTrees5Left, 0x000003E8U, 0x00000800U);
dma_textures(gTextureTrees5Right, 0x000003E8U, 0x00000800U);
}
void LuigiRaceway::SpawnActors() {
+ gWorldInstance.AddActor(new AFinishline());
spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_luigi_raceway_tree_spawn));
spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_luigi_raceway_item_box_spawns));
}
+void LuigiRaceway::SpawnVehicles() {
+ if (gModeSelection == VERSUS) {
+ Vec3f pos = {0, 0, 0};
+
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][50], 50, 1, 0.8333333f);
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][200], 200, 3, 0.8333333f);
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][305], 305, 1, 0.8333333f);
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][440], 440, 3, 0.8333333f);
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][515], 515, 3, 0.8333333f);
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][0], 0, 0, 0.8333333f);
+ gWorldInstance.AddBombKart(pos, &D_80164550[0][0], 0, 0, 0.8333333f);
+ }
+}
+
// Likely sets minimap boundaries
void LuigiRaceway::MinimapSettings() {
D_8018D220 = reinterpret_cast<uint8_t (*)[1024]>(dma_textures(gTextureExhaust2, 0x4F4U, 0xC00));
@@ -187,16 +213,6 @@ void LuigiRaceway::WhatDoesThisDoAI(Player* player, int8_t playerId) {
}
}
-void LuigiRaceway::SpawnBombKarts() {
- gWorldInstance.AddObject(std::make_unique<OBombKart>(40, 3, 0.8333333, 0, 0, 0, 0));
- gWorldInstance.AddObject(std::make_unique<OBombKart>(100, 3, 0.8333333, 0, 0, 0, 0));
- gWorldInstance.AddObject(std::make_unique<OBombKart>(265, 3, 0.8333333, 0, 0, 0, 0));
- gWorldInstance.AddObject(std::make_unique<OBombKart>(285, 1, 0.8333333, 0, 0, 0, 0));
- gWorldInstance.AddObject(std::make_unique<OBombKart>(420, 1, 0.8333333, 0, 0, 0, 0));
- gWorldInstance.AddObject(std::make_unique<OBombKart>(0, 0, 0.8333333, 0, 0, 0, 0));
- gWorldInstance.AddObject(std::make_unique<OBombKart>(0, 0, 0.8333333, 0, 0, 0, 0));
-}
-
// Positions the finishline on the minimap
void LuigiRaceway::MinimapFinishlinePosition() {
//! todo: Place hard-coded values here.
@@ -216,8 +232,6 @@ void LuigiRaceway::SetStaffGhost() {
D_80162DE4 = 1;
}
-void LuigiRaceway::BeginPlay() {}
-
void LuigiRaceway::Render(struct UnkStruct_800DC5EC* arg0) {
UNUSED s32 pad;
u16 sp22 = (u16) arg0->pathCounter;
@@ -264,9 +278,8 @@ void LuigiRaceway::Render(struct UnkStruct_800DC5EC* arg0) {
currentScreenSection = 0;
}
- u16* fb = (u16*) gSegmentTable[5] + 0xF800;
-
- // FB_WriteFramebufferSliceToCPU(gDisplayListHead, fb, true);
+ uintptr_t fb = (uintptr_t) gSegmentTable[5] + 0xF800;
+ FB_WriteFramebufferSliceToCPU(gDisplayListHead, (void*)fb, true);
// FB_DrawFromFramebuffer(gDisplayListHead, 0, fb, true);
// FB_CopyToFramebuffer(gDisplayListHead, 0, fb, false, NULL);
/**
@@ -330,10 +343,4 @@ void LuigiRaceway::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Ve
func_8003E9EC(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
}
-void LuigiRaceway::GenerateCollision() {
- parse_course_displaylists((TrackSectionsI*)LOAD_ASSET_RAW(d_course_luigi_raceway_addr));
- func_80295C6C();
- D_8015F8E4 = gCourseMinY - 10.0f;
-}
-
void LuigiRaceway::Destroy() { }