Implement/match Pizza::FUN_10038220 (#1107)

This commit is contained in:
Christian Semmler 2024-10-03 12:43:18 -07:00 committed by GitHub
parent 4878727393
commit fa6de9cb6b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 12 deletions

View file

@ -38,8 +38,7 @@ class PizzaMissionState : public LegoState {
undefined m_unk0x03[3]; // 0x03 undefined m_unk0x03[3]; // 0x03
MxS16 m_unk0x06; // 0x06 MxS16 m_unk0x06; // 0x06
undefined m_unk0x08[8]; // 0x08 undefined m_unk0x08[8]; // 0x08
MxS16 m_unk0x10; // 0x10 undefined4 m_unk0x10; // 0x10
MxS16 m_unk0x12; // 0x12
MxS16 m_unk0x14; // 0x14 MxS16 m_unk0x14; // 0x14
MxS16 m_unk0x16; // 0x16 MxS16 m_unk0x16; // 0x16
MxS16 m_score; // 0x18 MxS16 m_score; // 0x18
@ -107,6 +106,7 @@ class Pizza : public IsleActor {
void FUN_10038220(MxU32 p_objectId); void FUN_10038220(MxU32 p_objectId);
void FUN_100382b0(); void FUN_100382b0();
void FUN_10038380(); void FUN_10038380();
void FUN_10038fe0(MxU32 p_objectId, MxBool);
void SetSkateboard(SkateBoard* p_skateboard) { m_skateboard = p_skateboard; } void SetSkateboard(SkateBoard* p_skateboard) { m_skateboard = p_skateboard; }
@ -115,7 +115,7 @@ class Pizza : public IsleActor {
private: private:
PizzaMissionState* m_state; // 0x7c PizzaMissionState* m_state; // 0x7c
undefined4 m_unk0x80; // 0x80 PizzaMissionState::Entry* m_entry; // 0x80
SkateBoard* m_skateboard; // 0x84 SkateBoard* m_skateboard; // 0x84
Act1State* m_act1state; // 0x88 Act1State* m_act1state; // 0x88
undefined4 m_unk0x8c; // 0x8c undefined4 m_unk0x8c; // 0x8c

View file

@ -1,6 +1,8 @@
#include "pizza.h" #include "pizza.h"
#include "isle.h"
#include "isle_actions.h" #include "isle_actions.h"
#include "legoanimationmanager.h"
#include "legogamestate.h" #include "legogamestate.h"
#include "legoworld.h" #include "legoworld.h"
#include "misc.h" #include "misc.h"
@ -11,11 +13,14 @@ DECOMP_SIZE_ASSERT(Pizza, 0x9c)
DECOMP_SIZE_ASSERT(PizzaMissionState, 0xb4) DECOMP_SIZE_ASSERT(PizzaMissionState, 0xb4)
DECOMP_SIZE_ASSERT(PizzaMissionState::Entry, 0x20) DECOMP_SIZE_ASSERT(PizzaMissionState::Entry, 0x20)
// Flags used in isle.cpp
extern MxU32 g_isleFlags;
// FUNCTION: LEGO1 0x10037ef0 // FUNCTION: LEGO1 0x10037ef0
Pizza::Pizza() Pizza::Pizza()
{ {
m_state = NULL; m_state = NULL;
m_unk0x80 = 0; m_entry = NULL;
m_skateboard = NULL; m_skateboard = NULL;
m_act1state = NULL; m_act1state = NULL;
m_unk0x8c = -1; m_unk0x8c = -1;
@ -56,9 +61,19 @@ void Pizza::CreateState()
} }
} }
// STUB: LEGO1 0x10038220 // FUNCTION: LEGO1 0x10038220
void Pizza::FUN_10038220(MxU32 p_objectId) void Pizza::FUN_10038220(MxU32 p_objectId)
{ {
AnimationManager()->FUN_10064740(NULL);
m_entry = m_state->GetState(GameState()->GetActorId());
m_state->m_unk0x0c = 1;
m_act1state->m_unk0x018 = 3;
m_entry->m_unk0x10 = 0x80000000;
g_isleFlags &= ~Isle::c_playMusic;
AnimationManager()->EnableCamAnims(FALSE);
AnimationManager()->FUN_1005f6d0(FALSE);
FUN_10038fe0(p_objectId, FALSE);
m_unk0x8c = -1;
} }
// STUB: LEGO1 0x100382b0 // STUB: LEGO1 0x100382b0
@ -99,6 +114,12 @@ MxLong Pizza::HandleEndAction(MxEndActionNotificationParam&)
return 0; return 0;
} }
// STUB: LEGO1 0x10038fe0
void Pizza::FUN_10038fe0(MxU32 p_objectId, MxBool)
{
// TODO
}
// STUB: LEGO1 0x10039030 // STUB: LEGO1 0x10039030
PizzaMissionState::PizzaMissionState() PizzaMissionState::PizzaMissionState()
{ {