summaryrefslogtreecommitdiff
path: root/src/engine/courses/TestCourse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/courses/TestCourse.cpp')
-rw-r--r--src/engine/courses/TestCourse.cpp121
1 files changed, 103 insertions, 18 deletions
diff --git a/src/engine/courses/TestCourse.cpp b/src/engine/courses/TestCourse.cpp
index f999457fd..7ce8f9cca 100644
--- a/src/engine/courses/TestCourse.cpp
+++ b/src/engine/courses/TestCourse.cpp
@@ -44,6 +44,7 @@ extern "C" {
TestCourse::TestCourse() {
this->gfxSize = 100;
this->textures = NULL;
+ Props.MinimapTexture = gTextureCourseOutlineMarioRaceway;
Props.Id = "mk:test_course";
Props.Name = "Test Course";
@@ -59,7 +60,7 @@ TestCourse::TestCourse() {
Props.NearPersp = 9.0f;
Props.FarPersp = 4500.0f;
- Props.PathSizes = {52, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0};
+ Props.PathSizes = {51, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0};
Props.D_0D009418[0] = 4.1666665f;
Props.D_0D009418[1] = 5.5833334f;
@@ -81,12 +82,12 @@ TestCourse::TestCourse() {
Props.D_0D009808[2] = 5.75f;
Props.D_0D009808[3] = 6.3333334f;
- //Props.PathTable[0] = test_course_path;
+ Props.PathTable[0] = test_course_path;
Props.PathTable[1] = NULL;
Props.PathTable[2] = NULL;
Props.PathTable[3] = NULL;
- //Props.PathTable2[0] = test_course_path;
+ Props.PathTable2[0] = test_course_path;
Props.PathTable2[1] = NULL;
Props.PathTable2[2] = NULL;
Props.PathTable2[3] = NULL;
@@ -126,6 +127,9 @@ void TestCourse::LoadTextures() {
void TestCourse::SpawnActors() {
struct ActorSpawnData itemboxes[] = {
+ { 200, 1500, 200 , 0},
+ { 350, 2500, 300 , 1},
+ { 400, 2000, 350 , 2},
{ 40, 0, -800, 0},
{ -40, 0, -800, 0},
{ 0, 0, -800, 0},
@@ -138,13 +142,27 @@ struct ActorSpawnData itemboxes[] = {
};
struct ActorSpawnData rocks[] = {
- {{ 200, 3000, 200 }, {0}},
+ {{ 200, 1500, 200 }, {0}},
{{ 350, 2500, 300 }, {1}},
{{ 400, 2000, 350 }, {2}},
{{ -32768, 0, 0 }, {0}},
};
- spawn_all_item_boxes((const char*)itemboxes);
- spawn_falling_rocks((const char*)rocks);
+ spawn_all_item_boxes(itemboxes);
+ spawn_falling_rocks(rocks);
+
+ struct RailroadCrossing* rrxing;
+ Vec3f position;
+ Vec3f velocity = { 0.0f, 0.0f, 0.0f };
+ Vec3s rotation = { 0, 0, 0 };
+ vec3f_set(position, 50.0f, 2.0f, 50.0f);
+
+ Vec3f crossingPos = {0, 2, 0};
+ uintptr_t* crossing1 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos, 0, 2, 900.0f, 650.0f);
+
+ position[0] *= gCourseDirection;
+ rrxing = (struct RailroadCrossing*) &gActorList[add_actor_to_empty_slot(position, rotation, velocity,
+ ACTOR_RAILROAD_CROSSING)];
+ rrxing->crossingTrigger = crossing1;
}
void TestCourse::Init() {}
@@ -162,6 +180,77 @@ void TestCourse::MinimapSettings() {
D_80165728 = -240;
}
+Path2D test_course_path2D[] = {
+ { 0, 0},
+ { 0, -100},
+ { 0, -200},
+ { 0, -300},
+ { 0, -400},
+ { 0, -500},
+ { 0, -600},
+ { 0, -700},
+ { 0, -800},
+ { 0, -900},
+ { 0, -1000},
+ { 0, -1096}, // Main point 1
+ { 100, -1090},
+ { 200, -1085},
+ { 300, -1080},
+ { 400, -1075},
+ { 500, -1072}, // Curve begins to smooth here
+ { 600, -1068},
+ { 700, -1065},
+ { 800, -1063},
+ { 900, -1061},
+ { 984, -1060}, // Main point 2
+ { 990, -900},
+ { 995, -800},
+ { 997, -700},
+ { 998, -600},
+ { 999, -500},
+ { 999, -400},
+ { 999, -300},
+ { 999, -200},
+ { 999, -100},
+ { 999, 0},
+ { 999, 100},
+ { 999, 200},
+ { 999, 300},
+ { 999, 400},
+ { 999, 500},
+ { 999, 600},
+ { 999, 700},
+ { 999, 800},
+ { 999, 900},
+ { 999, 940}, // Main point 3
+ { 900, 945},
+ { 800, 945},
+ { 700, 947},
+ { 600, 948},
+ { 500, 949},
+ { 400, 949},
+ { 300, 949},
+ { 200, 950},
+ { 100, 950},
+ { 0, 950}, // Main point 4
+
+ // End of path
+ { -32768, -32768 } // Terminator
+};
+
+void TestCourse::SpawnVehicles() {
+ gVehicle2DWaypoint = test_course_path2D;
+ gVehicle2DWaypointLength = 53;
+ D_80162EB0 = spawn_actor_on_surface(test_course_path2D[0].x, 2000.0f, test_course_path2D[0].z);
+
+ gWorldInstance.AddTrain(5, 5.0f, 0);
+ gWorldInstance.AddTrain(5, 5.0f, 8);
+}
+
+void TestCourse::UpdateVehicles() {
+ update_vehicle_trains();
+}
+
void TestCourse::InitCourseObjects() {}
void TestCourse::SomeSounds() {}
@@ -197,17 +286,13 @@ void TestCourse::WhatDoesThisDoAI(Player* player, int8_t playerId) {
}
void TestCourse::SpawnBombKarts() {
- World* world = GetWorld();
-
- if (world) {
- world->SpawnObject(std::make_unique<OBombKart>(40, 3, 0.8333333, 0, 0, 0, 0));
- world->SpawnObject(std::make_unique<OBombKart>(100, 3, 0.8333333, 0, 0, 0, 0));
- world->SpawnObject(std::make_unique<OBombKart>(265, 3, 0.8333333, 0, 0, 0, 0));
- world->SpawnObject(std::make_unique<OBombKart>(285, 1, 0.8333333, 0, 0, 0, 0));
- world->SpawnObject(std::make_unique<OBombKart>(420, 1, 0.8333333, 0, 0, 0, 0));
- world->SpawnObject(std::make_unique<OBombKart>(0, 0, 0.8333333, 0, 0, 0, 0));
- world->SpawnObject(std::make_unique<OBombKart>(0, 0, 0.8333333, 0, 0, 0, 0));
- }
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(40, 3, 0.8333333, 0, 0, 0, 0));
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(100, 3, 0.8333333, 0, 0, 0, 0));
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(265, 3, 0.8333333, 0, 0, 0, 0));
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(285, 1, 0.8333333, 0, 0, 0, 0));
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(420, 1, 0.8333333, 0, 0, 0, 0));
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(0, 0, 0.8333333, 0, 0, 0, 0));
+ gWorldInstance.SpawnObject(std::make_unique<OBombKart>(0, 0, 0.8333333, 0, 0, 0, 0));
}
// Positions the finishline on the minimap
@@ -242,7 +327,7 @@ void TestCourse::Collision() {}
void TestCourse::GenerateCollision() {
generate_collision_mesh_with_defaults(mario_Plane_001_mesh);
- parse_course_displaylists((const char*)test_course_addr);
+ parse_course_displaylists((TrackSectionsI*)test_course_addr);
func_80295C6C();
D_8015F8E4 = gCourseMinY - 10.0f;
}