mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 02:31:15 +00:00
refactor police
This commit is contained in:
parent
6f02ce93d4
commit
5c5286ff86
@ -6,6 +6,7 @@
|
||||
#include "legogamestate.h"
|
||||
#include "legoworld.h"
|
||||
#include "mxdsaction.h"
|
||||
#include "police_actions.h"
|
||||
#include "radio.h"
|
||||
|
||||
class PoliceState;
|
||||
@ -15,17 +16,6 @@ class PoliceState;
|
||||
// Radio at 0xf8
|
||||
class Police : public LegoWorld {
|
||||
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() override; // vtable+0x00
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ class PoliceState : public LegoState {
|
||||
void FUN_1005ea40();
|
||||
|
||||
private:
|
||||
Police::PoliceScript m_policeScript; // 0x08
|
||||
PoliceScript::Script m_policeScript; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
};
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ DECOMP_SIZE_ASSERT(PoliceState, 0x10)
|
||||
PoliceState::PoliceState()
|
||||
{
|
||||
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
|
||||
@ -29,7 +29,7 @@ MxResult PoliceState::VTable0x1c(LegoFile* p_legoFile)
|
||||
p_legoFile->Read(&m_policeScript, sizeof(m_policeScript));
|
||||
}
|
||||
else {
|
||||
Police::PoliceScript policeScript = m_policeScript;
|
||||
PoliceScript::Script policeScript = m_policeScript;
|
||||
p_legoFile->Write(&policeScript, sizeof(m_policeScript));
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ MxResult PoliceState::VTable0x1c(LegoFile* p_legoFile)
|
||||
// FUNCTION: LEGO1 0x1005ea40
|
||||
void PoliceState::FUN_1005ea40()
|
||||
{
|
||||
Police::PoliceScript policeScript;
|
||||
PoliceScript::Script policeScript;
|
||||
|
||||
if (m_unk0x0c == 1) {
|
||||
return;
|
||||
@ -47,17 +47,17 @@ void PoliceState::FUN_1005ea40()
|
||||
|
||||
switch (CurrentActor()->GetActorId()) {
|
||||
case 4:
|
||||
policeScript = Police::PoliceScript::c_lauraAnim;
|
||||
policeScript = PoliceScript::c_nps002la_RunAnim;
|
||||
m_policeScript = policeScript;
|
||||
break;
|
||||
case 5:
|
||||
policeScript = Police::PoliceScript::c_nickAnim;
|
||||
policeScript = PoliceScript::c_nps001ni_RunAnim;
|
||||
m_policeScript = policeScript;
|
||||
break;
|
||||
default:
|
||||
policeScript = m_policeScript;
|
||||
m_policeScript = policeScript == Police::PoliceScript::c_lauraAnim ? Police::PoliceScript::c_nickAnim
|
||||
: Police::PoliceScript::c_lauraAnim;
|
||||
m_policeScript = policeScript == PoliceScript::c_nps002la_RunAnim ? PoliceScript::c_nps001ni_RunAnim
|
||||
: PoliceScript::c_nps002la_RunAnim;
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@ -103,35 +103,35 @@ MxLong Police::HandleClick(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
if (p_param.GetUnknown0x28() == 1) {
|
||||
switch (p_param.GetClickedObjectId()) {
|
||||
case c_leftArrowCtl:
|
||||
case c_rightArrowCtl:
|
||||
case PoliceScript::c_LeftArrow_Ctl:
|
||||
case PoliceScript::c_RightArrow_Ctl:
|
||||
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();
|
||||
m_transitionDestination = LegoGameState::Area::e_polidoor;
|
||||
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
|
||||
break;
|
||||
case c_infoCtl:
|
||||
case PoliceScript::c_Info_Ctl:
|
||||
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();
|
||||
m_transitionDestination = LegoGameState::Area::e_infomain;
|
||||
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
|
||||
break;
|
||||
case c_doorCtl:
|
||||
case PoliceScript::c_Door_Ctl:
|
||||
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();
|
||||
m_transitionDestination = LegoGameState::Area::e_copter;
|
||||
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
|
||||
break;
|
||||
case c_donutCtl:
|
||||
case PoliceScript::c_Donut_Ctl:
|
||||
m_policeState->FUN_1005ea40();
|
||||
}
|
||||
}
|
||||
@ -162,7 +162,7 @@ MxLong Police::HandleKeyPress(LegoEventNotificationParam& p_param)
|
||||
MxLong result = 0;
|
||||
|
||||
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);
|
||||
return 1;
|
||||
}
|
||||
@ -189,7 +189,7 @@ void Police::Enable(MxBool p_enable)
|
||||
// FUNCTION: LEGO1 0x1005e790
|
||||
MxBool Police::VTable0x64()
|
||||
{
|
||||
DeleteObjects(&m_atom, c_nickAnim, 510);
|
||||
DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, 510);
|
||||
m_transitionDestination = LegoGameState::e_infomain;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user