diff options
Diffstat (limited to 'src/engine/courses/SherbetLand.cpp')
| -rw-r--r-- | src/engine/courses/SherbetLand.cpp | 66 |
1 files changed, 62 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() { |
