|
|
|
@@ -50,12 +50,6 @@ Hospital::Hospital()
|
|
|
|
|
NotificationManager()->Register(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FUNCTION: LEGO1 0x100746a0
|
|
|
|
|
MxBool Hospital::VTable0x5c()
|
|
|
|
|
{
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FUNCTION: LEGO1 0x100747f0
|
|
|
|
|
Hospital::~Hospital()
|
|
|
|
|
{
|
|
|
|
@@ -67,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;
|
|
|
|
@@ -87,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;
|
|
|
|
@@ -203,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];
|
|
|
|
@@ -212,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;
|
|
|
|
@@ -249,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;
|
|
|
|
@@ -265,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;
|
|
|
|
@@ -275,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;
|
|
|
|
@@ -294,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;
|
|
|
|
@@ -313,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;
|
|
|
|
@@ -332,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;
|
|
|
|
@@ -351,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;
|
|
|
|
@@ -369,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:
|
|
|
|
@@ -416,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);
|
|
|
|
|
|
|
|
|
@@ -435,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(
|
|
|
|
@@ -452,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;
|
|
|
|
@@ -471,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;
|
|
|
|
@@ -490,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;
|
|
|
|
@@ -509,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;
|
|
|
|
@@ -528,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;
|
|
|
|
@@ -571,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;
|
|
|
|
@@ -579,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);
|
|
|
|
@@ -592,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;
|
|
|
|
@@ -600,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);
|
|
|
|
@@ -675,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;
|
|
|
|
|
|
|
|
|
|