diff --git a/CMakeLists.txt b/CMakeLists.txt index 161f2798..0f84d674 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -383,13 +383,12 @@ function(add_lego_libraries NAME) LEGO1/lego/legoomni/src/worlds/act3.cpp LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp LEGO1/lego/legoomni/src/worlds/hospital.cpp - - LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp - LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp - LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp LEGO1/lego/legoomni/src/actors/bike.cpp LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp LEGO1/lego/legoomni/src/worlds/registrationbook.cpp + LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp + LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp + LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp LEGO1/lego/legoomni/src/video/legopalettepresenter.cpp LEGO1/lego/legoomni/src/entity/act2brick.cpp LEGO1/lego/legoomni/src/video/legovideomanager.cpp diff --git a/LEGO1/lego/legoomni/include/hospital.h b/LEGO1/lego/legoomni/include/hospital.h index a8d719be..623a4399 100644 --- a/LEGO1/lego/legoomni/include/hospital.h +++ b/LEGO1/lego/legoomni/include/hospital.h @@ -16,11 +16,6 @@ class MxStillPresenter; // SIZE 0x18 class HospitalState : public LegoState { public: - // SIZE 0x04 - struct Unknown0x08 { - undefined4 m_unk0x00; // 0x00 - }; - HospitalState(); ~HospitalState() override {} @@ -45,13 +40,13 @@ class HospitalState : public LegoState { // TODO: Most likely getters/setters are not used according to BETA. - Unknown0x08 m_unk0x08; // 0x08 - MxS16 m_unk0x0c; // 0x0c - MxS16 m_unk0x0e; // 0x0e - MxS16 m_unk0x10; // 0x10 - MxS16 m_unk0x12; // 0x12 - MxS16 m_unk0x14; // 0x14 - MxS16 m_unk0x16; // 0x16 + undefined4 m_unk0x08; // 0x08 + MxS16 m_unk0x0c; // 0x0c + MxS16 m_unk0x0e; // 0x0e + MxS16 m_unk0x10; // 0x10 + MxS16 m_unk0x12; // 0x12 + MxS16 m_unk0x14; // 0x14 + MxS16 m_unk0x16; // 0x16 }; // VTABLE: LEGO1 0x100d9730 diff --git a/LEGO1/lego/legoomni/include/legocarbuildpresenter.h b/LEGO1/lego/legoomni/include/legocarbuildpresenter.h index deb55c03..821c3a60 100644 --- a/LEGO1/lego/legoomni/include/legocarbuildpresenter.h +++ b/LEGO1/lego/legoomni/include/legocarbuildpresenter.h @@ -44,6 +44,9 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter { return "LegoCarBuildAnimPresenter"; } + // FUNCTION: LEGO1 0x10078500 + void RepeatingTickle() override {} // vtable+0x24 + // FUNCTION: LEGO1 0x10078510 // FUNCTION: BETA10 0x10073260 const char* ClassName() const override // vtable+0x0c @@ -59,10 +62,11 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter { void ReadyTickle() override; // vtable+0x18 void StreamingTickle() override; // vtable+0x20 - void RepeatingTickle() override; // vtable+0x24 void EndAction() override; // vtable+0x40 void PutFrame() override; // vtable+0x6c + virtual MxResult Serialize(LegoStorage* p_storage); + void FUN_10079050(MxS16 p_index); void SwapNodesByName(LegoChar* p_param1, LegoChar* p_param2); void FUN_10079160(); diff --git a/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp b/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp index 91d3650c..df971e85 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp @@ -39,12 +39,6 @@ LegoCarBuildAnimPresenter::LegoCarBuildAnimPresenter() m_mainSourceId = NULL; } -// FUNCTION: LEGO1 0x10078500 -void LegoCarBuildAnimPresenter::RepeatingTickle() -{ - // empty -} - // FUNCTION: LEGO1 0x10078680 // FUNCTION: BETA10 0x1007091e LegoCarBuildAnimPresenter::~LegoCarBuildAnimPresenter() @@ -294,6 +288,14 @@ void LegoCarBuildAnimPresenter::EndAction() } } +// STUB: LEGO1 0x10078e30 +// STUB: BETA10 0x10071387 +MxResult LegoCarBuildAnimPresenter::Serialize(LegoStorage* p_storage) +{ + // TODO + return SUCCESS; +} + // FUNCTION: LEGO1 0x10079050 // FUNCTION: BETA10 0x1007151e void LegoCarBuildAnimPresenter::FUN_10079050(MxS16 p_index) diff --git a/LEGO1/lego/legoomni/src/worlds/hospital.cpp b/LEGO1/lego/legoomni/src/worlds/hospital.cpp index b10526ca..e32edfdb 100644 --- a/LEGO1/lego/legoomni/src/worlds/hospital.cpp +++ b/LEGO1/lego/legoomni/src/worlds/hospital.cpp @@ -61,7 +61,7 @@ Hospital::~Hospital() ControlManager()->Unregister(this); TickleManager()->UnregisterClient(this); - m_hospitalState->m_unk0x08.m_unk0x00 = 3; + m_hospitalState->m_unk0x08 = 3; NotificationManager()->Unregister(this); g_unk0x100f7918 = 3; @@ -81,13 +81,13 @@ MxResult Hospital::Create(MxDSAction& p_dsAction) m_hospitalState = (HospitalState*) GameState()->GetState("HospitalState"); if (!m_hospitalState) { m_hospitalState = (HospitalState*) GameState()->CreateState("HospitalState"); - m_hospitalState->m_unk0x08.m_unk0x00 = 1; + m_hospitalState->m_unk0x08 = 1; } - else if (m_hospitalState->m_unk0x08.m_unk0x00 == 4) { - m_hospitalState->m_unk0x08.m_unk0x00 = 4; + else if (m_hospitalState->m_unk0x08 == 4) { + m_hospitalState->m_unk0x08 = 4; } else { - m_hospitalState->m_unk0x08.m_unk0x00 = 3; + m_hospitalState->m_unk0x08 = 3; } GameState()->m_currentArea = LegoGameState::e_hospital; @@ -197,7 +197,7 @@ void Hospital::ReadyWorld() HospitalScript::c_hho007p1_RunAnim }; - m_hospitalState->m_unk0x08.m_unk0x00 = 5; + m_hospitalState->m_unk0x08 = 5; PlayAction(hospitalScript[m_hospitalState->m_unk0x0c]); m_currentAction = hospitalScript[m_hospitalState->m_unk0x0c]; @@ -206,7 +206,7 @@ void Hospital::ReadyWorld() m_unk0x100 = 1; m_time = Timer()->GetTime(); - m_hospitalState->m_unk0x08.m_unk0x00 = 6; + m_hospitalState->m_unk0x08 = 6; PlayAction(HospitalScript::c_hho003cl_RunAnim); m_currentAction = HospitalScript::c_hho003cl_RunAnim; @@ -243,9 +243,9 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) m_unk0x108 = 0; - switch (m_hospitalState->m_unk0x08.m_unk0x00) { + switch (m_hospitalState->m_unk0x08) { case 5: - m_hospitalState->m_unk0x08.m_unk0x00 = 7; + m_hospitalState->m_unk0x08 = 7; PlayAction(HospitalScript::c_hho006cl_RunAnim); m_currentAction = HospitalScript::c_hho006cl_RunAnim; @@ -259,7 +259,7 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) break; case 7: case 10: - m_hospitalState->m_unk0x08.m_unk0x00 = 8; + m_hospitalState->m_unk0x08 = 8; m_unk0x100 = 1; m_time = Timer()->GetTime(); break; @@ -269,14 +269,14 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) switch (m_hospitalState->m_unk0x0e) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho017cl_RunAnim); m_currentAction = HospitalScript::c_hho017cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho018cl_RunAnim); m_currentAction = HospitalScript::c_hho018cl_RunAnim; @@ -288,14 +288,14 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) switch (m_hospitalState->m_unk0x10) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho019cl_RunAnim); m_currentAction = HospitalScript::c_hho019cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho020cl_RunAnim); m_currentAction = HospitalScript::c_hho020cl_RunAnim; @@ -307,14 +307,14 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) switch (m_hospitalState->m_unk0x12) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho023cl_RunAnim); m_currentAction = HospitalScript::c_hho023cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho024cl_RunAnim); m_currentAction = HospitalScript::c_hho024cl_RunAnim; @@ -326,14 +326,14 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) switch (m_hospitalState->m_unk0x14) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho021cl_RunAnim); m_currentAction = HospitalScript::c_hho021cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hhoa22cl_RunAnim); m_currentAction = HospitalScript::c_hhoa22cl_RunAnim; @@ -345,14 +345,14 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) switch (m_hospitalState->m_unk0x16) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho025cl_RunAnim); m_currentAction = HospitalScript::c_hho025cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho026cl_RunAnim); m_currentAction = HospitalScript::c_hho026cl_RunAnim; @@ -363,7 +363,7 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) } break; case 12: - m_hospitalState->m_unk0x08.m_unk0x00 = 9; + m_hospitalState->m_unk0x08 = 9; act1State = (Act1State*) GameState()->GetState("Act1State"); act1State->SetUnknown18(9); case 14: @@ -410,13 +410,13 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) m_unk0x100 = 3; - if (m_hospitalState->m_unk0x08.m_unk0x00 == 6) { + if (m_hospitalState->m_unk0x08 == 6) { if (m_unk0x128 == 0) { m_unk0x128 = 1; TickleManager()->UnregisterClient(this); - m_hospitalState->m_unk0x08.m_unk0x00 = 9; + m_hospitalState->m_unk0x08 = 9; Act1State* act1State = (Act1State*) GameState()->GetState("Act1State"); act1State->SetUnknown18(9); @@ -429,9 +429,9 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); } } - else if (m_hospitalState->m_unk0x08.m_unk0x00 == 10 || m_hospitalState->m_unk0x08.m_unk0x00 == 8) { - if (m_hospitalState->m_unk0x08.m_unk0x00 == 10) { - m_hospitalState->m_unk0x08.m_unk0x00 = 11; + else if (m_hospitalState->m_unk0x08 == 10 || m_hospitalState->m_unk0x08 == 8) { + if (m_hospitalState->m_unk0x08 == 10) { + m_hospitalState->m_unk0x08 = 11; BackgroundAudioManager()->RaiseVolume(); DeleteObjects( @@ -446,14 +446,14 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) switch (m_hospitalState->m_unk0x0e) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho017cl_RunAnim); m_currentAction = HospitalScript::c_hho017cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho018cl_RunAnim); m_currentAction = HospitalScript::c_hho018cl_RunAnim; @@ -465,14 +465,14 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) switch (m_hospitalState->m_unk0x10) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho019cl_RunAnim); m_currentAction = HospitalScript::c_hho019cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho020cl_RunAnim); m_currentAction = HospitalScript::c_hho020cl_RunAnim; @@ -484,14 +484,14 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) switch (m_hospitalState->m_unk0x12) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho023cl_RunAnim); m_currentAction = HospitalScript::c_hho023cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho024cl_RunAnim); m_currentAction = HospitalScript::c_hho024cl_RunAnim; @@ -503,14 +503,14 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) switch (m_hospitalState->m_unk0x14) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho021cl_RunAnim); m_currentAction = HospitalScript::c_hho021cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hhoa22cl_RunAnim); m_currentAction = HospitalScript::c_hhoa22cl_RunAnim; @@ -522,14 +522,14 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) switch (m_hospitalState->m_unk0x16) { case 0: case 1: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho025cl_RunAnim); m_currentAction = HospitalScript::c_hho025cl_RunAnim; m_unk0x108 = 1; break; default: - m_hospitalState->m_unk0x08.m_unk0x00 = 12; + m_hospitalState->m_unk0x08 = 12; PlayAction(HospitalScript::c_hho026cl_RunAnim); m_currentAction = HospitalScript::c_hho026cl_RunAnim; @@ -565,7 +565,7 @@ MxBool Hospital::HandleControl(LegoControlManagerNotificationParam& p_param) DeleteObjects(&m_atomId, HospitalScript::c_hho002cl_RunAnim, HospitalScript::c_hho006cl_RunAnim); if (m_unk0x100 == 1) { - m_hospitalState->m_unk0x08.m_unk0x00 = 14; + m_hospitalState->m_unk0x08 = 14; PlayAction(HospitalScript::c_hho016cl_RunAnim); m_currentAction = HospitalScript::c_hho016cl_RunAnim; @@ -573,7 +573,7 @@ MxBool Hospital::HandleControl(LegoControlManagerNotificationParam& p_param) } else if (m_unk0x128 == 0) { m_unk0x128 = 1; - m_hospitalState->m_unk0x08.m_unk0x00 = 13; + m_hospitalState->m_unk0x08 = 13; m_destLocation = LegoGameState::e_infomain; DeleteObjects(&m_atomId, HospitalScript::c_hho002cl_RunAnim, HospitalScript::c_hho006cl_RunAnim); @@ -586,7 +586,7 @@ MxBool Hospital::HandleControl(LegoControlManagerNotificationParam& p_param) DeleteObjects(&m_atomId, HospitalScript::c_hho002cl_RunAnim, HospitalScript::c_hho006cl_RunAnim); if (m_unk0x100 == 1) { - m_hospitalState->m_unk0x08.m_unk0x00 = 15; + m_hospitalState->m_unk0x08 = 15; PlayAction(HospitalScript::c_hho016cl_RunAnim); m_currentAction = HospitalScript::c_hho016cl_RunAnim; @@ -594,7 +594,7 @@ MxBool Hospital::HandleControl(LegoControlManagerNotificationParam& p_param) } else if (m_unk0x128 == 0) { m_unk0x128 = 1; - m_hospitalState->m_unk0x08.m_unk0x00 = 13; + m_hospitalState->m_unk0x08 = 13; m_destLocation = LegoGameState::e_unk31; DeleteObjects(&m_atomId, HospitalScript::c_hho002cl_RunAnim, HospitalScript::c_hho006cl_RunAnim); @@ -669,7 +669,7 @@ MxResult Hospital::Tickle() MxBool Hospital::Escape() { DeleteObjects(&m_atomId, HospitalScript::c_hho002cl_RunAnim, 999); - m_hospitalState->m_unk0x08.m_unk0x00 = 0; + m_hospitalState->m_unk0x08 = 0; m_destLocation = LegoGameState::e_infomain;