mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-26 01:44:19 +00:00
Implement/match Pizza::FUN_100382b0 and Pizza::StopActions (#1118)
This commit is contained in:
committed by
GitHub
parent
0cb753e523
commit
2b9d8f1fba
@@ -4,14 +4,17 @@
|
||||
#include "isle_actions.h"
|
||||
#include "legoanimationmanager.h"
|
||||
#include "legogamestate.h"
|
||||
#include "legoutils.h"
|
||||
#include "legoworld.h"
|
||||
#include "misc.h"
|
||||
#include "mxbackgroundaudiomanager.h"
|
||||
#include "mxmisc.h"
|
||||
#include "mxticklemanager.h"
|
||||
#include "skateboard.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Pizza, 0x9c)
|
||||
DECOMP_SIZE_ASSERT(PizzaMissionState, 0xb4)
|
||||
DECOMP_SIZE_ASSERT(PizzaMissionState::Entry, 0x20)
|
||||
DECOMP_SIZE_ASSERT(PizzaMissionState::Mission, 0x20)
|
||||
|
||||
// Flags used in isle.cpp
|
||||
extern MxU32 g_isleFlags;
|
||||
@@ -20,12 +23,12 @@ extern MxU32 g_isleFlags;
|
||||
Pizza::Pizza()
|
||||
{
|
||||
m_state = NULL;
|
||||
m_entry = NULL;
|
||||
m_skateboard = NULL;
|
||||
m_mission = NULL;
|
||||
m_skateBoard = NULL;
|
||||
m_act1state = NULL;
|
||||
m_unk0x8c = -1;
|
||||
m_unk0x98 = 0;
|
||||
m_unk0x90 = 0x80000000;
|
||||
m_unk0x90 = INT_MIN;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10038100
|
||||
@@ -41,13 +44,14 @@ MxResult Pizza::Create(MxDSAction& p_dsAction)
|
||||
|
||||
if (result == SUCCESS) {
|
||||
CreateState();
|
||||
m_skateboard = (SkateBoard*) m_world->Find(m_atomId, IsleScript::c_SkateBoard_Actor);
|
||||
m_skateBoard = (SkateBoard*) m_world->Find(m_atomId, IsleScript::c_SkateBoard_Actor);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100381b0
|
||||
// FUNCTION: BETA10 0x100edaec
|
||||
void Pizza::CreateState()
|
||||
{
|
||||
m_state = (PizzaMissionState*) GameState()->GetState("PizzaMissionState");
|
||||
@@ -62,13 +66,14 @@ void Pizza::CreateState()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10038220
|
||||
// FUNCTION: BETA10 0x100edb81
|
||||
void Pizza::FUN_10038220(MxU32 p_objectId)
|
||||
{
|
||||
AnimationManager()->FUN_10064740(NULL);
|
||||
m_entry = m_state->GetState(GameState()->GetActorId());
|
||||
m_mission = m_state->GetState(GameState()->GetActorId());
|
||||
m_state->m_unk0x0c = 1;
|
||||
m_act1state->m_unk0x018 = 3;
|
||||
m_entry->m_unk0x10 = 0x80000000;
|
||||
m_mission->m_startTime = INT_MIN;
|
||||
g_isleFlags &= ~Isle::c_playMusic;
|
||||
AnimationManager()->EnableCamAnims(FALSE);
|
||||
AnimationManager()->FUN_1005f6d0(FALSE);
|
||||
@@ -76,14 +81,44 @@ void Pizza::FUN_10038220(MxU32 p_objectId)
|
||||
m_unk0x8c = -1;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100382b0
|
||||
// FUNCTION: LEGO1 0x100382b0
|
||||
void Pizza::FUN_100382b0()
|
||||
{
|
||||
if (m_state->m_unk0x0c != 8) {
|
||||
if (m_unk0x8c != -1) {
|
||||
InvokeAction(Extra::e_stop, *g_isleScript, m_unk0x8c, NULL);
|
||||
}
|
||||
|
||||
m_act1state->m_unk0x018 = 0;
|
||||
m_state->m_unk0x0c = 0;
|
||||
UserActor()->SetState(0);
|
||||
g_isleFlags |= Isle::c_playMusic;
|
||||
AnimationManager()->EnableCamAnims(TRUE);
|
||||
AnimationManager()->FUN_1005f6d0(TRUE);
|
||||
m_mission->m_startTime = INT_MIN;
|
||||
m_mission = NULL;
|
||||
m_unk0x98 = 0;
|
||||
m_unk0x8c = -1;
|
||||
BackgroundAudioManager()->RaiseVolume();
|
||||
TickleManager()->UnregisterClient(this);
|
||||
m_unk0x90 = INT_MIN;
|
||||
m_skateBoard->EnableScenePresentation(FALSE);
|
||||
m_skateBoard->SetUnknown0x160(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10038380
|
||||
void Pizza::FUN_10038380()
|
||||
// FUNCTION: LEGO1 0x10038380
|
||||
void Pizza::StopActions()
|
||||
{
|
||||
InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_pns050p1_RunAnim, NULL);
|
||||
InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_wns050p1_RunAnim, NULL);
|
||||
|
||||
PizzaMissionState::Mission* mission = m_mission;
|
||||
if (mission != NULL) {
|
||||
for (MxS32 i = 0; i < mission->m_numActions; i++) {
|
||||
InvokeAction(Extra::e_stop, *g_isleScript, mission->m_actions[i], NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100383f0
|
||||
@@ -146,7 +181,7 @@ MxResult PizzaMissionState::Serialize(LegoFile* p_file)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10039510
|
||||
PizzaMissionState::Entry* PizzaMissionState::GetState(MxU8 p_id)
|
||||
PizzaMissionState::Mission* PizzaMissionState::GetState(MxU8 p_id)
|
||||
{
|
||||
for (MxS16 i = 0; i < 5; i++) {
|
||||
if (m_state[i].m_id == p_id) {
|
||||
|
||||
Reference in New Issue
Block a user