Infocenter::HandleControl maybe down to entropy

This commit is contained in:
jonschz 2025-02-15 15:33:02 +01:00
parent 4cccf35d4a
commit bcdcb9d0fc
3 changed files with 42 additions and 29 deletions

View File

@ -630,6 +630,7 @@ MxCore* LegoWorld::Find(const char* p_class, const char* p_name)
} }
// FUNCTION: LEGO1 0x10021790 // FUNCTION: LEGO1 0x10021790
// FUNCTION: BETA10 0x100db3de
MxCore* LegoWorld::Find(const MxAtomId& p_atom, MxS32 p_entityId) MxCore* LegoWorld::Find(const MxAtomId& p_atom, MxS32 p_entityId)
{ {
LegoEntityListCursor entityCursor(m_entityList); LegoEntityListCursor entityCursor(m_entityList);

View File

@ -38,6 +38,7 @@ MxAtomId* g_elevbottScript = NULL;
MxAtomId* g_infodoorScript = NULL; MxAtomId* g_infodoorScript = NULL;
// GLOBAL: LEGO1 0x100f4548 // GLOBAL: LEGO1 0x100f4548
// GLOBAL: BETA10 0x102114dc
MxAtomId* g_infomainScript = NULL; MxAtomId* g_infomainScript = NULL;
// GLOBAL: LEGO1 0x100f454c // GLOBAL: LEGO1 0x100f454c

View File

@ -1050,37 +1050,47 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
case InfomainScript::c_BigInfo_Ctl: case InfomainScript::c_BigInfo_Ctl:
switch (state->GetCurrentAct()) { switch (state->GetCurrentAct()) {
case LegoGameState::e_act1: case LegoGameState::e_act1:
switch (state->GetPreviousArea()) { if (state->GetPreviousArea()) {
case LegoGameState::e_infodoor: switch (state->GetPreviousArea()) {
case LegoGameState::e_regbook: case LegoGameState::e_infodoor:
case LegoGameState::e_infoscor: case LegoGameState::e_regbook:
m_infocenterState->SetUnknown0x74(5); case LegoGameState::e_infoscor:
m_destLocation = state->GetPreviousArea(); m_infocenterState->SetUnknown0x74(5);
actionToPlay = m_destLocation = state->GetPreviousArea();
(InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()) actionToPlay =
.Next(); (InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct())
m_radio.Stop(); .Next();
InputManager()->DisableInputProcessing(); m_radio.Stop();
InputManager()->SetUnknown336(TRUE); InputManager()->DisableInputProcessing();
break; InputManager()->SetUnknown336(TRUE);
case LegoGameState::e_unk4: break;
if (state->GetActorId() != LegoActor::c_none) { case LegoGameState::e_elevbott:
if (m_infocenterState->HasRegistered()) { case LegoGameState::e_elevride:
m_infocenterState->SetUnknown0x74(5); case LegoGameState::e_elevride2:
m_destLocation = state->GetPreviousArea(); case LegoGameState::e_elevopen:
actionToPlay = (InfomainScript::Script) m_infocenterState case LegoGameState::e_seaview:
->GetLeaveDialogue(GameState()->GetCurrentAct()) case LegoGameState::e_observe:
.Next(); case LegoGameState::e_elevdown:
m_radio.Stop(); break;
InputManager()->DisableInputProcessing(); default:
InputManager()->SetUnknown336(TRUE); if (state->GetActorId() != LegoActor::c_none) {
} if (!m_infocenterState->HasRegistered()) {
else { PlayAction(InfomainScript::c_iic007in_PlayWav);
PlayAction(InfomainScript::c_iic007in_PlayWav); m_infocenterState->SetUnknown0x74(2);
m_infocenterState->SetUnknown0x74(2); }
else {
m_infocenterState->SetUnknown0x74(5);
m_destLocation = state->GetPreviousArea();
actionToPlay = (InfomainScript::Script) m_infocenterState
->GetLeaveDialogue(GameState()->GetCurrentAct())
.Next();
m_radio.Stop();
InputManager()->DisableInputProcessing();
InputManager()->SetUnknown336(TRUE);
}
} }
break;
} }
break;
} }
break; break;
case LegoGameState::e_act2: case LegoGameState::e_act2:
@ -1523,6 +1533,7 @@ void Infocenter::StopCredits()
} }
// FUNCTION: LEGO1 0x10071300 // FUNCTION: LEGO1 0x10071300
// FUNCTION: BETA10 0x1002ee8c
void Infocenter::PlayAction(InfomainScript::Script p_script) void Infocenter::PlayAction(InfomainScript::Script p_script)
{ {
MxDSAction action; MxDSAction action;