mirror of
https://github.com/isledecomp/isle-portable.git
synced 2025-09-22 03:22:35 -04:00
Clear unknowns in Infocenter
and InfocenterMapEntry
(#1609)
This commit is contained in:
parent
8ffe7b776a
commit
c7fda26cf4
@ -78,10 +78,20 @@ public:
|
||||
|
||||
// SIZE 0x18
|
||||
struct InfocenterMapEntry {
|
||||
enum {
|
||||
e_infocenter = 3,
|
||||
e_jetrace = 10,
|
||||
e_carrace = 11,
|
||||
e_pizzeria = 12,
|
||||
e_garage = 13,
|
||||
e_hospital = 14,
|
||||
e_police = 15,
|
||||
};
|
||||
|
||||
InfocenterMapEntry();
|
||||
|
||||
MxStillPresenter* m_destCtl; // 0x00
|
||||
undefined4 m_unk0x04; // 0x04
|
||||
MxU32 m_target; // 0x04
|
||||
MxRect<MxS32> m_area; // 0x08
|
||||
};
|
||||
|
||||
@ -154,7 +164,7 @@ private:
|
||||
void PlayCutscene(Cutscene p_entityId, MxBool p_scale);
|
||||
void StopCutscene();
|
||||
|
||||
void FUN_10070d10(MxS32 p_x, MxS32 p_y);
|
||||
void UpdateEnabledGlowControl(MxS32 p_x, MxS32 p_y);
|
||||
|
||||
void StartCredits();
|
||||
void StopCredits();
|
||||
@ -173,12 +183,12 @@ private:
|
||||
Radio m_radio; // 0x10c
|
||||
MxStillPresenter* m_dragPresenter; // 0x11c
|
||||
InfocenterMapEntry m_glowInfo[7]; // 0x120
|
||||
MxS16 m_unk0x1c8; // 0x1c8
|
||||
MxS16 m_enabledGlowControl; // 0x1c8
|
||||
MxStillPresenter* m_frame; // 0x1cc
|
||||
MxS16 m_infoManDialogueTimer; // 0x1d0
|
||||
MxS16 m_bookAnimationTimer; // 0x1d2
|
||||
MxU16 m_unk0x1d4; // 0x1d4
|
||||
MxS16 m_unk0x1d6; // 0x1d6
|
||||
MxU16 m_playingMovieCounter; // 0x1d4
|
||||
MxS16 m_bigInfoBlinkTimer; // 0x1d6
|
||||
};
|
||||
|
||||
#endif // INFOCENTER_H
|
||||
|
@ -138,14 +138,14 @@ Infocenter::Infocenter()
|
||||
|
||||
memset(&m_glowInfo, 0, sizeof(m_glowInfo));
|
||||
|
||||
m_unk0x1c8 = -1;
|
||||
m_enabledGlowControl = -1;
|
||||
SetAppCursor(e_cursorBusy);
|
||||
NotificationManager()->Register(this);
|
||||
|
||||
m_infoManDialogueTimer = 0;
|
||||
m_bookAnimationTimer = 0;
|
||||
m_unk0x1d4 = 0;
|
||||
m_unk0x1d6 = 0;
|
||||
m_playingMovieCounter = 0;
|
||||
m_bigInfoBlinkTimer = 0;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1006ec80
|
||||
@ -296,11 +296,11 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
||||
action->GetObjectId() == InfomainScript::c_Pepper_All_Movie ||
|
||||
action->GetObjectId() == InfomainScript::c_Nick_All_Movie ||
|
||||
action->GetObjectId() == InfomainScript::c_Laura_All_Movie)) {
|
||||
if (m_unk0x1d4) {
|
||||
m_unk0x1d4--;
|
||||
if (m_playingMovieCounter) {
|
||||
m_playingMovieCounter--;
|
||||
}
|
||||
|
||||
if (!m_unk0x1d4) {
|
||||
if (!m_playingMovieCounter) {
|
||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||
GameState()->SetActor(m_selectedCharacter);
|
||||
|
||||
@ -336,7 +336,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
||||
|
||||
if (action->GetObjectId() == InfomainScript::c_iicx26in_RunAnim) {
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, action->GetAtomId().GetInternal(), 0);
|
||||
m_unk0x1d6 = 0;
|
||||
m_bigInfoBlinkTimer = 0;
|
||||
}
|
||||
|
||||
switch (m_infocenterState->m_unk0x74) {
|
||||
@ -441,8 +441,8 @@ void Infocenter::ReadyWorld()
|
||||
{
|
||||
m_infoManDialogueTimer = 0;
|
||||
m_bookAnimationTimer = 0;
|
||||
m_unk0x1d4 = 0;
|
||||
m_unk0x1d6 = 0;
|
||||
m_playingMovieCounter = 0;
|
||||
m_bigInfoBlinkTimer = 0;
|
||||
|
||||
MxStillPresenter* bg = (MxStillPresenter*) Find("MxStillPresenter", "Background_Bitmap");
|
||||
MxStillPresenter* bgRed = (MxStillPresenter*) Find("MxStillPresenter", "BackgroundRed_Bitmap");
|
||||
@ -474,8 +474,8 @@ void Infocenter::ReadyWorld()
|
||||
InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
|
||||
PlayAction(script);
|
||||
|
||||
if (script == InfomainScript::c_iicx26in_RunAnim) {
|
||||
m_unk0x1d6 = 1;
|
||||
if (script == InfomainScript::c_iicx26in_RunAnim) { // want to get back? Click on I!
|
||||
m_bigInfoBlinkTimer = 1;
|
||||
}
|
||||
|
||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||
@ -631,37 +631,37 @@ void Infocenter::InitializeBitmaps()
|
||||
m_glowInfo[0].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Info_A_Bitmap");
|
||||
assert(m_glowInfo[0].m_destCtl);
|
||||
m_glowInfo[0].m_area = MxRect<MxS32>(391, 182, 427, 230);
|
||||
m_glowInfo[0].m_unk0x04 = 3;
|
||||
m_glowInfo[0].m_target = InfocenterMapEntry::e_infocenter;
|
||||
|
||||
m_glowInfo[1].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Boat_A_Bitmap");
|
||||
assert(m_glowInfo[1].m_destCtl);
|
||||
m_glowInfo[1].m_area = MxRect<MxS32>(304, 225, 350, 268);
|
||||
m_glowInfo[1].m_unk0x04 = 10;
|
||||
m_glowInfo[1].m_target = InfocenterMapEntry::e_jetrace;
|
||||
|
||||
m_glowInfo[2].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Race_A_Bitmap");
|
||||
assert(m_glowInfo[1].m_destCtl); // DECOMP: intentional typo
|
||||
m_glowInfo[2].m_area = MxRect<MxS32>(301, 133, 347, 181);
|
||||
m_glowInfo[2].m_unk0x04 = 11;
|
||||
m_glowInfo[2].m_target = InfocenterMapEntry::e_carrace;
|
||||
|
||||
m_glowInfo[3].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Pizza_A_Bitmap");
|
||||
assert(m_glowInfo[3].m_destCtl);
|
||||
m_glowInfo[3].m_area = MxRect<MxS32>(289, 182, 335, 225);
|
||||
m_glowInfo[3].m_unk0x04 = 12;
|
||||
m_glowInfo[3].m_target = InfocenterMapEntry::e_pizzeria;
|
||||
|
||||
m_glowInfo[4].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Gas_A_Bitmap");
|
||||
assert(m_glowInfo[4].m_destCtl);
|
||||
m_glowInfo[4].m_area = MxRect<MxS32>(350, 161, 391, 209);
|
||||
m_glowInfo[4].m_unk0x04 = 13;
|
||||
m_glowInfo[4].m_target = InfocenterMapEntry::e_garage;
|
||||
|
||||
m_glowInfo[5].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Med_A_Bitmap");
|
||||
assert(m_glowInfo[5].m_destCtl);
|
||||
m_glowInfo[5].m_area = MxRect<MxS32>(392, 130, 438, 176);
|
||||
m_glowInfo[5].m_unk0x04 = 14;
|
||||
m_glowInfo[5].m_target = InfocenterMapEntry::e_hospital;
|
||||
|
||||
m_glowInfo[6].m_destCtl = (MxStillPresenter*) Find("MxStillPresenter", "Cop_A_Bitmap");
|
||||
assert(m_glowInfo[6].m_destCtl);
|
||||
m_glowInfo[6].m_area = MxRect<MxS32>(396, 229, 442, 272);
|
||||
m_glowInfo[6].m_unk0x04 = 15;
|
||||
m_glowInfo[6].m_target = InfocenterMapEntry::e_police;
|
||||
|
||||
m_frame = (MxStillPresenter*) Find("MxStillPresenter", "FrameHot_Bitmap");
|
||||
assert(m_frame);
|
||||
@ -687,7 +687,7 @@ MxU8 Infocenter::HandleMouseMove(MxS32 p_x, MxS32 p_y)
|
||||
m_dragPresenter->SetPosition(p_x, p_y);
|
||||
}
|
||||
|
||||
FUN_10070d10(p_x, p_y);
|
||||
UpdateEnabledGlowControl(p_x, p_y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -776,7 +776,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
m_radio.Stop();
|
||||
BackgroundAudioManager()->Stop();
|
||||
PlayAction(InfomainScript::c_Pepper_All_Movie);
|
||||
m_unk0x1d4++;
|
||||
m_playingMovieCounter++;
|
||||
}
|
||||
break;
|
||||
case InfomainScript::c_Mama_Ctl:
|
||||
@ -784,7 +784,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
m_radio.Stop();
|
||||
BackgroundAudioManager()->Stop();
|
||||
PlayAction(InfomainScript::c_Mama_All_Movie);
|
||||
m_unk0x1d4++;
|
||||
m_playingMovieCounter++;
|
||||
}
|
||||
break;
|
||||
case InfomainScript::c_Papa_Ctl:
|
||||
@ -792,7 +792,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
m_radio.Stop();
|
||||
BackgroundAudioManager()->Stop();
|
||||
PlayAction(InfomainScript::c_Papa_All_Movie);
|
||||
m_unk0x1d4++;
|
||||
m_playingMovieCounter++;
|
||||
}
|
||||
break;
|
||||
case InfomainScript::c_Nick_Ctl:
|
||||
@ -800,7 +800,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
m_radio.Stop();
|
||||
BackgroundAudioManager()->Stop();
|
||||
PlayAction(InfomainScript::c_Nick_All_Movie);
|
||||
m_unk0x1d4++;
|
||||
m_playingMovieCounter++;
|
||||
}
|
||||
break;
|
||||
case InfomainScript::c_Laura_Ctl:
|
||||
@ -808,17 +808,17 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
m_radio.Stop();
|
||||
BackgroundAudioManager()->Stop();
|
||||
PlayAction(InfomainScript::c_Laura_All_Movie);
|
||||
m_unk0x1d4++;
|
||||
m_playingMovieCounter++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (m_unk0x1c8 != -1) {
|
||||
if (m_enabledGlowControl != -1) {
|
||||
m_infoManDialogueTimer = 0;
|
||||
|
||||
switch (m_glowInfo[m_unk0x1c8].m_unk0x04) {
|
||||
case 3:
|
||||
switch (m_glowInfo[m_enabledGlowControl].m_target) {
|
||||
case InfocenterMapEntry::e_infocenter:
|
||||
GameState()->SetActor(m_selectedCharacter);
|
||||
|
||||
switch (m_selectedCharacter) {
|
||||
@ -839,37 +839,37 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
case InfocenterMapEntry::e_jetrace:
|
||||
if (m_selectedCharacter) {
|
||||
m_destLocation = LegoGameState::e_jetraceExterior;
|
||||
m_infocenterState->m_unk0x74 = 5;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
case InfocenterMapEntry::e_carrace:
|
||||
if (m_selectedCharacter) {
|
||||
m_destLocation = LegoGameState::e_carraceExterior;
|
||||
m_infocenterState->m_unk0x74 = 5;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
case InfocenterMapEntry::e_pizzeria:
|
||||
if (m_selectedCharacter) {
|
||||
m_destLocation = LegoGameState::e_pizzeriaExterior;
|
||||
m_infocenterState->m_unk0x74 = 5;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
case InfocenterMapEntry::e_garage:
|
||||
if (m_selectedCharacter) {
|
||||
m_destLocation = LegoGameState::e_garageExterior;
|
||||
m_infocenterState->m_unk0x74 = 5;
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
case InfocenterMapEntry::e_hospital:
|
||||
if (m_selectedCharacter) {
|
||||
m_destLocation = LegoGameState::e_hospitalExterior;
|
||||
m_infocenterState->m_unk0x74 = 5;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
case InfocenterMapEntry::e_police:
|
||||
if (m_selectedCharacter) {
|
||||
m_destLocation = LegoGameState::e_policeExterior;
|
||||
m_infocenterState->m_unk0x74 = 5;
|
||||
@ -931,7 +931,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
}
|
||||
|
||||
UpdateFrameHot(TRUE);
|
||||
FUN_10070d10(0, 0);
|
||||
UpdateEnabledGlowControl(0, 0);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@ -1232,21 +1232,21 @@ MxResult Infocenter::Tickle()
|
||||
m_bookAnimationTimer = 1;
|
||||
}
|
||||
|
||||
if (m_unk0x1d6 != 0) {
|
||||
m_unk0x1d6 += 100;
|
||||
if (m_bigInfoBlinkTimer != 0) {
|
||||
m_bigInfoBlinkTimer += 100;
|
||||
|
||||
if (m_unk0x1d6 > 3400 && m_unk0x1d6 < 3650) {
|
||||
if (m_bigInfoBlinkTimer > 3400 && m_bigInfoBlinkTimer < 3650) {
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 1);
|
||||
}
|
||||
else if (m_unk0x1d6 > 3650 && m_unk0x1d6 < 3900) {
|
||||
else if (m_bigInfoBlinkTimer > 3650 && m_bigInfoBlinkTimer < 3900) {
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 0);
|
||||
}
|
||||
else if (m_unk0x1d6 > 3900 && m_unk0x1d6 < 4150) {
|
||||
else if (m_bigInfoBlinkTimer > 3900 && m_bigInfoBlinkTimer < 4150) {
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 1);
|
||||
}
|
||||
else if (m_unk0x1d6 > 4400) {
|
||||
else if (m_bigInfoBlinkTimer > 4400) {
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 0);
|
||||
m_unk0x1d6 = 0;
|
||||
m_bigInfoBlinkTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1295,7 +1295,7 @@ MxBool Infocenter::VTable0x5c()
|
||||
|
||||
// FUNCTION: LEGO1 0x10070d10
|
||||
// FUNCTION: BETA10 0x100307d4
|
||||
void Infocenter::FUN_10070d10(MxS32 p_x, MxS32 p_y)
|
||||
void Infocenter::UpdateEnabledGlowControl(MxS32 p_x, MxS32 p_y)
|
||||
{
|
||||
MxS16 i;
|
||||
for (i = 0; i < (MxS32) (sizeof(m_glowInfo) / sizeof(m_glowInfo[0])); i++) {
|
||||
@ -1313,12 +1313,12 @@ void Infocenter::FUN_10070d10(MxS32 p_x, MxS32 p_y)
|
||||
i = -1;
|
||||
}
|
||||
|
||||
if (i != m_unk0x1c8) {
|
||||
if (m_unk0x1c8 != -1) {
|
||||
m_glowInfo[m_unk0x1c8].m_destCtl->Enable(FALSE);
|
||||
if (i != m_enabledGlowControl) {
|
||||
if (m_enabledGlowControl != -1) {
|
||||
m_glowInfo[m_enabledGlowControl].m_destCtl->Enable(FALSE);
|
||||
}
|
||||
|
||||
m_unk0x1c8 = i;
|
||||
m_enabledGlowControl = i;
|
||||
if (i != -1) {
|
||||
m_glowInfo[i].m_destCtl->Enable(TRUE);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user