Consolidate state and building entity classes (#989)

This commit is contained in:
Christian Semmler
2024-06-03 12:53:25 -04:00
committed by GitHub
parent 73bb37596e
commit 133a312aee
107 changed files with 2190 additions and 2569 deletions

View File

@@ -13,9 +13,10 @@
#include "mxnotificationmanager.h"
#include "mxtransitionmanager.h"
#include "police_actions.h"
#include "policestate.h"
#include "scripts.h"
DECOMP_SIZE_ASSERT(Police, 0x110)
DECOMP_SIZE_ASSERT(PoliceState, 0x10)
// FUNCTION: LEGO1 0x1005e130
Police::Police()
@@ -196,3 +197,60 @@ MxBool Police::Escape()
m_destLocation = LegoGameState::e_infomain;
return TRUE;
}
// FUNCTION: LEGO1 0x1005e7c0
PoliceState::PoliceState()
{
m_unk0x0c = 0;
m_policeScript = (rand() % 2 == 0) ? PoliceScript::c_nps002la_RunAnim : PoliceScript::c_nps001ni_RunAnim;
}
// FUNCTION: LEGO1 0x1005e990
MxResult PoliceState::Serialize(LegoFile* p_legoFile)
{
LegoState::Serialize(p_legoFile);
if (p_legoFile->IsReadMode()) {
p_legoFile->Read(&m_policeScript, sizeof(m_policeScript));
}
else {
PoliceScript::Script policeScript = m_policeScript;
p_legoFile->Write(&policeScript, sizeof(m_policeScript));
}
return SUCCESS;
}
// FUNCTION: LEGO1 0x1005ea40
void PoliceState::FUN_1005ea40()
{
PoliceScript::Script policeScript;
if (m_unk0x0c == 1) {
return;
}
switch (CurrentActor()->GetActorId()) {
case 4:
policeScript = PoliceScript::c_nps002la_RunAnim;
m_policeScript = policeScript;
break;
case 5:
policeScript = PoliceScript::c_nps001ni_RunAnim;
m_policeScript = policeScript;
break;
default:
policeScript = m_policeScript;
m_policeScript = policeScript == PoliceScript::c_nps002la_RunAnim ? PoliceScript::c_nps001ni_RunAnim
: PoliceScript::c_nps002la_RunAnim;
}
{
MxDSAction action;
action.SetObjectId(policeScript);
action.SetAtomId(*g_policeScript);
Start(&action);
}
m_unk0x0c = 1;
}