summaryrefslogtreecommitdiff
path: root/src/engine/courses
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2024-12-04 11:20:07 -0700
committerGitHub <noreply@github.com>2024-12-04 11:20:07 -0700
commitc774537ad36116909a0b43ecd28609df4ef386a8 (patch)
tree7be65a36bffc55d43c0931c1b25d3194461ef329 /src/engine/courses
parentd830492da94f44369dac17db88461c0e9524ccd4 (diff)
parenteb158e2abd86579d3fa3c69436c3322cffd28d59 (diff)
Merge branch 'modding' into modding+modding+
Diffstat (limited to 'src/engine/courses')
-rw-r--r--src/engine/courses/SherbetLand.cpp66
-rw-r--r--src/engine/courses/YoshiValley.cpp6
2 files changed, 68 insertions, 4 deletions
diff --git a/src/engine/courses/SherbetLand.cpp b/src/engine/courses/SherbetLand.cpp
index b22b31e48..be3cc7043 100644
--- a/src/engine/courses/SherbetLand.cpp
+++ b/src/engine/courses/SherbetLand.cpp
@@ -151,23 +151,81 @@ void SherbetLand::MinimapSettings() {
}
void SherbetLand::InitCourseObjects() {
- for (size_t i = 0; i < NUM_PENGUINS; i++) {
- init_object(indexObjectList1[i], 0);
+ //! @bug Skip spawning penguins due to animation crash for now
+ if (gGamestate == CREDITS_SEQUENCE) {
+ return;
}
+
+// Originally, multiplayer did not spawn the big penguin
+// if (gPlayerCountSelection1 == 1) {
+ Vec3f pos = {-383.0f, 2.0f, -690.0f};
+ gWorldInstance.AddPenguin(pos, 0, OPenguin::PenguinType::EMPEROR, OPenguin::Behaviour::STRUT);
+// }
+
+
+ Vec3f pos2 = {-2960.0f, -80.0f, 1521.0f};
+ auto penguin = gWorldInstance.AddPenguin(pos2, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ auto penguin2 = gWorldInstance.AddPenguin(pos2, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ penguin->Diameter = penguin2->Diameter = 100.0f;
+
+ Vec3f pos3 = {-2490.0f, -80.0f, 1612.0f};
+ auto penguin3 = gWorldInstance.AddPenguin(pos3, 0x100, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ auto penguin4 = gWorldInstance.AddPenguin(pos3, 0x100, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ penguin3->Diameter = penguin4->Diameter = 80.0f;
+
+ Vec3f pos4 = {-2098.0f, -80.0f, 1624.0f};
+ auto penguin5 = gWorldInstance.AddPenguin(pos4, 0xFF00, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ auto penguin6 = gWorldInstance.AddPenguin(pos4, 0xFF00, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ penguin5->Diameter = penguin6->Diameter = 80.0f;
+
+
+ Vec3f pos5 = {-2080.0f, -80.0f, 1171.0f};
+ auto penguin7 = gWorldInstance.AddPenguin(pos5, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ auto penguin8 = gWorldInstance.AddPenguin(pos5, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE);
+ penguin7->Diameter = penguin8->Diameter = 80.0f;
+
+
+ if (gGamestate == CREDITS_SEQUENCE) {
+ Vec3f pos6 = {380.0, 0.0f, -535.0f};
+ auto penguin9 = gWorldInstance.AddPenguin(pos6, 0x9000, OPenguin::PenguinType::CREDITS, OPenguin::Behaviour::SLIDE3);
+ penguin9->MirrorModeAngleOffset = -0x4000;
+ } else {
+ Vec3f pos6 = {146.0f, 0.0f, -380.0f};
+ auto penguin9 = gWorldInstance.AddPenguin(pos6, 0x9000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE3);
+ penguin9->MirrorModeAngleOffset = -0x4000;
+ }
+
+ Vec3f pos7 = {380.0f, 0.0f, -766.0f};
+ auto penguin10 = gWorldInstance.AddPenguin(pos7, 0x5000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE4);
+ penguin10->MirrorModeAngleOffset = 0x8000;
+
+ Vec3f pos8 = {-2300.0f, 0.0f, -210.0f};
+ auto penguin11 = gWorldInstance.AddPenguin(pos8, 0xC000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6);
+ penguin11->MirrorModeAngleOffset = 0x8000;
+
+ Vec3f pos9 = {-2500.0f, 0.0f, -250.0f};
+ auto penguin12 = gWorldInstance.AddPenguin(pos9, 0x4000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6);
+ penguin12->MirrorModeAngleOffset = 0x8000;
+
+ Vec3f pos10 = {-535.0f, 0.0f, 875.0f};
+ auto penguin13 = gWorldInstance.AddPenguin(pos10, 0x8000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6);
+ penguin13->MirrorModeAngleOffset = -0x4000;
+
+ Vec3f pos11 = {-250.0f, 0.0f, 953.0f};
+ auto penguin14 = gWorldInstance.AddPenguin(pos11, 0x9000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6);
+ penguin14->MirrorModeAngleOffset = -0x4000;
}
void SherbetLand::UpdateCourseObjects() {
if (gGamestate != CREDITS_SEQUENCE) {
func_800842C8();
}
- update_penguins();
}
void SherbetLand::RenderCourseObjects(s32 cameraId) {
if (gGamestate != CREDITS_SEQUENCE) {
func_80052E30(cameraId);
}
- render_object_train_penguins(cameraId);
}
void SherbetLand::SomeSounds() {
diff --git a/src/engine/courses/YoshiValley.cpp b/src/engine/courses/YoshiValley.cpp
index 6bbf50590..b372ec626 100644
--- a/src/engine/courses/YoshiValley.cpp
+++ b/src/engine/courses/YoshiValley.cpp
@@ -142,6 +142,12 @@ void YoshiValley::MinimapSettings() {
void YoshiValley::InitCourseObjects() {
size_t objectId;
size_t i;
+
+ //! @bug Skip spawning due to animation crash for now
+ if (gGamestate == CREDITS_SEQUENCE) {
+ return;
+ }
+
for (i = 0; i < NUM_YV_FLAG_POLES; i++) {
init_object(indexObjectList1[i], 0);
}