refactor police

This commit is contained in:
Ramen2X 2024-03-09 20:45:51 -05:00
parent 6f02ce93d4
commit 5c5286ff86
4 changed files with 19 additions and 29 deletions

View File

@ -6,6 +6,7 @@
#include "legogamestate.h" #include "legogamestate.h"
#include "legoworld.h" #include "legoworld.h"
#include "mxdsaction.h" #include "mxdsaction.h"
#include "police_actions.h"
#include "radio.h" #include "radio.h"
class PoliceState; class PoliceState;
@ -15,17 +16,6 @@ class PoliceState;
// Radio at 0xf8 // Radio at 0xf8
class Police : public LegoWorld { class Police : public LegoWorld {
public: public:
enum PoliceScript {
c_leftArrowCtl = 1,
c_rightArrowCtl = 2,
c_infoCtl = 3,
c_doorCtl = 4,
c_donutCtl = 5,
c_nickAnim = 500,
c_lauraAnim = 501,
};
Police(); Police();
~Police() override; // vtable+0x00 ~Police() override; // vtable+0x00

View File

@ -36,7 +36,7 @@ class PoliceState : public LegoState {
void FUN_1005ea40(); void FUN_1005ea40();
private: private:
Police::PoliceScript m_policeScript; // 0x08 PoliceScript::Script m_policeScript; // 0x08
undefined4 m_unk0x0c; // 0x0c undefined4 m_unk0x0c; // 0x0c
}; };

View File

@ -15,7 +15,7 @@ DECOMP_SIZE_ASSERT(PoliceState, 0x10)
PoliceState::PoliceState() PoliceState::PoliceState()
{ {
m_unk0x0c = 0; m_unk0x0c = 0;
m_policeScript = (rand() % 2 == 0) ? Police::PoliceScript::c_lauraAnim : Police::PoliceScript::c_nickAnim; m_policeScript = (rand() % 2 == 0) ? PoliceScript::c_nps002la_RunAnim : PoliceScript::c_nps001ni_RunAnim;
} }
// FUNCTION: LEGO1 0x1005e990 // FUNCTION: LEGO1 0x1005e990
@ -29,7 +29,7 @@ MxResult PoliceState::VTable0x1c(LegoFile* p_legoFile)
p_legoFile->Read(&m_policeScript, sizeof(m_policeScript)); p_legoFile->Read(&m_policeScript, sizeof(m_policeScript));
} }
else { else {
Police::PoliceScript policeScript = m_policeScript; PoliceScript::Script policeScript = m_policeScript;
p_legoFile->Write(&policeScript, sizeof(m_policeScript)); p_legoFile->Write(&policeScript, sizeof(m_policeScript));
} }
@ -39,7 +39,7 @@ MxResult PoliceState::VTable0x1c(LegoFile* p_legoFile)
// FUNCTION: LEGO1 0x1005ea40 // FUNCTION: LEGO1 0x1005ea40
void PoliceState::FUN_1005ea40() void PoliceState::FUN_1005ea40()
{ {
Police::PoliceScript policeScript; PoliceScript::Script policeScript;
if (m_unk0x0c == 1) { if (m_unk0x0c == 1) {
return; return;
@ -47,17 +47,17 @@ void PoliceState::FUN_1005ea40()
switch (CurrentActor()->GetActorId()) { switch (CurrentActor()->GetActorId()) {
case 4: case 4:
policeScript = Police::PoliceScript::c_lauraAnim; policeScript = PoliceScript::c_nps002la_RunAnim;
m_policeScript = policeScript; m_policeScript = policeScript;
break; break;
case 5: case 5:
policeScript = Police::PoliceScript::c_nickAnim; policeScript = PoliceScript::c_nps001ni_RunAnim;
m_policeScript = policeScript; m_policeScript = policeScript;
break; break;
default: default:
policeScript = m_policeScript; policeScript = m_policeScript;
m_policeScript = policeScript == Police::PoliceScript::c_lauraAnim ? Police::PoliceScript::c_nickAnim m_policeScript = policeScript == PoliceScript::c_nps002la_RunAnim ? PoliceScript::c_nps001ni_RunAnim
: Police::PoliceScript::c_lauraAnim; : PoliceScript::c_nps002la_RunAnim;
} }
{ {

View File

@ -103,35 +103,35 @@ MxLong Police::HandleClick(LegoControlManagerEvent& p_param)
{ {
if (p_param.GetUnknown0x28() == 1) { if (p_param.GetUnknown0x28() == 1) {
switch (p_param.GetClickedObjectId()) { switch (p_param.GetClickedObjectId()) {
case c_leftArrowCtl: case PoliceScript::c_LeftArrow_Ctl:
case c_rightArrowCtl: case PoliceScript::c_RightArrow_Ctl:
if (m_policeState->GetUnknown0x0c() == 1) { if (m_policeState->GetUnknown0x0c() == 1) {
DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim);
} }
BackgroundAudioManager()->Stop(); BackgroundAudioManager()->Stop();
m_transitionDestination = LegoGameState::Area::e_polidoor; m_transitionDestination = LegoGameState::Area::e_polidoor;
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
break; break;
case c_infoCtl: case PoliceScript::c_Info_Ctl:
if (m_policeState->GetUnknown0x0c() == 1) { if (m_policeState->GetUnknown0x0c() == 1) {
DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim);
} }
BackgroundAudioManager()->Stop(); BackgroundAudioManager()->Stop();
m_transitionDestination = LegoGameState::Area::e_infomain; m_transitionDestination = LegoGameState::Area::e_infomain;
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
break; break;
case c_doorCtl: case PoliceScript::c_Door_Ctl:
if (m_policeState->GetUnknown0x0c() == 1) { if (m_policeState->GetUnknown0x0c() == 1) {
DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim);
} }
BackgroundAudioManager()->Stop(); BackgroundAudioManager()->Stop();
m_transitionDestination = LegoGameState::Area::e_copter; m_transitionDestination = LegoGameState::Area::e_copter;
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
break; break;
case c_donutCtl: case PoliceScript::c_Donut_Ctl:
m_policeState->FUN_1005ea40(); m_policeState->FUN_1005ea40();
} }
} }
@ -162,7 +162,7 @@ MxLong Police::HandleKeyPress(LegoEventNotificationParam& p_param)
MxLong result = 0; MxLong result = 0;
if (p_param.GetKey() == ' ' && m_policeState->GetUnknown0x0c() == 1) { if (p_param.GetKey() == ' ' && m_policeState->GetUnknown0x0c() == 1) {
DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim);
m_policeState->SetUnknown0x0c(0); m_policeState->SetUnknown0x0c(0);
return 1; return 1;
} }
@ -189,7 +189,7 @@ void Police::Enable(MxBool p_enable)
// FUNCTION: LEGO1 0x1005e790 // FUNCTION: LEGO1 0x1005e790
MxBool Police::VTable0x64() MxBool Police::VTable0x64()
{ {
DeleteObjects(&m_atom, c_nickAnim, 510); DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, 510);
m_transitionDestination = LegoGameState::e_infomain; m_transitionDestination = LegoGameState::e_infomain;
return TRUE; return TRUE;
} }