mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-11-21 23:17:53 -05:00
Implement/match remaining GasStation functions (#1129)
* Implement/match remaining GasStation functions * Name variables
This commit is contained in:
parent
4c95d7c887
commit
519d8c570a
2 changed files with 80 additions and 62 deletions
|
@ -38,19 +38,19 @@ class GasStationState : public LegoState {
|
||||||
// SYNTHETIC: LEGO1 0x10006290
|
// SYNTHETIC: LEGO1 0x10006290
|
||||||
// GasStationState::`scalar deleting destructor'
|
// GasStationState::`scalar deleting destructor'
|
||||||
|
|
||||||
void FUN_10006430(GarageScript::Script);
|
void PlayAction(GarageScript::Script p_objectId);
|
||||||
void FUN_10006460(GarageScript::Script);
|
void StopAction(GarageScript::Script p_objectId);
|
||||||
void FUN_10006490();
|
void StopActions();
|
||||||
|
|
||||||
// TODO: Most likely getters/setters are not used according to BETA.
|
// TODO: Most likely getters/setters are not used according to BETA.
|
||||||
|
|
||||||
undefined4 m_unk0x08[3]; // 0x08
|
GarageScript::Script m_actions[3]; // 0x08
|
||||||
Unknown0x14 m_unk0x14; // 0x14
|
Unknown0x14 m_unk0x14; // 0x14
|
||||||
MxS16 m_unk0x18; // 0x18
|
MxS16 m_pepperAction; // 0x18
|
||||||
MxS16 m_unk0x1a; // 0x1a
|
MxS16 m_mamaAction; // 0x1a
|
||||||
MxS16 m_unk0x1c; // 0x1c
|
MxS16 m_papaAction; // 0x1c
|
||||||
MxS16 m_unk0x1e; // 0x1e
|
MxS16 m_nickAction; // 0x1e
|
||||||
MxS16 m_unk0x20; // 0x20
|
MxS16 m_lauraAction; // 0x20
|
||||||
};
|
};
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d4650
|
// VTABLE: LEGO1 0x100d4650
|
||||||
|
|
|
@ -138,7 +138,7 @@ void GasStation::ReadyWorld()
|
||||||
|
|
||||||
switch (m_currentActorId) {
|
switch (m_currentActorId) {
|
||||||
case LegoActor::c_pepper:
|
case LegoActor::c_pepper:
|
||||||
switch (m_state->m_unk0x18) {
|
switch (m_state->m_pepperAction) {
|
||||||
case 0:
|
case 0:
|
||||||
m_state->m_unk0x14.m_unk0x00 = 5;
|
m_state->m_unk0x14.m_unk0x00 = 5;
|
||||||
PlayAction(GarageScript::c_wgs002nu_RunAnim);
|
PlayAction(GarageScript::c_wgs002nu_RunAnim);
|
||||||
|
@ -162,14 +162,14 @@ void GasStation::ReadyWorld()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state->m_unk0x18 < 5) {
|
if (m_state->m_pepperAction < 5) {
|
||||||
m_state->m_unk0x18++;
|
m_state->m_pepperAction++;
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
break;
|
break;
|
||||||
case LegoActor::c_mama:
|
case LegoActor::c_mama:
|
||||||
switch (m_state->m_unk0x1a) {
|
switch (m_state->m_mamaAction) {
|
||||||
case 0:
|
case 0:
|
||||||
m_state->m_unk0x14.m_unk0x00 = 5;
|
m_state->m_unk0x14.m_unk0x00 = 5;
|
||||||
PlayAction(GarageScript::c_wgs006nu_RunAnim);
|
PlayAction(GarageScript::c_wgs006nu_RunAnim);
|
||||||
|
@ -188,14 +188,14 @@ void GasStation::ReadyWorld()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state->m_unk0x1a < 5) {
|
if (m_state->m_mamaAction < 5) {
|
||||||
m_state->m_unk0x1a++;
|
m_state->m_mamaAction++;
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
break;
|
break;
|
||||||
case LegoActor::c_papa:
|
case LegoActor::c_papa:
|
||||||
switch (m_state->m_unk0x1c) {
|
switch (m_state->m_papaAction) {
|
||||||
case 0:
|
case 0:
|
||||||
m_state->m_unk0x14.m_unk0x00 = 5;
|
m_state->m_unk0x14.m_unk0x00 = 5;
|
||||||
PlayAction(GarageScript::c_wgs012nu_RunAnim);
|
PlayAction(GarageScript::c_wgs012nu_RunAnim);
|
||||||
|
@ -214,14 +214,14 @@ void GasStation::ReadyWorld()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state->m_unk0x1c < 5) {
|
if (m_state->m_papaAction < 5) {
|
||||||
m_state->m_unk0x1c++;
|
m_state->m_papaAction++;
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
break;
|
break;
|
||||||
case LegoActor::c_nick:
|
case LegoActor::c_nick:
|
||||||
switch (m_state->m_unk0x1e) {
|
switch (m_state->m_nickAction) {
|
||||||
case 0:
|
case 0:
|
||||||
m_state->m_unk0x14.m_unk0x00 = 5;
|
m_state->m_unk0x14.m_unk0x00 = 5;
|
||||||
PlayAction(GarageScript::c_wgs009nu_RunAnim);
|
PlayAction(GarageScript::c_wgs009nu_RunAnim);
|
||||||
|
@ -240,14 +240,14 @@ void GasStation::ReadyWorld()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state->m_unk0x1e < 5) {
|
if (m_state->m_nickAction < 5) {
|
||||||
m_state->m_unk0x1e++;
|
m_state->m_nickAction++;
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
break;
|
break;
|
||||||
case LegoActor::c_laura:
|
case LegoActor::c_laura:
|
||||||
switch (m_state->m_unk0x20) {
|
switch (m_state->m_lauraAction) {
|
||||||
case 0:
|
case 0:
|
||||||
m_state->m_unk0x14.m_unk0x00 = 5;
|
m_state->m_unk0x14.m_unk0x00 = 5;
|
||||||
PlayAction(GarageScript::c_wgs020nu_RunAnim);
|
PlayAction(GarageScript::c_wgs020nu_RunAnim);
|
||||||
|
@ -266,8 +266,8 @@ void GasStation::ReadyWorld()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state->m_unk0x20 < 5) {
|
if (m_state->m_lauraAction < 5) {
|
||||||
m_state->m_unk0x20++;
|
m_state->m_lauraAction++;
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||||
|
@ -288,7 +288,7 @@ inline void GasStation::PlayAction(GarageScript::Script p_objectId)
|
||||||
|
|
||||||
BackgroundAudioManager()->LowerVolume();
|
BackgroundAudioManager()->LowerVolume();
|
||||||
Start(&action);
|
Start(&action);
|
||||||
m_state->FUN_10006430(p_objectId);
|
m_state->PlayAction(p_objectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: BETA10 0x10029f00
|
// FUNCTION: BETA10 0x10029f00
|
||||||
|
@ -297,7 +297,7 @@ inline void GasStation::StopAction(GarageScript::Script p_objectId)
|
||||||
if (p_objectId != GarageScript::c_noneGarage) {
|
if (p_objectId != GarageScript::c_noneGarage) {
|
||||||
InvokeAction(Extra::e_stop, *g_garageScript, p_objectId, NULL);
|
InvokeAction(Extra::e_stop, *g_garageScript, p_objectId, NULL);
|
||||||
BackgroundAudioManager()->RaiseVolume();
|
BackgroundAudioManager()->RaiseVolume();
|
||||||
m_state->FUN_10006460(p_objectId);
|
m_state->StopAction(p_objectId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ MxLong GasStation::HandleEndAction(MxEndActionNotificationParam& p_param)
|
||||||
MxDSAction* action = p_param.GetAction();
|
MxDSAction* action = p_param.GetAction();
|
||||||
|
|
||||||
if (action->GetAtomId() == m_atomId && action->GetObjectId()) {
|
if (action->GetAtomId() == m_atomId && action->GetObjectId()) {
|
||||||
m_state->FUN_10006460((GarageScript::Script) action->GetObjectId());
|
m_state->StopAction((GarageScript::Script) action->GetObjectId());
|
||||||
m_unk0x106 = 0;
|
m_unk0x106 = 0;
|
||||||
|
|
||||||
switch (m_state->m_unk0x14.m_unk0x00) {
|
switch (m_state->m_unk0x14.m_unk0x00) {
|
||||||
|
@ -357,7 +357,7 @@ MxLong GasStation::HandleEndAction(MxEndActionNotificationParam& p_param)
|
||||||
MxLong GasStation::HandleKeyPress(MxS8 p_key)
|
MxLong GasStation::HandleKeyPress(MxS8 p_key)
|
||||||
{
|
{
|
||||||
if (p_key == VK_SPACE && g_unk0x100f0160 == 0 && m_unk0x106 != 0) {
|
if (p_key == VK_SPACE && g_unk0x100f0160 == 0 && m_unk0x106 != 0) {
|
||||||
m_state->FUN_10006490();
|
m_state->StopActions();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,6 +394,7 @@ MxLong GasStation::HandleButtonDown(LegoControlManagerNotificationParam& p_param
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10005b20
|
// FUNCTION: LEGO1 0x10005b20
|
||||||
|
// FUNCTION: BETA10 0x10029445
|
||||||
MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
|
MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
|
||||||
{
|
{
|
||||||
if (p_param.GetUnknown0x28() == 1) {
|
if (p_param.GetUnknown0x28() == 1) {
|
||||||
|
@ -405,7 +406,7 @@ MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
|
||||||
m_state->m_unk0x14.m_unk0x00 = 0;
|
m_state->m_unk0x14.m_unk0x00 = 0;
|
||||||
m_destLocation = LegoGameState::Area::e_garadoor;
|
m_destLocation = LegoGameState::Area::e_garadoor;
|
||||||
|
|
||||||
m_state->FUN_10006490();
|
m_state->StopActions();
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
BackgroundAudioManager()->Stop();
|
BackgroundAudioManager()->Stop();
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
|
@ -414,7 +415,7 @@ MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
|
||||||
m_state->m_unk0x14.m_unk0x00 = 0;
|
m_state->m_unk0x14.m_unk0x00 = 0;
|
||||||
m_destLocation = LegoGameState::Area::e_infomain;
|
m_destLocation = LegoGameState::Area::e_infomain;
|
||||||
|
|
||||||
m_state->FUN_10006490();
|
m_state->StopActions();
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
BackgroundAudioManager()->Stop();
|
BackgroundAudioManager()->Stop();
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
|
@ -423,7 +424,7 @@ MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
|
||||||
m_state->m_unk0x14.m_unk0x00 = 0;
|
m_state->m_unk0x14.m_unk0x00 = 0;
|
||||||
m_destLocation = LegoGameState::Area::e_dunecarbuild;
|
m_destLocation = LegoGameState::Area::e_dunecarbuild;
|
||||||
|
|
||||||
m_state->FUN_10006490();
|
m_state->StopActions();
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
BackgroundAudioManager()->Stop();
|
BackgroundAudioManager()->Stop();
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
|
@ -435,6 +436,7 @@ MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10005c40
|
// FUNCTION: LEGO1 0x10005c40
|
||||||
|
// FUNCTION: BETA10 0x10029551
|
||||||
void GasStation::Enable(MxBool p_enable)
|
void GasStation::Enable(MxBool p_enable)
|
||||||
{
|
{
|
||||||
LegoWorld::Enable(p_enable);
|
LegoWorld::Enable(p_enable);
|
||||||
|
@ -451,6 +453,7 @@ void GasStation::Enable(MxBool p_enable)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10005c90
|
// FUNCTION: LEGO1 0x10005c90
|
||||||
|
// FUNCTION: BETA10 0x100295c6
|
||||||
MxResult GasStation::Tickle()
|
MxResult GasStation::Tickle()
|
||||||
{
|
{
|
||||||
if (!m_worldStarted) {
|
if (!m_worldStarted) {
|
||||||
|
@ -495,64 +498,79 @@ MxResult GasStation::Tickle()
|
||||||
MxBool GasStation::Escape()
|
MxBool GasStation::Escape()
|
||||||
{
|
{
|
||||||
m_radio.Stop();
|
m_radio.Stop();
|
||||||
m_state->FUN_10006490();
|
m_state->StopActions();
|
||||||
m_state->m_unk0x14.m_unk0x00 = 0;
|
m_state->m_unk0x14.m_unk0x00 = 0;
|
||||||
m_destLocation = LegoGameState::Area::e_infomain;
|
m_destLocation = LegoGameState::Area::e_infomain;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10005eb0
|
// FUNCTION: LEGO1 0x10005eb0
|
||||||
|
// FUNCTION: BETA10 0x100296b8
|
||||||
GasStationState::GasStationState()
|
GasStationState::GasStationState()
|
||||||
{
|
{
|
||||||
m_unk0x18 = 0;
|
m_pepperAction = 0;
|
||||||
m_unk0x1a = 0;
|
m_mamaAction = 0;
|
||||||
m_unk0x1c = 0;
|
m_papaAction = 0;
|
||||||
m_unk0x1e = 0;
|
m_nickAction = 0;
|
||||||
m_unk0x20 = 0;
|
m_lauraAction = 0;
|
||||||
|
memset(m_actions, GarageScript::c_noneGarage, sizeof(m_actions));
|
||||||
undefined4* unk0x08 = m_unk0x08;
|
|
||||||
unk0x08[0] = -1;
|
|
||||||
unk0x08[1] = -1;
|
|
||||||
unk0x08[2] = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10006300
|
// FUNCTION: LEGO1 0x10006300
|
||||||
|
// FUNCTION: BETA10 0x10029754
|
||||||
MxResult GasStationState::Serialize(LegoFile* p_file)
|
MxResult GasStationState::Serialize(LegoFile* p_file)
|
||||||
{
|
{
|
||||||
LegoState::Serialize(p_file);
|
LegoState::Serialize(p_file);
|
||||||
|
|
||||||
if (p_file->IsWriteMode()) {
|
if (p_file->IsWriteMode()) {
|
||||||
Write(p_file, m_unk0x18);
|
Write(p_file, m_pepperAction);
|
||||||
Write(p_file, m_unk0x1a);
|
Write(p_file, m_mamaAction);
|
||||||
Write(p_file, m_unk0x1c);
|
Write(p_file, m_papaAction);
|
||||||
Write(p_file, m_unk0x1e);
|
Write(p_file, m_nickAction);
|
||||||
Write(p_file, m_unk0x20);
|
Write(p_file, m_lauraAction);
|
||||||
}
|
}
|
||||||
else if (p_file->IsReadMode()) {
|
else if (p_file->IsReadMode()) {
|
||||||
Read(p_file, &m_unk0x18);
|
Read(p_file, &m_pepperAction);
|
||||||
Read(p_file, &m_unk0x1a);
|
Read(p_file, &m_mamaAction);
|
||||||
Read(p_file, &m_unk0x1c);
|
Read(p_file, &m_papaAction);
|
||||||
Read(p_file, &m_unk0x1e);
|
Read(p_file, &m_nickAction);
|
||||||
Read(p_file, &m_unk0x20);
|
Read(p_file, &m_lauraAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10006430
|
// FUNCTION: LEGO1 0x10006430
|
||||||
void GasStationState::FUN_10006430(GarageScript::Script)
|
void GasStationState::PlayAction(GarageScript::Script p_objectId)
|
||||||
{
|
{
|
||||||
// TODO
|
for (MxS32 i = 0; i < (MxS32) sizeOfArray(m_actions); i++) {
|
||||||
|
if (m_actions[i] == GarageScript::c_noneGarage) {
|
||||||
|
m_actions[i] = p_objectId;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10006460
|
// FUNCTION: LEGO1 0x10006460
|
||||||
void GasStationState::FUN_10006460(GarageScript::Script)
|
void GasStationState::StopAction(GarageScript::Script p_objectId)
|
||||||
{
|
{
|
||||||
// TODO
|
for (MxS32 i = 0; i < (MxS32) sizeOfArray(m_actions); i++) {
|
||||||
|
if (m_actions[i] == p_objectId) {
|
||||||
|
m_actions[i] = GarageScript::c_noneGarage;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10006490
|
// FUNCTION: LEGO1 0x10006490
|
||||||
void GasStationState::FUN_10006490()
|
void GasStationState::StopActions()
|
||||||
{
|
{
|
||||||
// TODO
|
for (MxS32 i = 0; i < (MxS32) sizeOfArray(m_actions); i++) {
|
||||||
|
if (m_actions[i] != GarageScript::c_noneGarage) {
|
||||||
|
InvokeAction(Extra::e_stop, *g_garageScript, m_actions[i], NULL);
|
||||||
|
m_actions[i] = GarageScript::c_noneGarage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BackgroundAudioManager()->RaiseVolume();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue