mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-24 17:04:17 +00:00
Implement/match Isle::FUN_10032d30 (#684)
This commit is contained in:
committed by
GitHub
parent
5b8f515968
commit
0fe3fa65aa
@@ -94,7 +94,7 @@ protected:
|
|||||||
MxU32 m_unk0x018; // 0x018
|
MxU32 m_unk0x018; // 0x018
|
||||||
MxU16 m_unk0x01c; // 0x01c
|
MxU16 m_unk0x01c; // 0x01c
|
||||||
undefined m_unk0x01e; // 0x01e
|
undefined m_unk0x01e; // 0x01e
|
||||||
undefined m_unk0x01f; // 0x01f
|
MxBool m_unk0x01f; // 0x01f
|
||||||
undefined m_unk0x020; // 0x020
|
undefined m_unk0x020; // 0x020
|
||||||
undefined m_unk0x021; // 0x021
|
undefined m_unk0x021; // 0x021
|
||||||
undefined m_unk0x022; // 0x022
|
undefined m_unk0x022; // 0x022
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Act1State::Act1State() : m_unk0x00c(0), m_unk0x00e(0), m_unk0x008(NULL), m_unk0x
|
|||||||
m_unk0x010 = 0;
|
m_unk0x010 = 0;
|
||||||
m_unk0x020 = 0;
|
m_unk0x020 = 0;
|
||||||
m_unk0x00e = 0;
|
m_unk0x00e = 0;
|
||||||
m_unk0x01f = 0;
|
m_unk0x01f = FALSE;
|
||||||
m_unk0x008 = g_unk0x100f37f0;
|
m_unk0x008 = g_unk0x100f37f0;
|
||||||
m_unk0x014 = -1;
|
m_unk0x014 = -1;
|
||||||
m_unk0x022 = 0;
|
m_unk0x022 = 0;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "legoinputmanager.h"
|
#include "legoinputmanager.h"
|
||||||
#include "legoomni.h"
|
#include "legoomni.h"
|
||||||
#include "legoutils.h"
|
#include "legoutils.h"
|
||||||
|
#include "legovariables.h"
|
||||||
#include "legovideomanager.h"
|
#include "legovideomanager.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "motocycle.h"
|
#include "motocycle.h"
|
||||||
@@ -562,7 +563,7 @@ MxLong Isle::HandleTransitionEnd()
|
|||||||
m_destLocation = LegoGameState::e_undefined;
|
m_destLocation = LegoGameState::e_undefined;
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_elevride:
|
case LegoGameState::e_elevride:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
VariableTable()->SetVariable("VISIBILITY", "Hide infocen");
|
VariableTable()->SetVariable("VISIBILITY", "Hide infocen");
|
||||||
FUN_10032d30(IsleScript::c_ElevRide_Background_Bitmap, JukeboxScript::c_Elevator_Music, "LCAMZI1,90", FALSE);
|
FUN_10032d30(IsleScript::c_ElevRide_Background_Bitmap, JukeboxScript::c_Elevator_Music, "LCAMZI1,90", FALSE);
|
||||||
break;
|
break;
|
||||||
@@ -606,7 +607,7 @@ MxLong Isle::HandleTransitionEnd()
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_garadoor:
|
case LegoGameState::e_garadoor:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
VariableTable()->SetVariable("VISIBILITY", "Hide Gas");
|
VariableTable()->SetVariable("VISIBILITY", "Hide Gas");
|
||||||
FUN_10032d30(IsleScript::c_GaraDoor_Background_Bitmap, JukeboxScript::c_JBMusic2, "LCAMZG1,90", FALSE);
|
FUN_10032d30(IsleScript::c_GaraDoor_Background_Bitmap, JukeboxScript::c_JBMusic2, "LCAMZG1,90", FALSE);
|
||||||
break;
|
break;
|
||||||
@@ -631,7 +632,7 @@ MxLong Isle::HandleTransitionEnd()
|
|||||||
SetIsWorldActive(TRUE);
|
SetIsWorldActive(TRUE);
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_polidoor:
|
case LegoGameState::e_polidoor:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
VariableTable()->SetVariable("VISIBILITY", "Hide Policsta");
|
VariableTable()->SetVariable("VISIBILITY", "Hide Policsta");
|
||||||
FUN_10032d30(
|
FUN_10032d30(
|
||||||
IsleScript::c_PoliDoor_Background_Bitmap,
|
IsleScript::c_PoliDoor_Background_Bitmap,
|
||||||
@@ -641,64 +642,64 @@ MxLong Isle::HandleTransitionEnd()
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_bike:
|
case LegoGameState::e_bike:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
FUN_10032d30(IsleScript::c_BikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_BikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_bike->FUN_10076b60();
|
m_bike->FUN_10076b60();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_dunecar:
|
case LegoGameState::e_dunecar:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
FUN_10032d30(IsleScript::c_DuneCarFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_DuneCarFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_dunebuggy->FUN_10068350();
|
m_dunebuggy->FUN_10068350();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_motocycle:
|
case LegoGameState::e_motocycle:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
FUN_10032d30(IsleScript::c_MotoBikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_MotoBikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_motocycle->FUN_10035e10();
|
m_motocycle->FUN_10035e10();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_copter:
|
case LegoGameState::e_copter:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
FUN_10032d30(IsleScript::c_HelicopterDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_HelicopterDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_skateboard:
|
case LegoGameState::e_skateboard:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
FUN_10032d30(IsleScript::c_SkatePizza_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_SkatePizza_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_skateboard->FUN_10010510();
|
m_skateboard->FUN_10010510();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_ambulance:
|
case LegoGameState::e_ambulance:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
m_act1state->m_unk0x018 = 10;
|
m_act1state->m_unk0x018 = 10;
|
||||||
FUN_10032d30(IsleScript::c_AmbulanceFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_AmbulanceFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_ambulance->FUN_10037060();
|
m_ambulance->FUN_10037060();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_towtrack:
|
case LegoGameState::e_towtrack:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
m_act1state->m_unk0x018 = 8;
|
m_act1state->m_unk0x018 = 8;
|
||||||
FUN_10032d30(IsleScript::c_TowFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30(IsleScript::c_TowFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_towtrack->FUN_1004dad0();
|
m_towtrack->FUN_1004dad0();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LegoGameState::e_jetski:
|
case LegoGameState::e_jetski:
|
||||||
m_act1state->m_unk0x01f = 1;
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
FUN_10032d30((IsleScript::Script) m_jetski->GetUnknown0x160(), JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
FUN_10032d30((IsleScript::Script) m_jetski->GetUnknown0x160(), JukeboxScript::c_MusicTheme1, NULL, TRUE);
|
||||||
|
|
||||||
if (m_act1state->m_unk0x01f == 0) {
|
if (!m_act1state->m_unk0x01f) {
|
||||||
m_jetski->FUN_1007e990();
|
m_jetski->FUN_1007e990();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -710,7 +711,7 @@ MxLong Isle::HandleTransitionEnd()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10032d30
|
// FUNCTION: LEGO1 0x10032d30
|
||||||
void Isle::FUN_10032d30(
|
void Isle::FUN_10032d30(
|
||||||
IsleScript::Script p_script,
|
IsleScript::Script p_script,
|
||||||
JukeboxScript::Script p_music,
|
JukeboxScript::Script p_music,
|
||||||
@@ -718,7 +719,56 @@ void Isle::FUN_10032d30(
|
|||||||
MxBool p_und
|
MxBool p_und
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
if (m_act1state->m_unk0x01f) {
|
||||||
|
MxPresenter* presenter = (MxPresenter*) Find(m_atom, p_script);
|
||||||
|
|
||||||
|
if (presenter != NULL && presenter->GetCurrentTickleState() == MxPresenter::e_repeating) {
|
||||||
|
if (p_music != JukeboxScript::c_MusicTheme1) {
|
||||||
|
PlayMusic(p_music);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p_und) {
|
||||||
|
InputManager()->SetCamera(m_cameraController);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
InputManager()->SetCamera(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p_cameraLocation != NULL) {
|
||||||
|
VariableTable()->SetVariable(g_varCAMERALOCATION, p_cameraLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
|
SetAppCursor(0);
|
||||||
|
m_destLocation = LegoGameState::e_undefined;
|
||||||
|
m_act1state->m_unk0x01f = FALSE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
#ifdef COMPAT_MODE
|
||||||
|
{
|
||||||
|
MxNotificationParam param(c_notificationTransitioned, NULL);
|
||||||
|
NotificationManager()->Send(this, ¶m);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
GameState()->SwitchArea(m_destLocation);
|
||||||
|
GameState()->StopArea(LegoGameState::e_previousArea);
|
||||||
|
|
||||||
|
#ifdef COMPAT_MODE
|
||||||
|
{
|
||||||
|
MxNotificationParam param(c_notificationTransitioned, NULL);
|
||||||
|
NotificationManager()->Send(this, ¶m);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_act1state->m_unk0x01f = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10032f10
|
// FUNCTION: LEGO1 0x10032f10
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static MxU32 g_nextCoreId;
|
static MxU32 g_nextCoreId;
|
||||||
|
|
||||||
MxU32 m_id; // 0x04
|
MxU32 m_id; // 0x04
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user