Match Infocenter::ReadyWorld (#1389)

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
jonschz
2025-02-21 21:26:10 +01:00
committed by GitHub
parent 777dfa82ec
commit 78e924e4ee
3 changed files with 29 additions and 31 deletions

View File

@@ -51,10 +51,15 @@ public:
return (InfomainScript::Script) m_leaveDialogue[GameState()->GetCurrentAct()].Next(); return (InfomainScript::Script) m_leaveDialogue[GameState()->GetCurrentAct()].Next();
} }
// FUNCTION: BETA10 0x10031ac0
InfomainScript::Script GetNextReturnDialogue()
{
return (InfomainScript::Script) m_returnDialogue[GameState()->GetCurrentAct()].Next();
}
// TODO: These probably don't exist according to BETA // TODO: These probably don't exist according to BETA
Playlist& GetExitDialogueAct1() { return m_exitDialogueAct1; } Playlist& GetExitDialogueAct1() { return m_exitDialogueAct1; }
Playlist& GetExitDialogueAct23() { return m_exitDialogueAct23; } Playlist& GetExitDialogueAct23() { return m_exitDialogueAct23; }
Playlist& GetReturnDialogue(LegoGameState::Act p_act) { return m_returnDialogue[p_act]; }
Playlist& GetBricksterDialogue() { return m_bricksterDialogue; } Playlist& GetBricksterDialogue() { return m_bricksterDialogue; }
// SYNTHETIC: LEGO1 0x10071900 // SYNTHETIC: LEGO1 0x10071900

View File

@@ -6,6 +6,7 @@ DECOMP_SIZE_ASSERT(LegoState, 0x08)
DECOMP_SIZE_ASSERT(LegoState::Playlist, 0x0c) DECOMP_SIZE_ASSERT(LegoState::Playlist, 0x0c)
// FUNCTION: LEGO1 0x10014d00 // FUNCTION: LEGO1 0x10014d00
// FUNCTION: BETA10 0x10022580
MxU32 LegoState::Playlist::Next() MxU32 LegoState::Playlist::Next()
{ {
MxU32 objectId; MxU32 objectId;

View File

@@ -456,7 +456,7 @@ void Infocenter::ReadyWorld()
case 3: case 3:
PlayCutscene(e_legoMovie, TRUE); PlayCutscene(e_legoMovie, TRUE);
m_infocenterState->m_unk0x74 = 0; m_infocenterState->m_unk0x74 = 0;
break; return;
case 4: case 4:
m_infocenterState->m_unk0x74 = 2; m_infocenterState->m_unk0x74 = 2;
if (!m_infocenterState->HasRegistered()) { if (!m_infocenterState->HasRegistered()) {
@@ -466,13 +466,12 @@ void Infocenter::ReadyWorld()
PlayAction(InfomainScript::c_iicx18in_RunAnim); PlayAction(InfomainScript::c_iicx18in_RunAnim);
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
break; return;
case 5: case 5:
default: { default: {
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
InfomainScript::Script script = InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
(InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next();
PlayAction(script); PlayAction(script);
if (script == InfomainScript::c_iicx26in_RunAnim) { if (script == InfomainScript::c_iicx26in_RunAnim) {
@@ -485,15 +484,13 @@ void Infocenter::ReadyWorld()
m_bookAnimationTimer = 1; m_bookAnimationTimer = 1;
} }
m_infocenterState->m_unk0x74 = 11;
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
break; break;
} }
case 8: case 8:
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
PlayAction(InfomainScript::c_iic043in_RunAnim); PlayAction(InfomainScript::c_iic043in_RunAnim);
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
break; return;
case 0xf: case 0xf:
m_infocenterState->m_unk0x74 = 2; m_infocenterState->m_unk0x74 = 2;
if (!m_infocenterState->HasRegistered()) { if (!m_infocenterState->HasRegistered()) {
@@ -503,9 +500,9 @@ void Infocenter::ReadyWorld()
PlayAction(InfomainScript::c_iicx17in_RunAnim); PlayAction(InfomainScript::c_iicx17in_RunAnim);
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
break;
}
return; return;
}
break;
case LegoGameState::e_act2: { case LegoGameState::e_act2: {
if (m_infocenterState->m_unk0x74 == 8) { if (m_infocenterState->m_unk0x74 == 8) {
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
@@ -537,8 +534,7 @@ void Infocenter::ReadyWorld()
m_infocenterState->m_unk0x74 = 5; m_infocenterState->m_unk0x74 = 5;
m_destLocation = LegoGameState::e_act2main; m_destLocation = LegoGameState::e_act2main;
InfomainScript::Script script = InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
(InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next();
PlayAction(script); PlayAction(script);
InputManager()->DisableInputProcessing(); InputManager()->DisableInputProcessing();
@@ -547,8 +543,7 @@ void Infocenter::ReadyWorld()
} }
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
InfomainScript::Script script = InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
(InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next();
PlayAction(script); PlayAction(script);
bgRed->Enable(TRUE); bgRed->Enable(TRUE);
break; break;
@@ -565,8 +560,7 @@ void Infocenter::ReadyWorld()
Act3State* state = (Act3State*) GameState()->GetState("Act3State"); Act3State* state = (Act3State*) GameState()->GetState("Act3State");
GameState()->FindLoadedAct(); GameState()->FindLoadedAct();
if (state) { if (state && state->GetUnknown0x08() == 3) {
if (state->GetUnknown0x08() == 3) {
bg->Enable(TRUE); bg->Enable(TRUE);
PlayCutscene(e_badEndMovie, TRUE); PlayCutscene(e_badEndMovie, TRUE);
m_infocenterState->m_unk0x74 = 0; m_infocenterState->m_unk0x74 = 0;
@@ -579,7 +573,6 @@ void Infocenter::ReadyWorld()
m_infocenterState->m_unk0x74 = 0; m_infocenterState->m_unk0x74 = 0;
return; return;
} }
}
if (m_infocenterState->m_unk0x74 == 4) { if (m_infocenterState->m_unk0x74 == 4) {
bgRed->Enable(TRUE); bgRed->Enable(TRUE);
@@ -593,8 +586,7 @@ void Infocenter::ReadyWorld()
m_infocenterState->m_unk0x74 = 5; m_infocenterState->m_unk0x74 = 5;
m_destLocation = LegoGameState::e_act3script; m_destLocation = LegoGameState::e_act3script;
InfomainScript::Script script = InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
(InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next();
PlayAction(script); PlayAction(script);
InputManager()->DisableInputProcessing(); InputManager()->DisableInputProcessing();
@@ -603,8 +595,7 @@ void Infocenter::ReadyWorld()
} }
PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayMusic(JukeboxScript::c_InformationCenter_Music);
InfomainScript::Script script = InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
(InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next();
PlayAction(script); PlayAction(script);
bgRed->Enable(TRUE); bgRed->Enable(TRUE);
break; break;
@@ -1228,6 +1219,7 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param)
} }
// FUNCTION: LEGO1 0x10070aa0 // FUNCTION: LEGO1 0x10070aa0
// FUNCTION: BETA10 0x10030508
void Infocenter::Enable(MxBool p_enable) void Infocenter::Enable(MxBool p_enable)
{ {
LegoWorld::Enable(p_enable); LegoWorld::Enable(p_enable);