From 0442fadc0ef66663287bf57e2153354b64750c04 Mon Sep 17 00:00:00 2001 From: Fabian Neundorf Date: Sat, 26 Jul 2025 00:58:49 +0200 Subject: [PATCH] Clear unknown in `InfocenterState` (#1657) --- LEGO1/lego/legoomni/include/infocenter.h | 21 ++- .../legoomni/src/entity/legonavcontroller.cpp | 4 +- LEGO1/lego/legoomni/src/worlds/infocenter.cpp | 167 +++++++++--------- .../legoomni/src/worlds/registrationbook.cpp | 6 +- 4 files changed, 109 insertions(+), 89 deletions(-) diff --git a/LEGO1/lego/legoomni/include/infocenter.h b/LEGO1/lego/legoomni/include/infocenter.h index 3c58b325..888816d1 100644 --- a/LEGO1/lego/legoomni/include/infocenter.h +++ b/LEGO1/lego/legoomni/include/infocenter.h @@ -18,6 +18,25 @@ class LegoControlManagerNotificationParam; // SIZE 0x94 class InfocenterState : public LegoState { public: + enum { + e_playCutscene = 0, + e_introCancelled = 1, + e_notRegistered = 2, + e_newState = 3, + e_selectedSave = 4, + e_selectedCharacterAndDestination = 5, + // e_6 = 6, + // e_7 = 7, + e_exitQueried = 8, + // e_9 = 9, + // e_10 = 10, + e_welcomeAnimation = 11, + e_exiting = 12, + e_playCredits = 13, + e_exitingToIsland = 14, + e_backToInfoAct1 = 15, + }; + InfocenterState(); ~InfocenterState() override; @@ -72,7 +91,7 @@ public: Playlist m_returnDialogue[3]; // 0x20 Playlist m_leaveDialogue[3]; // 0x44 Playlist m_bricksterDialogue; // 0x68 - MxU32 m_unk0x74; // 0x74 + MxU32 m_state; // 0x74 MxStillPresenter* m_letters[7]; // 0x78 }; diff --git a/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp b/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp index 8410c63f..b539e050 100644 --- a/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp @@ -666,10 +666,10 @@ MxLong LegoNavController::Notify(MxParam& p_param) InfocenterState* state = (InfocenterState*) GameState()->GetState("InfocenterState"); assert(state); - if (state != NULL && state->m_unk0x74 != 8 && currentWorld->Escape()) { + if (state != NULL && state->m_state != InfocenterState::e_exitQueried && currentWorld->Escape()) { BackgroundAudioManager()->Stop(); TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); - state->m_unk0x74 = 8; + state->m_state = InfocenterState::e_exitQueried; } } break; diff --git a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp index 67a21d69..957681d9 100644 --- a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp +++ b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp @@ -190,12 +190,13 @@ MxResult Infocenter::Create(MxDSAction& p_dsAction) m_infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState"); if (!m_infocenterState) { m_infocenterState = (InfocenterState*) GameState()->CreateState("InfocenterState"); - m_infocenterState->m_unk0x74 = 3; + m_infocenterState->m_state = InfocenterState::e_newState; } else { - if (m_infocenterState->m_unk0x74 != 8 && m_infocenterState->m_unk0x74 != 4 && - m_infocenterState->m_unk0x74 != 15) { - m_infocenterState->m_unk0x74 = 2; + if (m_infocenterState->m_state != InfocenterState::e_exitQueried && + m_infocenterState->m_state != InfocenterState::e_selectedSave && + m_infocenterState->m_state != InfocenterState::e_backToInfoAct1) { + m_infocenterState->m_state = InfocenterState::e_notRegistered; } MxS16 count, i; @@ -217,7 +218,7 @@ MxResult Infocenter::Create(MxDSAction& p_dsAction) GameState()->m_currentArea = LegoGameState::e_infomain; GameState()->StopArea(LegoGameState::e_previousArea); - if (m_infocenterState->m_unk0x74 == 4) { + if (m_infocenterState->m_state == InfocenterState::e_selectedSave) { LegoGameState* state = GameState(); state->m_previousArea = GameState()->m_unk0x42c; } @@ -266,9 +267,9 @@ MxLong Infocenter::Notify(MxParam& p_param) StopBookAnimation(); m_bookAnimationTimer = 0; - if (m_infocenterState->m_unk0x74 == 0x0c) { + if (m_infocenterState->m_state == InfocenterState::e_exiting) { StartCredits(); - m_infocenterState->m_unk0x74 = 0xd; + m_infocenterState->m_state = InfocenterState::e_playCredits; } else if (m_destLocation != 0) { BackgroundAudioManager()->RaiseVolume(); @@ -339,8 +340,8 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) m_bigInfoBlinkTimer = 0; } - switch (m_infocenterState->m_unk0x74) { - case 0: + switch (m_infocenterState->m_state) { + case InfocenterState::e_playCutscene: switch (m_currentCutscene) { case e_legoMovie: PlayCutscene(e_mindscapeMovie, FALSE); @@ -350,13 +351,13 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) return 1; case e_badEndMovie: StopCutscene(); - m_infocenterState->m_unk0x74 = 11; + m_infocenterState->m_state = InfocenterState::e_welcomeAnimation; PlayAction(InfomainScript::c_tic092in_RunAnim); m_currentCutscene = e_noIntro; return 1; case e_goodEndMovie: StopCutscene(); - m_infocenterState->m_unk0x74 = 11; + m_infocenterState->m_state = InfocenterState::e_welcomeAnimation; PlayAction(InfomainScript::c_tic089in_RunAnim); m_currentCutscene = e_noIntro; return 1; @@ -364,7 +365,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) // default / 2nd case probably? StopCutscene(); - m_infocenterState->m_unk0x74 = 11; + m_infocenterState->m_state = InfocenterState::e_welcomeAnimation; PlayAction(InfomainScript::c_iic001in_RunAnim); m_currentCutscene = e_noIntro; @@ -373,8 +374,8 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) return 1; } break; - case 1: - m_infocenterState->m_unk0x74 = 11; + case InfocenterState::e_introCancelled: + m_infocenterState->m_state = InfocenterState::e_welcomeAnimation; switch (m_currentCutscene) { case e_badEndMovie: @@ -389,30 +390,30 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) m_currentCutscene = e_noIntro; return 1; - case 2: + case InfocenterState::e_notRegistered: SetROIVisible(g_object2x4red, FALSE); SetROIVisible(g_object2x4grn, FALSE); BackgroundAudioManager()->RaiseVolume(); return 1; - case 4: + case InfocenterState::e_selectedSave: if (action->GetObjectId() == InfomainScript::c_GoTo_RegBook || action->GetObjectId() == InfomainScript::c_GoTo_RegBook_Red) { TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); - m_infocenterState->m_unk0x74 = 14; + m_infocenterState->m_state = InfocenterState::e_exitingToIsland; return 1; } break; - case 5: + case InfocenterState::e_selectedCharacterAndDestination: if (action->GetObjectId() == m_currentInfomainScript) { if (GameState()->GetCurrentAct() != LegoGameState::e_act3 && m_selectedCharacter != e_noCharacter) { GameState()->SetActor(m_selectedCharacter); } TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); - m_infocenterState->m_unk0x74 = 14; + m_infocenterState->m_state = InfocenterState::e_exitingToIsland; return 1; } break; - case 11: + case InfocenterState::e_welcomeAnimation: if (!m_infocenterState->HasRegistered() && m_currentInfomainScript != InfomainScript::c_Mama_All_Movie && m_currentInfomainScript != InfomainScript::c_Papa_All_Movie && m_currentInfomainScript != InfomainScript::c_Pepper_All_Movie && @@ -422,10 +423,10 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) PlayMusic(JukeboxScript::c_InformationCenter_Music); } - m_infocenterState->m_unk0x74 = 2; + m_infocenterState->m_state = InfocenterState::e_notRegistered; SetROIVisible("infoman", TRUE); return 1; - case 12: + case InfocenterState::e_exiting: if (action->GetObjectId() == m_currentInfomainScript) { TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); } @@ -452,13 +453,13 @@ void Infocenter::ReadyWorld() bg->Enable(TRUE); InitializeBitmaps(); - switch (m_infocenterState->m_unk0x74) { - case 3: + switch (m_infocenterState->m_state) { + case InfocenterState::e_newState: PlayCutscene(e_legoMovie, TRUE); - m_infocenterState->m_unk0x74 = 0; + m_infocenterState->m_state = InfocenterState::e_playCutscene; return; - case 4: - m_infocenterState->m_unk0x74 = 2; + case InfocenterState::e_selectedSave: + m_infocenterState->m_state = InfocenterState::e_notRegistered; if (!m_infocenterState->HasRegistered()) { m_bookAnimationTimer = 1; } @@ -467,7 +468,7 @@ void Infocenter::ReadyWorld() PlayMusic(JukeboxScript::c_InformationCenter_Music); Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); return; - case 5: + case InfocenterState::e_selectedCharacterAndDestination: default: { PlayMusic(JukeboxScript::c_InformationCenter_Music); @@ -486,13 +487,13 @@ void Infocenter::ReadyWorld() break; } - case 8: + case InfocenterState::e_exitQueried: PlayMusic(JukeboxScript::c_InformationCenter_Music); PlayAction(InfomainScript::c_iic043in_RunAnim); Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); return; - case 0xf: - m_infocenterState->m_unk0x74 = 2; + case InfocenterState::e_backToInfoAct1: + m_infocenterState->m_state = InfocenterState::e_notRegistered; if (!m_infocenterState->HasRegistered()) { m_bookAnimationTimer = 1; } @@ -504,7 +505,7 @@ void Infocenter::ReadyWorld() } break; case LegoGameState::e_act2: { - if (m_infocenterState->m_unk0x74 == 8) { + if (m_infocenterState->m_state == InfocenterState::e_exitQueried) { PlayMusic(JukeboxScript::c_InformationCenter_Music); bgRed->Enable(TRUE); PlayAction(InfomainScript::c_iic043in_RunAnim); @@ -518,11 +519,11 @@ void Infocenter::ReadyWorld() if (state && state->GetUnknown0x08() == 0x68) { bg->Enable(TRUE); PlayCutscene(e_badEndMovie, TRUE); - m_infocenterState->m_unk0x74 = 0; + m_infocenterState->m_state = InfocenterState::e_playCutscene; return; } - if (m_infocenterState->m_unk0x74 == 4) { + if (m_infocenterState->m_state == InfocenterState::e_selectedSave) { bgRed->Enable(TRUE); if (GameState()->GetCurrentAct() == GameState()->GetLoadedAct()) { @@ -531,7 +532,7 @@ void Infocenter::ReadyWorld() GameState()->m_currentArea = LegoGameState::e_infomain; } - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; m_destLocation = LegoGameState::e_act2main; InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue(); @@ -549,7 +550,7 @@ void Infocenter::ReadyWorld() break; } case LegoGameState::e_act3: { - if (m_infocenterState->m_unk0x74 == 8) { + if (m_infocenterState->m_state == InfocenterState::e_exitQueried) { PlayMusic(JukeboxScript::c_InformationCenter_Music); bgRed->Enable(TRUE); PlayAction(InfomainScript::c_iic043in_RunAnim); @@ -563,18 +564,18 @@ void Infocenter::ReadyWorld() if (state && state->GetUnknown0x08() == 3) { bg->Enable(TRUE); PlayCutscene(e_badEndMovie, TRUE); - m_infocenterState->m_unk0x74 = 0; + m_infocenterState->m_state = InfocenterState::e_playCutscene; return; } if (state && state->GetUnknown0x08() == 2) { bg->Enable(TRUE); PlayCutscene(e_goodEndMovie, TRUE); - m_infocenterState->m_unk0x74 = 0; + m_infocenterState->m_state = InfocenterState::e_playCutscene; return; } - if (m_infocenterState->m_unk0x74 == 4) { + if (m_infocenterState->m_state == InfocenterState::e_selectedSave) { bgRed->Enable(TRUE); if (GameState()->GetCurrentAct() == GameState()->GetLoadedAct()) { @@ -583,7 +584,7 @@ void Infocenter::ReadyWorld() GameState()->m_currentArea = LegoGameState::e_infomain; } - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; m_destLocation = LegoGameState::e_act3script; InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue(); @@ -602,7 +603,7 @@ void Infocenter::ReadyWorld() } } - m_infocenterState->m_unk0x74 = 11; + m_infocenterState->m_state = InfocenterState::e_welcomeAnimation; Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); } @@ -701,37 +702,37 @@ MxLong Infocenter::HandleKeyPress(MxS8 p_key) MxLong result = 0; if (p_key == VK_SPACE && m_worldStarted) { - switch (m_infocenterState->m_unk0x74) { - case 0: + switch (m_infocenterState->m_state) { + case InfocenterState::e_playCutscene: StopCutscene(); - m_infocenterState->m_unk0x74 = 1; + m_infocenterState->m_state = InfocenterState::e_introCancelled; if (!m_infocenterState->HasRegistered()) { m_bookAnimationTimer = 1; return 1; } break; - case 1: - case 4: + case InfocenterState::e_introCancelled: + case InfocenterState::e_selectedSave: break; default: { InfomainScript::Script script = m_currentInfomainScript; StopCurrentAction(); - switch (m_infocenterState->m_unk0x74) { - case 5: - case 12: + switch (m_infocenterState->m_state) { + case InfocenterState::e_selectedCharacterAndDestination: + case InfocenterState::e_exiting: m_currentInfomainScript = script; return 1; default: - m_infocenterState->m_unk0x74 = 2; + m_infocenterState->m_state = InfocenterState::e_notRegistered; return 1; - case 8: - case 11: + case InfocenterState::e_exitQueried: + case InfocenterState::e_welcomeAnimation: break; } } - case 13: + case InfocenterState::e_playCredits: StopCredits(); break; } @@ -842,37 +843,37 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) case InfocenterMapEntry::e_jetrace: if (m_selectedCharacter) { m_destLocation = LegoGameState::e_jetraceExterior; - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; } break; case InfocenterMapEntry::e_carrace: if (m_selectedCharacter) { m_destLocation = LegoGameState::e_carraceExterior; - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; } break; case InfocenterMapEntry::e_pizzeria: if (m_selectedCharacter) { m_destLocation = LegoGameState::e_pizzeriaExterior; - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; } break; case InfocenterMapEntry::e_garage: if (m_selectedCharacter) { m_destLocation = LegoGameState::e_garageExterior; - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; } break; case InfocenterMapEntry::e_hospital: if (m_selectedCharacter) { m_destLocation = LegoGameState::e_hospitalExterior; - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; } break; case InfocenterMapEntry::e_police: if (m_selectedCharacter) { m_destLocation = LegoGameState::e_policeExterior; - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; } break; } @@ -882,13 +883,13 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) m_dragPresenter->Enable(FALSE); m_dragPresenter = NULL; - if (m_infocenterState->m_unk0x74 == 5) { + if (m_infocenterState->m_state == InfocenterState::e_selectedCharacterAndDestination) { InfomainScript::Script dialogueToPlay; if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { if (!m_infocenterState->HasRegistered()) { dialogueToPlay = InfomainScript::c_iic007in_PlayWav; - m_infocenterState->m_unk0x74 = 2; + m_infocenterState->m_state = InfocenterState::e_notRegistered; m_destLocation = LegoGameState::e_undefined; } else { @@ -952,7 +953,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) switch (p_param.m_clickedObjectId) { case InfomainScript::c_LeftArrow_Ctl: - m_infocenterState->m_unk0x74 = 14; + m_infocenterState->m_state = InfocenterState::e_exitingToIsland; StopCurrentAction(); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { @@ -967,7 +968,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) break; case InfomainScript::c_RightArrow_Ctl: - m_infocenterState->m_unk0x74 = 14; + m_infocenterState->m_state = InfocenterState::e_exitingToIsland; StopCurrentAction(); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { @@ -986,10 +987,10 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) m_radio.Stop(); break; case InfomainScript::c_Door_Ctl: - if (m_infocenterState->m_unk0x74 != 8) { + if (m_infocenterState->m_state != InfocenterState::e_exitQueried) { actionToPlay = InfomainScript::c_iic043in_RunAnim; m_radio.Stop(); - m_infocenterState->m_unk0x74 = 8; + m_infocenterState->m_state = InfocenterState::e_exitQueried; } break; @@ -1025,7 +1026,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) case LegoGameState::e_infodoor: case LegoGameState::e_regbook: case LegoGameState::e_infoscor: - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; m_destLocation = state->m_previousArea; actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue(); m_radio.Stop(); @@ -1044,10 +1045,10 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) if (state->GetActorId() != LegoActor::c_none) { if (!m_infocenterState->HasRegistered()) { PlayAction(InfomainScript::c_iic007in_PlayWav); - m_infocenterState->m_unk0x74 = 2; + m_infocenterState->m_state = InfocenterState::e_notRegistered; } else { - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; m_destLocation = state->m_previousArea; actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue(); m_radio.Stop(); @@ -1060,14 +1061,14 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) } break; case LegoGameState::e_act2: - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; m_destLocation = LegoGameState::e_act2main; actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue(); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); break; case LegoGameState::e_act3: - m_infocenterState->m_unk0x74 = 5; + m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination; m_destLocation = LegoGameState::e_act3script; actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue(); InputManager()->DisableInputProcessing(); @@ -1077,7 +1078,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param) break; case InfomainScript::c_Book_Ctl: m_destLocation = LegoGameState::e_regbook; - m_infocenterState->m_unk0x74 = 4; + m_infocenterState->m_state = InfocenterState::e_selectedSave; actionToPlay = GameState()->GetCurrentAct() != LegoGameState::e_act1 ? InfomainScript::c_GoTo_RegBook_Red : InfomainScript::c_GoTo_RegBook; m_radio.Stop(); @@ -1128,13 +1129,13 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) MxCore* sender = p_param.GetSender(); if (sender == NULL) { - if (m_infocenterState->m_unk0x74 == 8) { + if (m_infocenterState->m_state == InfocenterState::e_exitQueried) { m_infoManDialogueTimer = 0; StopCutscene(); PlayAction(InfomainScript::c_iic043in_RunAnim); } } - else if (sender->IsA("MxEntity") && m_infocenterState->m_unk0x74 != 5 && m_infocenterState->m_unk0x74 != 12) { + else if (sender->IsA("MxEntity") && m_infocenterState->m_state != InfocenterState::e_selectedCharacterAndDestination && m_infocenterState->m_state != InfocenterState::e_exiting) { switch (((MxEntity*) sender)->GetEntityId()) { case 5: { m_infoManDialogueTimer = 0; @@ -1153,21 +1154,21 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) return 1; } case 6: - if (m_infocenterState->m_unk0x74 == 8) { + if (m_infocenterState->m_state == InfocenterState::e_exitQueried) { StopCurrentAction(); SetROIVisible(g_object2x4red, FALSE); SetROIVisible(g_object2x4grn, FALSE); - m_infocenterState->m_unk0x74 = 2; + m_infocenterState->m_state = InfocenterState::e_notRegistered; PlayAction(InfomainScript::c_iicb28in_RunAnim); return 1; } case 7: - if (m_infocenterState->m_unk0x74 == 8) { + if (m_infocenterState->m_state == InfocenterState::e_exitQueried) { if (m_infocenterState->HasRegistered()) { GameState()->Save(0); } - m_infocenterState->m_unk0x74 = 12; + m_infocenterState->m_state = InfocenterState::e_exiting; PlayAction(InfomainScript::c_iic046in_RunAnim); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); @@ -1409,17 +1410,17 @@ void Infocenter::Reset() MxBool Infocenter::Escape() { if (m_infocenterState != NULL) { - MxU32 val = m_infocenterState->m_unk0x74; + MxU32 val = m_infocenterState->m_state; - if (val == 0) { + if (val == InfocenterState::e_playCutscene) { StopCutscene(); - m_infocenterState->m_unk0x74 = 1; + m_infocenterState->m_state = InfocenterState::e_introCancelled; } - else if (val == 13) { + else if (val == InfocenterState::e_playCredits) { StopCredits(); } - else if (val != 8) { - m_infocenterState->m_unk0x74 = 8; + else if (val != InfocenterState::e_exitQueried) { + m_infocenterState->m_state = InfocenterState::e_exitQueried; #ifdef COMPAT_MODE { diff --git a/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp b/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp index 307206ce..42f5c90c 100644 --- a/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp +++ b/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp @@ -238,10 +238,10 @@ MxLong RegistrationBook::HandleControl(LegoControlManagerNotificationParam& p_pa DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { - m_infocenterState->m_unk0x74 = 15; + m_infocenterState->m_state = InfocenterState::e_backToInfoAct1; } else { - m_infocenterState->m_unk0x74 = 2; + m_infocenterState->m_state = InfocenterState::e_notRegistered; } TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); @@ -323,7 +323,7 @@ void RegistrationBook::FUN_100775c0(MxS16 p_playerIndex) break; } - m_infocenterState->m_unk0x74 = 4; + m_infocenterState->m_state = InfocenterState::e_selectedSave; if (m_unk0x2b8 == 0 && !m_unk0x2c1) { DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);