mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-24 08:38:29 -05:00
Implement/match Act1State::PlayCptClickDialogue (#1131)
This commit is contained in:
parent
e4453c4100
commit
040c97d92a
2 changed files with 53 additions and 47 deletions
|
@ -85,8 +85,8 @@ class Act1State : public LegoState {
|
|||
MxBool SetFlag() override; // vtable+0x18
|
||||
MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c
|
||||
|
||||
void FUN_10034660();
|
||||
void FUN_100346a0();
|
||||
void PlayCptClickDialogue();
|
||||
void StopCptClickDialogue();
|
||||
void FUN_10034b60();
|
||||
void FUN_10034d00();
|
||||
|
||||
|
@ -103,8 +103,8 @@ class Act1State : public LegoState {
|
|||
|
||||
// TODO: Most likely getters/setters are not used according to BETA.
|
||||
|
||||
Playlist m_unk0x008; // 0x008
|
||||
MxS32 m_unk0x014; // 0x014
|
||||
Playlist m_cptClickDialogue; // 0x008
|
||||
IsleScript::Script m_currentCptClickDialogue; // 0x014
|
||||
MxU32 m_unk0x018; // 0x018
|
||||
MxS16 m_elevFloor; // 0x01c
|
||||
MxBool m_unk0x01e; // 0x01e
|
||||
|
|
|
@ -46,7 +46,7 @@ DECOMP_SIZE_ASSERT(Isle, 0x140)
|
|||
MxU32 g_isleFlags = 0x7f;
|
||||
|
||||
// GLOBAL: LEGO1 0x100f37f0
|
||||
IsleScript::Script g_unk0x100f37f0[] =
|
||||
IsleScript::Script g_cptClickDialogue[] =
|
||||
{IsleScript::c_Avo905Ps_PlayWav, IsleScript::c_Avo906Ps_PlayWav, IsleScript::c_Avo907Ps_PlayWav};
|
||||
|
||||
// FUNCTION: LEGO1 0x10030820
|
||||
|
@ -362,14 +362,14 @@ MxLong Isle::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||
break;
|
||||
case IsleScript::c_Observe_LeftArrow_Ctl:
|
||||
m_act1state->FUN_100346a0();
|
||||
m_act1state->StopCptClickDialogue();
|
||||
m_radio.Stop();
|
||||
case IsleScript::c_SeaView_RightArrow_Ctl:
|
||||
m_destLocation = LegoGameState::e_elevopen;
|
||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||
break;
|
||||
case IsleScript::c_Observe_RightArrow_Ctl:
|
||||
m_act1state->FUN_100346a0();
|
||||
m_act1state->StopCptClickDialogue();
|
||||
m_radio.Stop();
|
||||
case IsleScript::c_SeaView_LeftArrow_Ctl:
|
||||
m_destLocation = LegoGameState::e_elevdown;
|
||||
|
@ -420,7 +420,7 @@ MxLong Isle::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||
break;
|
||||
case IsleScript::c_Observe_Draw1_Ctl:
|
||||
case IsleScript::c_Observe_Draw2_Ctl:
|
||||
m_act1state->FUN_10034660();
|
||||
m_act1state->PlayCptClickDialogue();
|
||||
break;
|
||||
case IsleScript::c_ElevDown_Elevator_Ctl:
|
||||
m_destLocation = LegoGameState::e_elevride2;
|
||||
|
@ -1287,10 +1287,10 @@ Act1State::Act1State()
|
|||
m_elevFloor = Act1State::c_floor1;
|
||||
m_unk0x018 = 1;
|
||||
m_unk0x01e = FALSE;
|
||||
m_unk0x008 = Playlist((MxU32*) g_unk0x100f37f0, sizeOfArray(g_unk0x100f37f0), Playlist::e_loop);
|
||||
m_cptClickDialogue = Playlist((MxU32*) g_cptClickDialogue, sizeOfArray(g_cptClickDialogue), Playlist::e_loop);
|
||||
m_unk0x01f = FALSE;
|
||||
m_planeActive = FALSE;
|
||||
m_unk0x014 = -1;
|
||||
m_currentCptClickDialogue = IsleScript::c_noneIsle;
|
||||
m_unk0x022 = FALSE;
|
||||
m_unk0x154 = NULL;
|
||||
m_unk0x158 = NULL;
|
||||
|
@ -1386,7 +1386,7 @@ MxResult Act1State::Serialize(LegoFile* p_file)
|
|||
}
|
||||
}
|
||||
|
||||
Write(p_file, m_unk0x008.m_nextIndex);
|
||||
Write(p_file, m_cptClickDialogue.m_nextIndex);
|
||||
Write(p_file, m_unk0x022);
|
||||
}
|
||||
else if (p_file->IsReadMode()) {
|
||||
|
@ -1440,7 +1440,7 @@ MxResult Act1State::Serialize(LegoFile* p_file)
|
|||
}
|
||||
}
|
||||
|
||||
Read(p_file, &m_unk0x008.m_nextIndex);
|
||||
Read(p_file, &m_cptClickDialogue.m_nextIndex);
|
||||
Read(p_file, &m_unk0x022);
|
||||
}
|
||||
|
||||
|
@ -1448,18 +1448,24 @@ MxResult Act1State::Serialize(LegoFile* p_file)
|
|||
return SUCCESS;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10034660
|
||||
void Act1State::FUN_10034660()
|
||||
// FUNCTION: LEGO1 0x10034660
|
||||
void Act1State::PlayCptClickDialogue()
|
||||
{
|
||||
// TODO
|
||||
StopCptClickDialogue();
|
||||
m_currentCptClickDialogue = (IsleScript::Script) m_cptClickDialogue.Next();
|
||||
BackgroundAudioManager()->LowerVolume();
|
||||
|
||||
if (m_currentCptClickDialogue != IsleScript::c_noneIsle) {
|
||||
InvokeAction(Extra::e_start, *g_isleScript, m_currentCptClickDialogue, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100346a0
|
||||
void Act1State::FUN_100346a0()
|
||||
void Act1State::StopCptClickDialogue()
|
||||
{
|
||||
if (m_unk0x014 != -1) {
|
||||
InvokeAction(Extra::e_stop, *g_isleScript, m_unk0x014, NULL);
|
||||
m_unk0x014 = -1;
|
||||
if (m_currentCptClickDialogue != IsleScript::c_noneIsle) {
|
||||
InvokeAction(Extra::e_stop, *g_isleScript, m_currentCptClickDialogue, NULL);
|
||||
m_currentCptClickDialogue = IsleScript::c_noneIsle;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue