mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-26 09:54:18 +00:00
Compare commits
3 Commits
a9e261606d
...
0442fadc0e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0442fadc0e | ||
|
|
ddaf497cc4 | ||
|
|
d555df6a58 |
@@ -18,6 +18,25 @@ class LegoControlManagerNotificationParam;
|
|||||||
// SIZE 0x94
|
// SIZE 0x94
|
||||||
class InfocenterState : public LegoState {
|
class InfocenterState : public LegoState {
|
||||||
public:
|
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();
|
||||||
~InfocenterState() override;
|
~InfocenterState() override;
|
||||||
|
|
||||||
@@ -72,7 +91,7 @@ public:
|
|||||||
Playlist m_returnDialogue[3]; // 0x20
|
Playlist m_returnDialogue[3]; // 0x20
|
||||||
Playlist m_leaveDialogue[3]; // 0x44
|
Playlist m_leaveDialogue[3]; // 0x44
|
||||||
Playlist m_bricksterDialogue; // 0x68
|
Playlist m_bricksterDialogue; // 0x68
|
||||||
MxU32 m_unk0x74; // 0x74
|
MxU32 m_state; // 0x74
|
||||||
MxStillPresenter* m_letters[7]; // 0x78
|
MxStillPresenter* m_letters[7]; // 0x78
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ typedef set<LegoPathActor*, LegoPathActorSetCompare> LegoPathActorSet;
|
|||||||
typedef set<LegoAnimPresenter*, LegoAnimPresenterSetCompare> LegoAnimPresenterSet;
|
typedef set<LegoAnimPresenter*, LegoAnimPresenterSetCompare> LegoAnimPresenterSet;
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d8618
|
// VTABLE: LEGO1 0x100d8618
|
||||||
|
// VTABLE: BETA10 0x101bdd58
|
||||||
// SIZE 0x74
|
// SIZE 0x74
|
||||||
class LegoPathBoundary : public LegoWEGEdge {
|
class LegoPathBoundary : public LegoWEGEdge {
|
||||||
public:
|
public:
|
||||||
@@ -57,6 +58,7 @@ public:
|
|||||||
LegoAnimPresenterSet& GetPresenters() { return m_presenters; }
|
LegoAnimPresenterSet& GetPresenters() { return m_presenters; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10047a80
|
// SYNTHETIC: LEGO1 0x10047a80
|
||||||
|
// SYNTHETIC: BETA10 0x100bd300
|
||||||
// LegoPathBoundary::`vector deleting destructor'
|
// LegoPathBoundary::`vector deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -2812,7 +2812,11 @@ MxResult LegoAnimationManager::FUN_10064880(const char* p_name, MxS32 p_unk0x0c,
|
|||||||
// FUNCTION: BETA10 0x10045daf
|
// FUNCTION: BETA10 0x10045daf
|
||||||
void LegoAnimationManager::FUN_100648f0(LegoTranInfo* p_tranInfo, MxLong p_unk0x404)
|
void LegoAnimationManager::FUN_100648f0(LegoTranInfo* p_tranInfo, MxLong p_unk0x404)
|
||||||
{
|
{
|
||||||
if (m_unk0x402 && p_tranInfo->m_unk0x14) {
|
if (
|
||||||
|
#ifndef BETA10
|
||||||
|
m_unk0x402 &&
|
||||||
|
#endif
|
||||||
|
p_tranInfo->m_unk0x14) {
|
||||||
p_tranInfo->m_flags |= LegoTranInfo::c_bit1;
|
p_tranInfo->m_flags |= LegoTranInfo::c_bit1;
|
||||||
m_unk0x430 = TRUE;
|
m_unk0x430 = TRUE;
|
||||||
m_unk0x42c = p_tranInfo;
|
m_unk0x42c = p_tranInfo;
|
||||||
@@ -2833,11 +2837,13 @@ void LegoAnimationManager::FUN_100648f0(LegoTranInfo* p_tranInfo, MxLong p_unk0x
|
|||||||
if (location != NULL) {
|
if (location != NULL) {
|
||||||
CalcLocalTransform(location->m_position, location->m_direction, location->m_up, m_unk0x484);
|
CalcLocalTransform(location->m_position, location->m_direction, location->m_up, m_unk0x484);
|
||||||
m_unk0x4cc.SetStartEnd(m_unk0x43c, m_unk0x484);
|
m_unk0x4cc.SetStartEnd(m_unk0x43c, m_unk0x484);
|
||||||
|
#ifndef BETA10
|
||||||
m_unk0x4cc.NormalizeDirection();
|
m_unk0x4cc.NormalizeDirection();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p_tranInfo->m_flags &= ~LegoTranInfo::c_bit1;
|
p_tranInfo->m_flags &= ~LegoTranInfo::c_bit1;
|
||||||
m_unk0x430 = FALSE;
|
m_unk0x430 = FALSE;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Mx3DPointFloat vec;
|
Mx3DPointFloat vec;
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ MxBool MxControlPresenter::CheckButtonDown(MxS32 p_x, MxS32 p_y, MxPresenter* p_
|
|||||||
assert(map && map->IsA("MxStillPresenter"));
|
assert(map && map->IsA("MxStillPresenter"));
|
||||||
|
|
||||||
if (presenter == map || map->GetDisplayZ() < presenter->GetDisplayZ()) {
|
if (presenter == map || map->GetDisplayZ() < presenter->GetDisplayZ()) {
|
||||||
if (map->VTable0x7c()) {
|
if (map->HasFrameBitmapOrAlpha()) {
|
||||||
MxRect32 rect(0, 0, map->GetWidth() - 1, map->GetHeight() - 1);
|
MxRect32 rect(0, 0, map->GetWidth() - 1, map->GetHeight() - 1);
|
||||||
rect += map->GetLocation();
|
rect += map->GetLocation();
|
||||||
|
|
||||||
|
|||||||
@@ -666,10 +666,10 @@ MxLong LegoNavController::Notify(MxParam& p_param)
|
|||||||
InfocenterState* state = (InfocenterState*) GameState()->GetState("InfocenterState");
|
InfocenterState* state = (InfocenterState*) GameState()->GetState("InfocenterState");
|
||||||
assert(state);
|
assert(state);
|
||||||
|
|
||||||
if (state != NULL && state->m_unk0x74 != 8 && currentWorld->Escape()) {
|
if (state != NULL && state->m_state != InfocenterState::e_exitQueried && currentWorld->Escape()) {
|
||||||
BackgroundAudioManager()->Stop();
|
BackgroundAudioManager()->Stop();
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
state->m_unk0x74 = 8;
|
state->m_state = InfocenterState::e_exitQueried;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ void LegoModelPresenter::Destroy(MxBool p_fromDestructor)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007f6b0
|
// FUNCTION: LEGO1 0x1007f6b0
|
||||||
// FUNCTION: BETA10 0x1009845e
|
// STUB: BETA10 0x1009845e
|
||||||
MxResult LegoModelPresenter::CreateROI(MxDSChunk* p_chunk)
|
MxResult LegoModelPresenter::CreateROI(MxDSChunk* p_chunk)
|
||||||
{
|
{
|
||||||
MxResult result = FAILURE;
|
MxResult result = FAILURE;
|
||||||
|
|||||||
@@ -781,6 +781,7 @@ void Act3::GoodEnding(const Matrix4& p_destination)
|
|||||||
m_cop2->SetActorState(LegoPathActor::c_disabled);
|
m_cop2->SetActorState(LegoPathActor::c_disabled);
|
||||||
m_brickster->SetActorState(LegoPathActor::c_disabled);
|
m_brickster->SetActorState(LegoPathActor::c_disabled);
|
||||||
|
|
||||||
|
#ifndef BETA10
|
||||||
m_unk0x4220.Clear();
|
m_unk0x4220.Clear();
|
||||||
m_copter->FUN_10004640(p_destination);
|
m_copter->FUN_10004640(p_destination);
|
||||||
|
|
||||||
@@ -792,6 +793,10 @@ void Act3::GoodEnding(const Matrix4& p_destination)
|
|||||||
m_copter->m_unk0x1a8,
|
m_copter->m_unk0x1a8,
|
||||||
m_copter->m_unk0x1f4
|
m_copter->m_unk0x1f4
|
||||||
);
|
);
|
||||||
|
#else
|
||||||
|
m_state->m_unk0x08 = 2;
|
||||||
|
GameState()->SwitchArea(LegoGameState::Area::e_infomain);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10073500
|
// FUNCTION: LEGO1 0x10073500
|
||||||
|
|||||||
@@ -190,12 +190,13 @@ MxResult Infocenter::Create(MxDSAction& p_dsAction)
|
|||||||
m_infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState");
|
m_infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState");
|
||||||
if (!m_infocenterState) {
|
if (!m_infocenterState) {
|
||||||
m_infocenterState = (InfocenterState*) GameState()->CreateState("InfocenterState");
|
m_infocenterState = (InfocenterState*) GameState()->CreateState("InfocenterState");
|
||||||
m_infocenterState->m_unk0x74 = 3;
|
m_infocenterState->m_state = InfocenterState::e_newState;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (m_infocenterState->m_unk0x74 != 8 && m_infocenterState->m_unk0x74 != 4 &&
|
if (m_infocenterState->m_state != InfocenterState::e_exitQueried &&
|
||||||
m_infocenterState->m_unk0x74 != 15) {
|
m_infocenterState->m_state != InfocenterState::e_selectedSave &&
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state != InfocenterState::e_backToInfoAct1) {
|
||||||
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
}
|
}
|
||||||
|
|
||||||
MxS16 count, i;
|
MxS16 count, i;
|
||||||
@@ -217,7 +218,7 @@ MxResult Infocenter::Create(MxDSAction& p_dsAction)
|
|||||||
GameState()->m_currentArea = LegoGameState::e_infomain;
|
GameState()->m_currentArea = LegoGameState::e_infomain;
|
||||||
GameState()->StopArea(LegoGameState::e_previousArea);
|
GameState()->StopArea(LegoGameState::e_previousArea);
|
||||||
|
|
||||||
if (m_infocenterState->m_unk0x74 == 4) {
|
if (m_infocenterState->m_state == InfocenterState::e_selectedSave) {
|
||||||
LegoGameState* state = GameState();
|
LegoGameState* state = GameState();
|
||||||
state->m_previousArea = GameState()->m_unk0x42c;
|
state->m_previousArea = GameState()->m_unk0x42c;
|
||||||
}
|
}
|
||||||
@@ -266,9 +267,9 @@ MxLong Infocenter::Notify(MxParam& p_param)
|
|||||||
StopBookAnimation();
|
StopBookAnimation();
|
||||||
m_bookAnimationTimer = 0;
|
m_bookAnimationTimer = 0;
|
||||||
|
|
||||||
if (m_infocenterState->m_unk0x74 == 0x0c) {
|
if (m_infocenterState->m_state == InfocenterState::e_exiting) {
|
||||||
StartCredits();
|
StartCredits();
|
||||||
m_infocenterState->m_unk0x74 = 0xd;
|
m_infocenterState->m_state = InfocenterState::e_playCredits;
|
||||||
}
|
}
|
||||||
else if (m_destLocation != 0) {
|
else if (m_destLocation != 0) {
|
||||||
BackgroundAudioManager()->RaiseVolume();
|
BackgroundAudioManager()->RaiseVolume();
|
||||||
@@ -339,8 +340,8 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
m_bigInfoBlinkTimer = 0;
|
m_bigInfoBlinkTimer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (m_infocenterState->m_unk0x74) {
|
switch (m_infocenterState->m_state) {
|
||||||
case 0:
|
case InfocenterState::e_playCutscene:
|
||||||
switch (m_currentCutscene) {
|
switch (m_currentCutscene) {
|
||||||
case e_legoMovie:
|
case e_legoMovie:
|
||||||
PlayCutscene(e_mindscapeMovie, FALSE);
|
PlayCutscene(e_mindscapeMovie, FALSE);
|
||||||
@@ -350,13 +351,13 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
return 1;
|
return 1;
|
||||||
case e_badEndMovie:
|
case e_badEndMovie:
|
||||||
StopCutscene();
|
StopCutscene();
|
||||||
m_infocenterState->m_unk0x74 = 11;
|
m_infocenterState->m_state = InfocenterState::e_welcomeAnimation;
|
||||||
PlayAction(InfomainScript::c_tic092in_RunAnim);
|
PlayAction(InfomainScript::c_tic092in_RunAnim);
|
||||||
m_currentCutscene = e_noIntro;
|
m_currentCutscene = e_noIntro;
|
||||||
return 1;
|
return 1;
|
||||||
case e_goodEndMovie:
|
case e_goodEndMovie:
|
||||||
StopCutscene();
|
StopCutscene();
|
||||||
m_infocenterState->m_unk0x74 = 11;
|
m_infocenterState->m_state = InfocenterState::e_welcomeAnimation;
|
||||||
PlayAction(InfomainScript::c_tic089in_RunAnim);
|
PlayAction(InfomainScript::c_tic089in_RunAnim);
|
||||||
m_currentCutscene = e_noIntro;
|
m_currentCutscene = e_noIntro;
|
||||||
return 1;
|
return 1;
|
||||||
@@ -364,7 +365,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
|
|
||||||
// default / 2nd case probably?
|
// default / 2nd case probably?
|
||||||
StopCutscene();
|
StopCutscene();
|
||||||
m_infocenterState->m_unk0x74 = 11;
|
m_infocenterState->m_state = InfocenterState::e_welcomeAnimation;
|
||||||
PlayAction(InfomainScript::c_iic001in_RunAnim);
|
PlayAction(InfomainScript::c_iic001in_RunAnim);
|
||||||
m_currentCutscene = e_noIntro;
|
m_currentCutscene = e_noIntro;
|
||||||
|
|
||||||
@@ -373,8 +374,8 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case InfocenterState::e_introCancelled:
|
||||||
m_infocenterState->m_unk0x74 = 11;
|
m_infocenterState->m_state = InfocenterState::e_welcomeAnimation;
|
||||||
|
|
||||||
switch (m_currentCutscene) {
|
switch (m_currentCutscene) {
|
||||||
case e_badEndMovie:
|
case e_badEndMovie:
|
||||||
@@ -389,30 +390,30 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
|
|
||||||
m_currentCutscene = e_noIntro;
|
m_currentCutscene = e_noIntro;
|
||||||
return 1;
|
return 1;
|
||||||
case 2:
|
case InfocenterState::e_notRegistered:
|
||||||
SetROIVisible(g_object2x4red, FALSE);
|
SetROIVisible(g_object2x4red, FALSE);
|
||||||
SetROIVisible(g_object2x4grn, FALSE);
|
SetROIVisible(g_object2x4grn, FALSE);
|
||||||
BackgroundAudioManager()->RaiseVolume();
|
BackgroundAudioManager()->RaiseVolume();
|
||||||
return 1;
|
return 1;
|
||||||
case 4:
|
case InfocenterState::e_selectedSave:
|
||||||
if (action->GetObjectId() == InfomainScript::c_GoTo_RegBook ||
|
if (action->GetObjectId() == InfomainScript::c_GoTo_RegBook ||
|
||||||
action->GetObjectId() == InfomainScript::c_GoTo_RegBook_Red) {
|
action->GetObjectId() == InfomainScript::c_GoTo_RegBook_Red) {
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
m_infocenterState->m_unk0x74 = 14;
|
m_infocenterState->m_state = InfocenterState::e_exitingToIsland;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case InfocenterState::e_selectedCharacterAndDestination:
|
||||||
if (action->GetObjectId() == m_currentInfomainScript) {
|
if (action->GetObjectId() == m_currentInfomainScript) {
|
||||||
if (GameState()->GetCurrentAct() != LegoGameState::e_act3 && m_selectedCharacter != e_noCharacter) {
|
if (GameState()->GetCurrentAct() != LegoGameState::e_act3 && m_selectedCharacter != e_noCharacter) {
|
||||||
GameState()->SetActor(m_selectedCharacter);
|
GameState()->SetActor(m_selectedCharacter);
|
||||||
}
|
}
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
m_infocenterState->m_unk0x74 = 14;
|
m_infocenterState->m_state = InfocenterState::e_exitingToIsland;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 11:
|
case InfocenterState::e_welcomeAnimation:
|
||||||
if (!m_infocenterState->HasRegistered() && m_currentInfomainScript != InfomainScript::c_Mama_All_Movie &&
|
if (!m_infocenterState->HasRegistered() && m_currentInfomainScript != InfomainScript::c_Mama_All_Movie &&
|
||||||
m_currentInfomainScript != InfomainScript::c_Papa_All_Movie &&
|
m_currentInfomainScript != InfomainScript::c_Papa_All_Movie &&
|
||||||
m_currentInfomainScript != InfomainScript::c_Pepper_All_Movie &&
|
m_currentInfomainScript != InfomainScript::c_Pepper_All_Movie &&
|
||||||
@@ -422,10 +423,10 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
SetROIVisible("infoman", TRUE);
|
SetROIVisible("infoman", TRUE);
|
||||||
return 1;
|
return 1;
|
||||||
case 12:
|
case InfocenterState::e_exiting:
|
||||||
if (action->GetObjectId() == m_currentInfomainScript) {
|
if (action->GetObjectId() == m_currentInfomainScript) {
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
}
|
}
|
||||||
@@ -452,13 +453,13 @@ void Infocenter::ReadyWorld()
|
|||||||
bg->Enable(TRUE);
|
bg->Enable(TRUE);
|
||||||
InitializeBitmaps();
|
InitializeBitmaps();
|
||||||
|
|
||||||
switch (m_infocenterState->m_unk0x74) {
|
switch (m_infocenterState->m_state) {
|
||||||
case 3:
|
case InfocenterState::e_newState:
|
||||||
PlayCutscene(e_legoMovie, TRUE);
|
PlayCutscene(e_legoMovie, TRUE);
|
||||||
m_infocenterState->m_unk0x74 = 0;
|
m_infocenterState->m_state = InfocenterState::e_playCutscene;
|
||||||
return;
|
return;
|
||||||
case 4:
|
case InfocenterState::e_selectedSave:
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
if (!m_infocenterState->HasRegistered()) {
|
if (!m_infocenterState->HasRegistered()) {
|
||||||
m_bookAnimationTimer = 1;
|
m_bookAnimationTimer = 1;
|
||||||
}
|
}
|
||||||
@@ -467,7 +468,7 @@ void Infocenter::ReadyWorld()
|
|||||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||||
Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
return;
|
return;
|
||||||
case 5:
|
case InfocenterState::e_selectedCharacterAndDestination:
|
||||||
default: {
|
default: {
|
||||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||||
|
|
||||||
@@ -486,13 +487,13 @@ void Infocenter::ReadyWorld()
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 8:
|
case InfocenterState::e_exitQueried:
|
||||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||||
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
||||||
Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
return;
|
return;
|
||||||
case 0xf:
|
case InfocenterState::e_backToInfoAct1:
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
if (!m_infocenterState->HasRegistered()) {
|
if (!m_infocenterState->HasRegistered()) {
|
||||||
m_bookAnimationTimer = 1;
|
m_bookAnimationTimer = 1;
|
||||||
}
|
}
|
||||||
@@ -504,7 +505,7 @@ void Infocenter::ReadyWorld()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_act2: {
|
case LegoGameState::e_act2: {
|
||||||
if (m_infocenterState->m_unk0x74 == 8) {
|
if (m_infocenterState->m_state == InfocenterState::e_exitQueried) {
|
||||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||||
bgRed->Enable(TRUE);
|
bgRed->Enable(TRUE);
|
||||||
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
||||||
@@ -518,11 +519,11 @@ void Infocenter::ReadyWorld()
|
|||||||
if (state && state->GetUnknown0x08() == 0x68) {
|
if (state && state->GetUnknown0x08() == 0x68) {
|
||||||
bg->Enable(TRUE);
|
bg->Enable(TRUE);
|
||||||
PlayCutscene(e_badEndMovie, TRUE);
|
PlayCutscene(e_badEndMovie, TRUE);
|
||||||
m_infocenterState->m_unk0x74 = 0;
|
m_infocenterState->m_state = InfocenterState::e_playCutscene;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_infocenterState->m_unk0x74 == 4) {
|
if (m_infocenterState->m_state == InfocenterState::e_selectedSave) {
|
||||||
bgRed->Enable(TRUE);
|
bgRed->Enable(TRUE);
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == GameState()->GetLoadedAct()) {
|
if (GameState()->GetCurrentAct() == GameState()->GetLoadedAct()) {
|
||||||
@@ -531,7 +532,7 @@ void Infocenter::ReadyWorld()
|
|||||||
GameState()->m_currentArea = LegoGameState::e_infomain;
|
GameState()->m_currentArea = LegoGameState::e_infomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
m_destLocation = LegoGameState::e_act2main;
|
m_destLocation = LegoGameState::e_act2main;
|
||||||
|
|
||||||
InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
|
InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
|
||||||
@@ -549,7 +550,7 @@ void Infocenter::ReadyWorld()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LegoGameState::e_act3: {
|
case LegoGameState::e_act3: {
|
||||||
if (m_infocenterState->m_unk0x74 == 8) {
|
if (m_infocenterState->m_state == InfocenterState::e_exitQueried) {
|
||||||
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
PlayMusic(JukeboxScript::c_InformationCenter_Music);
|
||||||
bgRed->Enable(TRUE);
|
bgRed->Enable(TRUE);
|
||||||
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
||||||
@@ -563,18 +564,18 @@ void Infocenter::ReadyWorld()
|
|||||||
if (state && state->GetUnknown0x08() == 3) {
|
if (state && 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_state = InfocenterState::e_playCutscene;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state && state->GetUnknown0x08() == 2) {
|
if (state && state->GetUnknown0x08() == 2) {
|
||||||
bg->Enable(TRUE);
|
bg->Enable(TRUE);
|
||||||
PlayCutscene(e_goodEndMovie, TRUE);
|
PlayCutscene(e_goodEndMovie, TRUE);
|
||||||
m_infocenterState->m_unk0x74 = 0;
|
m_infocenterState->m_state = InfocenterState::e_playCutscene;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_infocenterState->m_unk0x74 == 4) {
|
if (m_infocenterState->m_state == InfocenterState::e_selectedSave) {
|
||||||
bgRed->Enable(TRUE);
|
bgRed->Enable(TRUE);
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == GameState()->GetLoadedAct()) {
|
if (GameState()->GetCurrentAct() == GameState()->GetLoadedAct()) {
|
||||||
@@ -583,7 +584,7 @@ void Infocenter::ReadyWorld()
|
|||||||
GameState()->m_currentArea = LegoGameState::e_infomain;
|
GameState()->m_currentArea = LegoGameState::e_infomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
m_destLocation = LegoGameState::e_act3script;
|
m_destLocation = LegoGameState::e_act3script;
|
||||||
|
|
||||||
InfomainScript::Script script = m_infocenterState->GetNextReturnDialogue();
|
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);
|
Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -701,37 +702,37 @@ MxLong Infocenter::HandleKeyPress(MxS8 p_key)
|
|||||||
MxLong result = 0;
|
MxLong result = 0;
|
||||||
|
|
||||||
if (p_key == VK_SPACE && m_worldStarted) {
|
if (p_key == VK_SPACE && m_worldStarted) {
|
||||||
switch (m_infocenterState->m_unk0x74) {
|
switch (m_infocenterState->m_state) {
|
||||||
case 0:
|
case InfocenterState::e_playCutscene:
|
||||||
StopCutscene();
|
StopCutscene();
|
||||||
m_infocenterState->m_unk0x74 = 1;
|
m_infocenterState->m_state = InfocenterState::e_introCancelled;
|
||||||
|
|
||||||
if (!m_infocenterState->HasRegistered()) {
|
if (!m_infocenterState->HasRegistered()) {
|
||||||
m_bookAnimationTimer = 1;
|
m_bookAnimationTimer = 1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case InfocenterState::e_introCancelled:
|
||||||
case 4:
|
case InfocenterState::e_selectedSave:
|
||||||
break;
|
break;
|
||||||
default: {
|
default: {
|
||||||
InfomainScript::Script script = m_currentInfomainScript;
|
InfomainScript::Script script = m_currentInfomainScript;
|
||||||
StopCurrentAction();
|
StopCurrentAction();
|
||||||
|
|
||||||
switch (m_infocenterState->m_unk0x74) {
|
switch (m_infocenterState->m_state) {
|
||||||
case 5:
|
case InfocenterState::e_selectedCharacterAndDestination:
|
||||||
case 12:
|
case InfocenterState::e_exiting:
|
||||||
m_currentInfomainScript = script;
|
m_currentInfomainScript = script;
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
default:
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
return 1;
|
return 1;
|
||||||
case 8:
|
case InfocenterState::e_exitQueried:
|
||||||
case 11:
|
case InfocenterState::e_welcomeAnimation:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 13:
|
case InfocenterState::e_playCredits:
|
||||||
StopCredits();
|
StopCredits();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -842,37 +843,37 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
|||||||
case InfocenterMapEntry::e_jetrace:
|
case InfocenterMapEntry::e_jetrace:
|
||||||
if (m_selectedCharacter) {
|
if (m_selectedCharacter) {
|
||||||
m_destLocation = LegoGameState::e_jetraceExterior;
|
m_destLocation = LegoGameState::e_jetraceExterior;
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case InfocenterMapEntry::e_carrace:
|
case InfocenterMapEntry::e_carrace:
|
||||||
if (m_selectedCharacter) {
|
if (m_selectedCharacter) {
|
||||||
m_destLocation = LegoGameState::e_carraceExterior;
|
m_destLocation = LegoGameState::e_carraceExterior;
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case InfocenterMapEntry::e_pizzeria:
|
case InfocenterMapEntry::e_pizzeria:
|
||||||
if (m_selectedCharacter) {
|
if (m_selectedCharacter) {
|
||||||
m_destLocation = LegoGameState::e_pizzeriaExterior;
|
m_destLocation = LegoGameState::e_pizzeriaExterior;
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case InfocenterMapEntry::e_garage:
|
case InfocenterMapEntry::e_garage:
|
||||||
if (m_selectedCharacter) {
|
if (m_selectedCharacter) {
|
||||||
m_destLocation = LegoGameState::e_garageExterior;
|
m_destLocation = LegoGameState::e_garageExterior;
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case InfocenterMapEntry::e_hospital:
|
case InfocenterMapEntry::e_hospital:
|
||||||
if (m_selectedCharacter) {
|
if (m_selectedCharacter) {
|
||||||
m_destLocation = LegoGameState::e_hospitalExterior;
|
m_destLocation = LegoGameState::e_hospitalExterior;
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case InfocenterMapEntry::e_police:
|
case InfocenterMapEntry::e_police:
|
||||||
if (m_selectedCharacter) {
|
if (m_selectedCharacter) {
|
||||||
m_destLocation = LegoGameState::e_policeExterior;
|
m_destLocation = LegoGameState::e_policeExterior;
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -882,13 +883,13 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
|||||||
m_dragPresenter->Enable(FALSE);
|
m_dragPresenter->Enable(FALSE);
|
||||||
m_dragPresenter = NULL;
|
m_dragPresenter = NULL;
|
||||||
|
|
||||||
if (m_infocenterState->m_unk0x74 == 5) {
|
if (m_infocenterState->m_state == InfocenterState::e_selectedCharacterAndDestination) {
|
||||||
InfomainScript::Script dialogueToPlay;
|
InfomainScript::Script dialogueToPlay;
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
if (!m_infocenterState->HasRegistered()) {
|
if (!m_infocenterState->HasRegistered()) {
|
||||||
dialogueToPlay = InfomainScript::c_iic007in_PlayWav;
|
dialogueToPlay = InfomainScript::c_iic007in_PlayWav;
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
m_destLocation = LegoGameState::e_undefined;
|
m_destLocation = LegoGameState::e_undefined;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -952,7 +953,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
|
|
||||||
switch (p_param.m_clickedObjectId) {
|
switch (p_param.m_clickedObjectId) {
|
||||||
case InfomainScript::c_LeftArrow_Ctl:
|
case InfomainScript::c_LeftArrow_Ctl:
|
||||||
m_infocenterState->m_unk0x74 = 14;
|
m_infocenterState->m_state = InfocenterState::e_exitingToIsland;
|
||||||
StopCurrentAction();
|
StopCurrentAction();
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
@@ -967,7 +968,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case InfomainScript::c_RightArrow_Ctl:
|
case InfomainScript::c_RightArrow_Ctl:
|
||||||
m_infocenterState->m_unk0x74 = 14;
|
m_infocenterState->m_state = InfocenterState::e_exitingToIsland;
|
||||||
StopCurrentAction();
|
StopCurrentAction();
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
@@ -986,10 +987,10 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
break;
|
break;
|
||||||
case InfomainScript::c_Door_Ctl:
|
case InfomainScript::c_Door_Ctl:
|
||||||
if (m_infocenterState->m_unk0x74 != 8) {
|
if (m_infocenterState->m_state != InfocenterState::e_exitQueried) {
|
||||||
actionToPlay = InfomainScript::c_iic043in_RunAnim;
|
actionToPlay = InfomainScript::c_iic043in_RunAnim;
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
m_infocenterState->m_unk0x74 = 8;
|
m_infocenterState->m_state = InfocenterState::e_exitQueried;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -1025,7 +1026,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
case LegoGameState::e_infodoor:
|
case LegoGameState::e_infodoor:
|
||||||
case LegoGameState::e_regbook:
|
case LegoGameState::e_regbook:
|
||||||
case LegoGameState::e_infoscor:
|
case LegoGameState::e_infoscor:
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
m_destLocation = state->m_previousArea;
|
m_destLocation = state->m_previousArea;
|
||||||
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
@@ -1044,10 +1045,10 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
if (state->GetActorId() != LegoActor::c_none) {
|
if (state->GetActorId() != LegoActor::c_none) {
|
||||||
if (!m_infocenterState->HasRegistered()) {
|
if (!m_infocenterState->HasRegistered()) {
|
||||||
PlayAction(InfomainScript::c_iic007in_PlayWav);
|
PlayAction(InfomainScript::c_iic007in_PlayWav);
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
m_destLocation = state->m_previousArea;
|
m_destLocation = state->m_previousArea;
|
||||||
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
@@ -1060,14 +1061,14 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_act2:
|
case LegoGameState::e_act2:
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
m_destLocation = LegoGameState::e_act2main;
|
m_destLocation = LegoGameState::e_act2main;
|
||||||
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
||||||
InputManager()->DisableInputProcessing();
|
InputManager()->DisableInputProcessing();
|
||||||
InputManager()->SetUnknown336(TRUE);
|
InputManager()->SetUnknown336(TRUE);
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_act3:
|
case LegoGameState::e_act3:
|
||||||
m_infocenterState->m_unk0x74 = 5;
|
m_infocenterState->m_state = InfocenterState::e_selectedCharacterAndDestination;
|
||||||
m_destLocation = LegoGameState::e_act3script;
|
m_destLocation = LegoGameState::e_act3script;
|
||||||
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
actionToPlay = (InfomainScript::Script) m_infocenterState->GetNextLeaveDialogue();
|
||||||
InputManager()->DisableInputProcessing();
|
InputManager()->DisableInputProcessing();
|
||||||
@@ -1077,7 +1078,7 @@ MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
|
|||||||
break;
|
break;
|
||||||
case InfomainScript::c_Book_Ctl:
|
case InfomainScript::c_Book_Ctl:
|
||||||
m_destLocation = LegoGameState::e_regbook;
|
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
|
actionToPlay = GameState()->GetCurrentAct() != LegoGameState::e_act1 ? InfomainScript::c_GoTo_RegBook_Red
|
||||||
: InfomainScript::c_GoTo_RegBook;
|
: InfomainScript::c_GoTo_RegBook;
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
@@ -1128,13 +1129,13 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param)
|
|||||||
MxCore* sender = p_param.GetSender();
|
MxCore* sender = p_param.GetSender();
|
||||||
|
|
||||||
if (sender == NULL) {
|
if (sender == NULL) {
|
||||||
if (m_infocenterState->m_unk0x74 == 8) {
|
if (m_infocenterState->m_state == InfocenterState::e_exitQueried) {
|
||||||
m_infoManDialogueTimer = 0;
|
m_infoManDialogueTimer = 0;
|
||||||
StopCutscene();
|
StopCutscene();
|
||||||
PlayAction(InfomainScript::c_iic043in_RunAnim);
|
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()) {
|
switch (((MxEntity*) sender)->GetEntityId()) {
|
||||||
case 5: {
|
case 5: {
|
||||||
m_infoManDialogueTimer = 0;
|
m_infoManDialogueTimer = 0;
|
||||||
@@ -1153,21 +1154,21 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
case 6:
|
case 6:
|
||||||
if (m_infocenterState->m_unk0x74 == 8) {
|
if (m_infocenterState->m_state == InfocenterState::e_exitQueried) {
|
||||||
StopCurrentAction();
|
StopCurrentAction();
|
||||||
SetROIVisible(g_object2x4red, FALSE);
|
SetROIVisible(g_object2x4red, FALSE);
|
||||||
SetROIVisible(g_object2x4grn, FALSE);
|
SetROIVisible(g_object2x4grn, FALSE);
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
PlayAction(InfomainScript::c_iicb28in_RunAnim);
|
PlayAction(InfomainScript::c_iicb28in_RunAnim);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
case 7:
|
case 7:
|
||||||
if (m_infocenterState->m_unk0x74 == 8) {
|
if (m_infocenterState->m_state == InfocenterState::e_exitQueried) {
|
||||||
if (m_infocenterState->HasRegistered()) {
|
if (m_infocenterState->HasRegistered()) {
|
||||||
GameState()->Save(0);
|
GameState()->Save(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_infocenterState->m_unk0x74 = 12;
|
m_infocenterState->m_state = InfocenterState::e_exiting;
|
||||||
PlayAction(InfomainScript::c_iic046in_RunAnim);
|
PlayAction(InfomainScript::c_iic046in_RunAnim);
|
||||||
InputManager()->DisableInputProcessing();
|
InputManager()->DisableInputProcessing();
|
||||||
InputManager()->SetUnknown336(TRUE);
|
InputManager()->SetUnknown336(TRUE);
|
||||||
@@ -1409,17 +1410,17 @@ void Infocenter::Reset()
|
|||||||
MxBool Infocenter::Escape()
|
MxBool Infocenter::Escape()
|
||||||
{
|
{
|
||||||
if (m_infocenterState != NULL) {
|
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();
|
StopCutscene();
|
||||||
m_infocenterState->m_unk0x74 = 1;
|
m_infocenterState->m_state = InfocenterState::e_introCancelled;
|
||||||
}
|
}
|
||||||
else if (val == 13) {
|
else if (val == InfocenterState::e_playCredits) {
|
||||||
StopCredits();
|
StopCredits();
|
||||||
}
|
}
|
||||||
else if (val != 8) {
|
else if (val != InfocenterState::e_exitQueried) {
|
||||||
m_infocenterState->m_unk0x74 = 8;
|
m_infocenterState->m_state = InfocenterState::e_exitQueried;
|
||||||
|
|
||||||
#ifdef COMPAT_MODE
|
#ifdef COMPAT_MODE
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -238,10 +238,10 @@ MxLong RegistrationBook::HandleControl(LegoControlManagerNotificationParam& p_pa
|
|||||||
DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav);
|
DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav);
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
m_infocenterState->m_unk0x74 = 15;
|
m_infocenterState->m_state = InfocenterState::e_backToInfoAct1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_infocenterState->m_unk0x74 = 2;
|
m_infocenterState->m_state = InfocenterState::e_notRegistered;
|
||||||
}
|
}
|
||||||
|
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
@@ -323,7 +323,7 @@ void RegistrationBook::FUN_100775c0(MxS16 p_playerIndex)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_infocenterState->m_unk0x74 = 4;
|
m_infocenterState->m_state = InfocenterState::e_selectedSave;
|
||||||
if (m_unk0x2b8 == 0 && !m_unk0x2c1) {
|
if (m_unk0x2b8 == 0 && !m_unk0x2c1) {
|
||||||
DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav);
|
DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav);
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
@@ -619,12 +619,12 @@ MxBool RegistrationBook::CreateSurface()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (presenter) {
|
if (presenter) {
|
||||||
m_checkboxSurface = presenter->VTable0x78();
|
m_checkboxSurface = presenter->GetSurface();
|
||||||
}
|
}
|
||||||
|
|
||||||
presenter = (MxStillPresenter*) Find("MxStillPresenter", "CheckHiLite_Bitmap");
|
presenter = (MxStillPresenter*) Find("MxStillPresenter", "CheckHiLite_Bitmap");
|
||||||
if (presenter) {
|
if (presenter) {
|
||||||
m_checkboxHilite = presenter->VTable0x78();
|
m_checkboxHilite = presenter->GetSurface();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_checkboxSurface && m_checkboxHilite) {
|
if (m_checkboxSurface && m_checkboxHilite) {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ LegoWEEdge::LegoWEEdge()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1009a590
|
// FUNCTION: LEGO1 0x1009a590
|
||||||
|
// FUNCTION: BETA10 0x10182530
|
||||||
LegoWEEdge::~LegoWEEdge()
|
LegoWEEdge::~LegoWEEdge()
|
||||||
{
|
{
|
||||||
if (m_edges) {
|
if (m_edges) {
|
||||||
@@ -20,31 +21,52 @@ LegoWEEdge::~LegoWEEdge()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1009a5b0
|
// FUNCTION: LEGO1 0x1009a5b0
|
||||||
|
// FUNCTION: BETA10 0x10182577
|
||||||
LegoS32 LegoWEEdge::LinkEdgesAndFaces()
|
LegoS32 LegoWEEdge::LinkEdgesAndFaces()
|
||||||
{
|
{
|
||||||
|
assert(m_edges);
|
||||||
|
assert(m_numEdges);
|
||||||
|
|
||||||
for (LegoS32 i = 0; i < m_numEdges; i++) {
|
for (LegoS32 i = 0; i < m_numEdges; i++) {
|
||||||
LegoOrientedEdge* e1 = m_edges[i];
|
LegoOrientedEdge* e1 = m_edges[i];
|
||||||
LegoOrientedEdge* e2 = (m_numEdges - i) == 1 ? m_edges[0] : m_edges[i + 1];
|
LegoOrientedEdge* e2 = (m_numEdges - 1) == i ? m_edges[0] : m_edges[i + 1];
|
||||||
|
|
||||||
if (e2->m_pointA == e1->m_pointA) {
|
if (e2->m_pointA == e1->m_pointA) {
|
||||||
|
assert(e1->m_faceA == NULL || e1->m_faceA == this);
|
||||||
|
assert(e2->m_faceB == NULL || e2->m_faceB == this);
|
||||||
|
assert(e1->m_ccwA == NULL || e1->m_ccwA == e2);
|
||||||
|
assert(e2->m_cwB == NULL || e2->m_cwB == e1);
|
||||||
e1->m_faceA = this;
|
e1->m_faceA = this;
|
||||||
e2->m_faceB = this;
|
e2->m_faceB = this;
|
||||||
e1->m_ccwA = e2;
|
e1->m_ccwA = e2;
|
||||||
e2->m_cwB = e1;
|
e2->m_cwB = e1;
|
||||||
}
|
}
|
||||||
else if (e2->m_pointB == e1->m_pointA) {
|
else if (e2->m_pointB == e1->m_pointA) {
|
||||||
|
assert(e1->m_faceA == NULL || e1->m_faceA == this);
|
||||||
|
assert(e2->m_faceA == NULL || e2->m_faceA == this);
|
||||||
|
assert(e1->m_ccwA == NULL || e1->m_ccwA == e2);
|
||||||
|
assert(e2->m_cwA == NULL || e2->m_cwA == e1);
|
||||||
e1->m_faceA = this;
|
e1->m_faceA = this;
|
||||||
e2->m_faceA = this;
|
e2->m_faceA = this;
|
||||||
e1->m_ccwA = e2;
|
e1->m_ccwA = e2;
|
||||||
e2->m_cwA = e1;
|
e2->m_cwA = e1;
|
||||||
}
|
}
|
||||||
else if (e1->m_pointB == e2->m_pointA) {
|
else if (e1->m_pointB == e2->m_pointA) {
|
||||||
|
assert(e1->m_faceB == NULL || e1->m_faceB == this);
|
||||||
|
assert(e2->m_faceB == NULL || e2->m_faceB == this);
|
||||||
|
assert(e1->m_ccwB == NULL || e1->m_ccwB == e2);
|
||||||
|
assert(e2->m_cwB == NULL || e2->m_cwB == e1);
|
||||||
e1->m_faceB = this;
|
e1->m_faceB = this;
|
||||||
e2->m_faceB = this;
|
e2->m_faceB = this;
|
||||||
e1->m_ccwB = e2;
|
e1->m_ccwB = e2;
|
||||||
e2->m_cwB = e1;
|
e2->m_cwB = e1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
assert(e1->m_pointB == e2->m_pointB);
|
||||||
|
assert(e1->m_faceB == NULL || e1->m_faceB == this);
|
||||||
|
assert(e2->m_faceA == NULL || e2->m_faceA == this);
|
||||||
|
assert(e1->m_ccwB == NULL || e1->m_ccwB == e2);
|
||||||
|
assert(e2->m_cwA == NULL || e2->m_cwA == e1);
|
||||||
e1->m_faceB = this;
|
e1->m_faceB = this;
|
||||||
e2->m_faceA = this;
|
e2->m_faceA = this;
|
||||||
e1->m_ccwB = e2;
|
e1->m_ccwB = e2;
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
struct LegoOrientedEdge;
|
struct LegoOrientedEdge;
|
||||||
|
|
||||||
// might be a struct with public members
|
|
||||||
// VTABLE: LEGO1 0x100db7c0
|
// VTABLE: LEGO1 0x100db7c0
|
||||||
|
// VTABLE: BETA10 0x101c3730
|
||||||
// SIZE 0x0c
|
// SIZE 0x0c
|
||||||
class LegoWEEdge {
|
class LegoWEEdge {
|
||||||
public:
|
public:
|
||||||
@@ -33,6 +33,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1009a570
|
// SYNTHETIC: LEGO1 0x1009a570
|
||||||
|
// SYNTHETIC: BETA10 0x10182b70
|
||||||
// LegoWEEdge::`scalar deleting destructor'
|
// LegoWEEdge::`scalar deleting destructor'
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ LegoWEGEdge::LegoWEGEdge()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1009a800
|
// FUNCTION: LEGO1 0x1009a800
|
||||||
|
// FUNCTION: BETA10 0x101831bd
|
||||||
LegoWEGEdge::~LegoWEGEdge()
|
LegoWEGEdge::~LegoWEGEdge()
|
||||||
{
|
{
|
||||||
if (m_edges) {
|
if (m_edges) {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ struct PathWithTrigger {
|
|||||||
|
|
||||||
// might be a struct with public members
|
// might be a struct with public members
|
||||||
// VTABLE: LEGO1 0x100db7f8
|
// VTABLE: LEGO1 0x100db7f8
|
||||||
|
// VTABLE: BETA10 0x101c3798
|
||||||
// SIZE 0x54
|
// SIZE 0x54
|
||||||
class LegoWEGEdge : public LegoWEEdge {
|
class LegoWEGEdge : public LegoWEEdge {
|
||||||
public:
|
public:
|
||||||
@@ -80,6 +81,7 @@ public:
|
|||||||
LegoU8 GetMask0x03() { return m_flags & (c_bit1 | c_bit2); }
|
LegoU8 GetMask0x03() { return m_flags & (c_bit1 | c_bit2); }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1009a7e0
|
// SYNTHETIC: LEGO1 0x1009a7e0
|
||||||
|
// SYNTHETIC: BETA10 0x10184130
|
||||||
// LegoWEGEdge::`scalar deleting destructor'
|
// LegoWEGEdge::`scalar deleting destructor'
|
||||||
|
|
||||||
friend class LegoPathController;
|
friend class LegoPathController;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "shape/legobox.h"
|
#include "shape/legobox.h"
|
||||||
#include "shape/legosphere.h"
|
#include "shape/legosphere.h"
|
||||||
|
|
||||||
|
#include <crtdbg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <vec.h>
|
#include <vec.h>
|
||||||
|
|
||||||
@@ -410,8 +411,7 @@ LegoResult LegoROI::ApplyChildAnimationTransformation(
|
|||||||
roi->m_local2world.Product(mat, p_matrix);
|
roi->m_local2world.Product(mat, p_matrix);
|
||||||
roi->UpdateWorldData();
|
roi->UpdateWorldData();
|
||||||
|
|
||||||
LegoBool visibility = data->GetVisibility(p_time);
|
roi->SetVisibility(data->GetVisibility(p_time));
|
||||||
roi->SetVisibility(visibility);
|
|
||||||
|
|
||||||
for (LegoU32 i = 0; i < p_node->GetNumChildren(); i++) {
|
for (LegoU32 i = 0; i < p_node->GetNumChildren(); i++) {
|
||||||
ApplyChildAnimationTransformation(p_node->GetChild(i), roi->m_local2world, p_time, roi);
|
ApplyChildAnimationTransformation(p_node->GetChild(i), roi->m_local2world, p_time, roi);
|
||||||
@@ -419,6 +419,11 @@ LegoResult LegoROI::ApplyChildAnimationTransformation(
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FUN_100a81b0("%s ROI Not found\n", name);
|
FUN_100a81b0("%s ROI Not found\n", name);
|
||||||
|
#ifdef BETA10
|
||||||
|
_RPT1(_CRT_ASSERT, "%s ROI Not Found", name);
|
||||||
|
// Note that the macro inserts an INT3, which breaks the assumption that INT3
|
||||||
|
// only occurs as a filler for empty space in the binary.
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
|||||||
@@ -132,9 +132,11 @@
|
|||||||
// ??_L@YGXPAXIHP6EX0@Z1@Z
|
// ??_L@YGXPAXIHP6EX0@Z1@Z
|
||||||
|
|
||||||
// LIBRARY: LEGO1 0x1008c2e0
|
// LIBRARY: LEGO1 0x1008c2e0
|
||||||
|
// LIBRARY: BETA10 0x100f9800
|
||||||
// ??_M@YGXPAXIHP6EX0@Z@Z
|
// ??_M@YGXPAXIHP6EX0@Z@Z
|
||||||
|
|
||||||
// LIBRARY: LEGO1 0x1008c370
|
// LIBRARY: LEGO1 0x1008c370
|
||||||
|
// LIBRARY: BETA10 0x100f98b0
|
||||||
// ?__ArrayUnwind@@YGXPAXIHP6EX0@Z@Z
|
// ?__ArrayUnwind@@YGXPAXIHP6EX0@Z@Z
|
||||||
|
|
||||||
// LIBRARY: LEGO1 0x1008c410
|
// LIBRARY: LEGO1 0x1008c410
|
||||||
@@ -162,6 +164,7 @@
|
|||||||
// __amsg_exit
|
// __amsg_exit
|
||||||
|
|
||||||
// LIBRARY: LEGO1 0x1008c980
|
// LIBRARY: LEGO1 0x1008c980
|
||||||
|
// LIBRARY: BETA10 0x10101318
|
||||||
// __except_handler3
|
// __except_handler3
|
||||||
|
|
||||||
// LIBRARY: LEGO1 0x1008ca60
|
// LIBRARY: LEGO1 0x1008ca60
|
||||||
@@ -783,6 +786,61 @@
|
|||||||
// LIBRARY: BETA10 0x100fa210
|
// LIBRARY: BETA10 0x100fa210
|
||||||
// strcat
|
// strcat
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100fed20
|
||||||
|
// strncat
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100faab0
|
||||||
|
// strncpy
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100ff490
|
||||||
|
// setvbuf
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100ff180
|
||||||
|
// fflush
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100fec40
|
||||||
|
// __crtMessageBoxA
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100fee50
|
||||||
|
// _itoa
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x10106f70
|
||||||
|
// _lock_file
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100ff1e0
|
||||||
|
// _fflush_lk
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x10107010
|
||||||
|
// _unlock_file
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x10106ea0
|
||||||
|
// _lock
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x10106f50
|
||||||
|
// _unlock
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100fdaf0
|
||||||
|
// _getptd
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x10104040
|
||||||
|
// _malloc_dbg
|
||||||
|
|
||||||
|
// GLOBAL: BETA10 0x101fb7b0
|
||||||
|
// _locktable
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x10104c00
|
||||||
|
// _free_dbg
|
||||||
|
|
||||||
|
// LIBRARY: BETA10 0x100fe900
|
||||||
|
// raise
|
||||||
|
|
||||||
|
// GLOBAL: BETA10 0x101fa950
|
||||||
|
// _iob
|
||||||
|
|
||||||
|
// GLOBAL: BETA10 0x102122d0
|
||||||
|
// _bufin
|
||||||
|
|
||||||
|
|
||||||
// LIBRARY: BETA10 0x100f8a88
|
// LIBRARY: BETA10 0x100f8a88
|
||||||
// ??2@YAPAXI@Z
|
// ??2@YAPAXI@Z
|
||||||
|
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ public:
|
|||||||
void Destroy() override { Destroy(FALSE); } // vtable+0x38
|
void Destroy() override { Destroy(FALSE); } // vtable+0x38
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000c7b0
|
// FUNCTION: LEGO1 0x1000c7b0
|
||||||
virtual LPDIRECTDRAWSURFACE VTable0x78() { return m_unk0x58; } // vtable+0x78
|
virtual LPDIRECTDRAWSURFACE GetSurface() { return m_surface; } // vtable+0x78
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000c7c0
|
// FUNCTION: LEGO1 0x1000c7c0
|
||||||
virtual MxBool VTable0x7c() { return m_frameBitmap != NULL || m_alpha != NULL; } // vtable+0x7c
|
virtual MxBool HasFrameBitmapOrAlpha() { return m_frameBitmap != NULL || m_alpha != NULL; } // vtable+0x7c
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000c7e0
|
// FUNCTION: LEGO1 0x1000c7e0
|
||||||
virtual MxS32 GetWidth() { return m_alpha ? m_alpha->GetWidth() : m_frameBitmap->GetBmiWidth(); } // vtable+0x80
|
virtual MxS32 GetWidth() { return m_alpha ? m_alpha->GetWidth() : m_frameBitmap->GetBmiWidth(); } // vtable+0x80
|
||||||
@@ -115,17 +115,17 @@ public:
|
|||||||
// FUNCTION: BETA10 0x1002c2e0
|
// FUNCTION: BETA10 0x1002c2e0
|
||||||
MxU8* GetBitmapStart(MxS32 p_left, MxS32 p_top) { return m_frameBitmap->GetStart(p_left, p_top); }
|
MxU8* GetBitmapStart(MxS32 p_left, MxS32 p_top) { return m_frameBitmap->GetStart(p_left, p_top); }
|
||||||
|
|
||||||
void SetBit0(BOOL p_e) { m_flags.m_bit0 = p_e; }
|
void SetLoadedFirstFrame(BOOL p_loadedFirstFrame) { m_flags.m_bit0 = p_loadedFirstFrame; }
|
||||||
void SetBit1(BOOL p_e) { m_flags.m_bit1 = p_e; }
|
void SetUseSurface(BOOL p_useSurface) { m_flags.m_bit1 = p_useSurface; }
|
||||||
void SetBit2(BOOL p_e) { m_flags.m_bit2 = p_e; }
|
void SetUseVideoMemory(BOOL p_useVideoMemory) { m_flags.m_bit2 = p_useVideoMemory; }
|
||||||
void SetBit3(BOOL p_e) { m_flags.m_bit3 = p_e; }
|
void SetDoNotWriteToSurface(BOOL p_doNotWriteToSurface) { m_flags.m_bit3 = p_doNotWriteToSurface; }
|
||||||
void SetBit4(BOOL p_e) { m_flags.m_bit4 = p_e; }
|
void SetBitmapIsMap(BOOL p_bitmapIsMap) { m_flags.m_bit4 = p_bitmapIsMap; }
|
||||||
|
|
||||||
BYTE GetBit0() { return m_flags.m_bit0; }
|
BYTE LoadedFirstFrame() { return m_flags.m_bit0; }
|
||||||
BYTE GetBit1() { return m_flags.m_bit1; }
|
BYTE UseSurface() { return m_flags.m_bit1; }
|
||||||
BYTE GetBit2() { return m_flags.m_bit2; }
|
BYTE UseVideoMemory() { return m_flags.m_bit2; }
|
||||||
BYTE GetBit3() { return m_flags.m_bit3; }
|
BYTE DoNotWriteToSurface() { return m_flags.m_bit3; }
|
||||||
BYTE GetBit4() { return m_flags.m_bit4; }
|
BYTE BitmapIsMap() { return m_flags.m_bit4; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000c910
|
// SYNTHETIC: LEGO1 0x1000c910
|
||||||
// MxVideoPresenter::`scalar deleting destructor'
|
// MxVideoPresenter::`scalar deleting destructor'
|
||||||
@@ -138,10 +138,10 @@ protected:
|
|||||||
|
|
||||||
MxBitmap* m_frameBitmap; // 0x50
|
MxBitmap* m_frameBitmap; // 0x50
|
||||||
AlphaMask* m_alpha; // 0x54
|
AlphaMask* m_alpha; // 0x54
|
||||||
LPDIRECTDRAWSURFACE m_unk0x58; // 0x58
|
LPDIRECTDRAWSURFACE m_surface; // 0x58
|
||||||
MxS16 m_unk0x5c; // 0x5c
|
MxS16 m_frameLoadTickleCount; // 0x5c
|
||||||
FlagBitfield m_flags; // 0x5e
|
FlagBitfield m_flags; // 0x5e
|
||||||
MxLong m_unk0x60; // 0x60
|
MxLong m_frozenTime; // 0x60
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MXVIDEOPRESENTER_H
|
#endif // MXVIDEOPRESENTER_H
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ DECOMP_SIZE_ASSERT(MxFlcPresenter, 0x68);
|
|||||||
MxFlcPresenter::MxFlcPresenter()
|
MxFlcPresenter::MxFlcPresenter()
|
||||||
{
|
{
|
||||||
m_flcHeader = NULL;
|
m_flcHeader = NULL;
|
||||||
SetBit1(FALSE);
|
SetUseSurface(FALSE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b3420
|
// FUNCTION: LEGO1 0x100b3420
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ MxLoopingFlcPresenter::~MxLoopingFlcPresenter()
|
|||||||
void MxLoopingFlcPresenter::Init()
|
void MxLoopingFlcPresenter::Init()
|
||||||
{
|
{
|
||||||
this->m_elapsedDuration = 0;
|
this->m_elapsedDuration = 0;
|
||||||
SetBit1(FALSE);
|
SetUseSurface(FALSE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b4430
|
// FUNCTION: LEGO1 0x100b4430
|
||||||
@@ -72,7 +72,7 @@ void MxLoopingFlcPresenter::VTable0x88()
|
|||||||
// FUNCTION: LEGO1 0x100b4520
|
// FUNCTION: LEGO1 0x100b4520
|
||||||
void MxLoopingFlcPresenter::RepeatingTickle()
|
void MxLoopingFlcPresenter::RepeatingTickle()
|
||||||
{
|
{
|
||||||
for (MxS16 i = 0; i < m_unk0x5c; i++) {
|
for (MxS16 i = 0; i < m_frameLoadTickleCount; i++) {
|
||||||
if (!m_loopingChunkCursor->HasMatch()) {
|
if (!m_loopingChunkCursor->HasMatch()) {
|
||||||
MxStreamChunk* chunk;
|
MxStreamChunk* chunk;
|
||||||
MxStreamChunkListCursor cursor(m_loopingChunks);
|
MxStreamChunkListCursor cursor(m_loopingChunks);
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ MxLoopingSmkPresenter::~MxLoopingSmkPresenter()
|
|||||||
void MxLoopingSmkPresenter::Init()
|
void MxLoopingSmkPresenter::Init()
|
||||||
{
|
{
|
||||||
m_elapsedDuration = 0;
|
m_elapsedDuration = 0;
|
||||||
SetBit1(FALSE);
|
SetUseSurface(FALSE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b49d0
|
// FUNCTION: LEGO1 0x100b49d0
|
||||||
@@ -82,7 +82,7 @@ void MxLoopingSmkPresenter::VTable0x8c()
|
|||||||
// FUNCTION: LEGO1 0x100b4b00
|
// FUNCTION: LEGO1 0x100b4b00
|
||||||
void MxLoopingSmkPresenter::RepeatingTickle()
|
void MxLoopingSmkPresenter::RepeatingTickle()
|
||||||
{
|
{
|
||||||
for (MxS16 i = 0; i < m_unk0x5c; i++) {
|
for (MxS16 i = 0; i < m_frameLoadTickleCount; i++) {
|
||||||
if (!m_loopingChunkCursor->HasMatch()) {
|
if (!m_loopingChunkCursor->HasMatch()) {
|
||||||
MxStreamChunk* chunk;
|
MxStreamChunk* chunk;
|
||||||
MxStreamChunkListCursor cursor(m_loopingChunks);
|
MxStreamChunkListCursor cursor(m_loopingChunks);
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ void MxSmkPresenter::Init()
|
|||||||
{
|
{
|
||||||
m_currentFrame = 0;
|
m_currentFrame = 0;
|
||||||
memset(&m_mxSmk, 0, sizeof(m_mxSmk));
|
memset(&m_mxSmk, 0, sizeof(m_mxSmk));
|
||||||
SetBit1(FALSE);
|
SetUseSurface(FALSE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b3900
|
// FUNCTION: LEGO1 0x100b3900
|
||||||
|
|||||||
@@ -79,12 +79,12 @@ void MxStillPresenter::LoadFrame(MxStreamChunk* p_chunk)
|
|||||||
MxRect32 rect(x, y, width + x, height + y);
|
MxRect32 rect(x, y, width + x, height + y);
|
||||||
MVideoManager()->InvalidateRect(rect);
|
MVideoManager()->InvalidateRect(rect);
|
||||||
|
|
||||||
if (GetBit1()) {
|
if (UseSurface()) {
|
||||||
undefined4 und = 0;
|
undefined4 useVideoMemory = 0;
|
||||||
m_unk0x58 = MxOmni::GetInstance()->GetVideoManager()->GetDisplaySurface()->VTable0x44(
|
m_surface = MxOmni::GetInstance()->GetVideoManager()->GetDisplaySurface()->VTable0x44(
|
||||||
m_frameBitmap,
|
m_frameBitmap,
|
||||||
&und,
|
&useVideoMemory,
|
||||||
GetBit3(),
|
DoNotWriteToSurface(),
|
||||||
m_action->GetFlags() & MxDSAction::c_bit4
|
m_action->GetFlags() & MxDSAction::c_bit4
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -94,11 +94,11 @@ void MxStillPresenter::LoadFrame(MxStreamChunk* p_chunk)
|
|||||||
delete m_frameBitmap;
|
delete m_frameBitmap;
|
||||||
m_frameBitmap = NULL;
|
m_frameBitmap = NULL;
|
||||||
|
|
||||||
if (m_unk0x58 && und) {
|
if (m_surface && useVideoMemory) {
|
||||||
SetBit2(TRUE);
|
SetUseVideoMemory(TRUE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ void MxStillPresenter::ParseExtra()
|
|||||||
MxPresenter::ParseExtra();
|
MxPresenter::ParseExtra();
|
||||||
|
|
||||||
if (m_action->GetFlags() & MxDSAction::c_bit5) {
|
if (m_action->GetFlags() & MxDSAction::c_bit5) {
|
||||||
SetBit3(TRUE);
|
SetDoNotWriteToSurface(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
MxU16 extraLength;
|
MxU16 extraLength;
|
||||||
@@ -216,9 +216,9 @@ void MxStillPresenter::ParseExtra()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (KeyValueStringParse(output, g_strBMP_ISMAP, extraCopy)) {
|
if (KeyValueStringParse(output, g_strBMP_ISMAP, extraCopy)) {
|
||||||
SetBit4(TRUE);
|
SetBitmapIsMap(TRUE);
|
||||||
SetBit1(FALSE);
|
SetUseSurface(FALSE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -234,11 +234,11 @@ MxStillPresenter* MxStillPresenter::Clone()
|
|||||||
MxDSAction* action = GetAction()->Clone();
|
MxDSAction* action = GetAction()->Clone();
|
||||||
|
|
||||||
if (action && presenter->StartAction(NULL, action) == SUCCESS) {
|
if (action && presenter->StartAction(NULL, action) == SUCCESS) {
|
||||||
presenter->SetBit0(GetBit0());
|
presenter->SetLoadedFirstFrame(LoadedFirstFrame());
|
||||||
presenter->SetBit1(GetBit1());
|
presenter->SetUseSurface(UseSurface());
|
||||||
presenter->SetBit2(GetBit2());
|
presenter->SetUseVideoMemory(UseVideoMemory());
|
||||||
presenter->SetBit3(GetBit3());
|
presenter->SetDoNotWriteToSurface(DoNotWriteToSurface());
|
||||||
presenter->SetBit4(GetBit4());
|
presenter->SetBitmapIsMap(BitmapIsMap());
|
||||||
|
|
||||||
if (m_frameBitmap) {
|
if (m_frameBitmap) {
|
||||||
presenter->m_frameBitmap = new MxBitmap;
|
presenter->m_frameBitmap = new MxBitmap;
|
||||||
@@ -248,8 +248,8 @@ MxStillPresenter* MxStillPresenter::Clone()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_unk0x58) {
|
if (m_surface) {
|
||||||
presenter->m_unk0x58 = MxDisplaySurface::CopySurface(m_unk0x58);
|
presenter->m_surface = MxDisplaySurface::CopySurface(m_surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_alpha) {
|
if (m_alpha) {
|
||||||
|
|||||||
@@ -93,19 +93,19 @@ void MxVideoPresenter::Init()
|
|||||||
{
|
{
|
||||||
m_frameBitmap = NULL;
|
m_frameBitmap = NULL;
|
||||||
m_alpha = NULL;
|
m_alpha = NULL;
|
||||||
m_unk0x5c = 1;
|
m_frameLoadTickleCount = 1;
|
||||||
m_unk0x58 = NULL;
|
m_surface = NULL;
|
||||||
m_unk0x60 = -1;
|
m_frozenTime = -1;
|
||||||
SetBit0(FALSE);
|
SetLoadedFirstFrame(FALSE);
|
||||||
|
|
||||||
if (MVideoManager() != NULL) {
|
if (MVideoManager() != NULL) {
|
||||||
MVideoManager();
|
MVideoManager();
|
||||||
SetBit1(TRUE);
|
SetUseSurface(TRUE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetBit3(FALSE);
|
SetDoNotWriteToSurface(FALSE);
|
||||||
SetBit4(FALSE);
|
SetBitmapIsMap(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b27b0
|
// FUNCTION: LEGO1 0x100b27b0
|
||||||
@@ -115,11 +115,11 @@ void MxVideoPresenter::Destroy(MxBool p_fromDestructor)
|
|||||||
MVideoManager()->UnregisterPresenter(*this);
|
MVideoManager()->UnregisterPresenter(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_unk0x58) {
|
if (m_surface) {
|
||||||
m_unk0x58->Release();
|
m_surface->Release();
|
||||||
m_unk0x58 = NULL;
|
m_surface = NULL;
|
||||||
SetBit1(FALSE);
|
SetUseSurface(FALSE);
|
||||||
SetBit2(FALSE);
|
SetUseVideoMemory(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MVideoManager() && (m_alpha || m_frameBitmap)) {
|
if (MVideoManager() && (m_alpha || m_frameBitmap)) {
|
||||||
@@ -183,7 +183,7 @@ MxBool MxVideoPresenter::IsHit(MxS32 p_x, MxS32 p_y)
|
|||||||
|
|
||||||
MxU8* pixel = m_frameBitmap->GetStart(p_x - rect.GetLeft(), p_y - rect.GetTop());
|
MxU8* pixel = m_frameBitmap->GetStart(p_x - rect.GetLeft(), p_y - rect.GetTop());
|
||||||
|
|
||||||
if (GetBit4()) {
|
if (BitmapIsMap()) {
|
||||||
return (MxBool) *pixel;
|
return (MxBool) *pixel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ void MxVideoPresenter::PutFrame()
|
|||||||
LPDIRECTDRAWSURFACE ddSurface = displaySurface->GetDirectDrawSurface2();
|
LPDIRECTDRAWSURFACE ddSurface = displaySurface->GetDirectDrawSurface2();
|
||||||
|
|
||||||
if (m_action->GetFlags() & MxDSAction::c_bit5) {
|
if (m_action->GetFlags() & MxDSAction::c_bit5) {
|
||||||
if (m_unk0x58) {
|
if (m_surface) {
|
||||||
RECT src, dest;
|
RECT src, dest;
|
||||||
src.top = 0;
|
src.top = 0;
|
||||||
src.left = 0;
|
src.left = 0;
|
||||||
@@ -255,10 +255,10 @@ void MxVideoPresenter::PutFrame()
|
|||||||
|
|
||||||
switch (PrepareRects(src, dest)) {
|
switch (PrepareRects(src, dest)) {
|
||||||
case 0:
|
case 0:
|
||||||
ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_KEYSRC, NULL);
|
ddSurface->Blt(&dest, m_surface, &src, DDBLT_KEYSRC, NULL);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
ddSurface->BltFast(dest.left, dest.top, m_unk0x58, &src, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
|
ddSurface->BltFast(dest.left, dest.top, m_surface, &src, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -282,7 +282,7 @@ void MxVideoPresenter::PutFrame()
|
|||||||
if (regionRect->GetWidth() >= 1 && regionRect->GetHeight() >= 1) {
|
if (regionRect->GetWidth() >= 1 && regionRect->GetHeight() >= 1) {
|
||||||
RECT src, dest;
|
RECT src, dest;
|
||||||
|
|
||||||
if (m_unk0x58) {
|
if (m_surface) {
|
||||||
src.left = regionRect->GetLeft() - GetX();
|
src.left = regionRect->GetLeft() - GetX();
|
||||||
src.top = regionRect->GetTop() - GetY();
|
src.top = regionRect->GetTop() - GetY();
|
||||||
src.right = src.left + regionRect->GetWidth();
|
src.right = src.left + regionRect->GetWidth();
|
||||||
@@ -295,9 +295,9 @@ void MxVideoPresenter::PutFrame()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_action->GetFlags() & MxDSAction::c_bit4) {
|
if (m_action->GetFlags() & MxDSAction::c_bit4) {
|
||||||
if (m_unk0x58) {
|
if (m_surface) {
|
||||||
if (PrepareRects(src, dest) >= 0) {
|
if (PrepareRects(src, dest) >= 0) {
|
||||||
ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_KEYSRC, NULL);
|
ddSurface->Blt(&dest, m_surface, &src, DDBLT_KEYSRC, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -313,9 +313,9 @@ void MxVideoPresenter::PutFrame()
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (m_unk0x58) {
|
else if (m_surface) {
|
||||||
if (PrepareRects(src, dest) >= 0) {
|
if (PrepareRects(src, dest) >= 0) {
|
||||||
ddSurface->Blt(&dest, m_unk0x58, &src, 0, NULL);
|
ddSurface->Blt(&dest, m_surface, &src, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -372,7 +372,7 @@ void MxVideoPresenter::StreamingTickle()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (MxS16 i = 0; i < m_unk0x5c; i++) {
|
for (MxS16 i = 0; i < m_frameLoadTickleCount; i++) {
|
||||||
if (!m_currentChunk) {
|
if (!m_currentChunk) {
|
||||||
MxMediaPresenter::StreamingTickle();
|
MxMediaPresenter::StreamingTickle();
|
||||||
|
|
||||||
@@ -388,15 +388,15 @@ void MxVideoPresenter::StreamingTickle()
|
|||||||
LoadFrame(m_currentChunk);
|
LoadFrame(m_currentChunk);
|
||||||
m_subscriber->FreeDataChunk(m_currentChunk);
|
m_subscriber->FreeDataChunk(m_currentChunk);
|
||||||
m_currentChunk = NULL;
|
m_currentChunk = NULL;
|
||||||
SetBit0(TRUE);
|
SetLoadedFirstFrame(TRUE);
|
||||||
|
|
||||||
if (m_currentTickleState != e_streaming) {
|
if (m_currentTickleState != e_streaming) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetBit0()) {
|
if (LoadedFirstFrame()) {
|
||||||
m_unk0x5c = 5;
|
m_frameLoadTickleCount = 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -416,7 +416,7 @@ void MxVideoPresenter::RepeatingTickle()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (MxS16 i = 0; i < m_unk0x5c; i++) {
|
for (MxS16 i = 0; i < m_frameLoadTickleCount; i++) {
|
||||||
if (!m_currentChunk) {
|
if (!m_currentChunk) {
|
||||||
MxMediaPresenter::RepeatingTickle();
|
MxMediaPresenter::RepeatingTickle();
|
||||||
|
|
||||||
@@ -431,15 +431,15 @@ void MxVideoPresenter::RepeatingTickle()
|
|||||||
|
|
||||||
LoadFrame(m_currentChunk);
|
LoadFrame(m_currentChunk);
|
||||||
m_currentChunk = NULL;
|
m_currentChunk = NULL;
|
||||||
SetBit0(TRUE);
|
SetLoadedFirstFrame(TRUE);
|
||||||
|
|
||||||
if (m_currentTickleState != e_repeating) {
|
if (m_currentTickleState != e_repeating) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetBit0()) {
|
if (LoadedFirstFrame()) {
|
||||||
m_unk0x5c = 5;
|
m_frameLoadTickleCount = 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -452,11 +452,11 @@ void MxVideoPresenter::FreezingTickle()
|
|||||||
|
|
||||||
if (sustainTime != -1) {
|
if (sustainTime != -1) {
|
||||||
if (sustainTime) {
|
if (sustainTime) {
|
||||||
if (m_unk0x60 == -1) {
|
if (m_frozenTime == -1) {
|
||||||
m_unk0x60 = m_action->GetElapsedTime();
|
m_frozenTime = m_action->GetElapsedTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_action->GetElapsedTime() >= m_unk0x60 + ((MxDSMediaAction*) m_action)->GetSustainTime()) {
|
if (m_action->GetElapsedTime() >= m_frozenTime + ((MxDSMediaAction*) m_action)->GetSustainTime()) {
|
||||||
ProgressTickleState(e_done);
|
ProgressTickleState(e_done);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user