2023-06-29 04:10:08 -04:00
|
|
|
#include "pizzeria.h"
|
2024-01-20 18:04:46 -05:00
|
|
|
|
2024-05-30 09:54:24 -04:00
|
|
|
#include "isle_actions.h"
|
|
|
|
#include "islepathactor.h"
|
|
|
|
#include "legoanimationmanager.h"
|
2024-04-27 10:06:12 -04:00
|
|
|
#include "legogamestate.h"
|
2024-05-30 09:54:24 -04:00
|
|
|
#include "legopathactor.h"
|
|
|
|
#include "legoutils.h"
|
|
|
|
#include "legoworld.h"
|
2024-04-27 10:06:12 -04:00
|
|
|
#include "misc.h"
|
2024-05-30 09:54:24 -04:00
|
|
|
#include "pizza.h"
|
|
|
|
#include "scripts.h"
|
2024-04-27 10:06:12 -04:00
|
|
|
|
2024-03-22 21:30:58 -04:00
|
|
|
DECOMP_SIZE_ASSERT(Pizzeria, 0x84)
|
2024-06-03 12:53:25 -04:00
|
|
|
DECOMP_SIZE_ASSERT(PizzeriaState, 0x58)
|
|
|
|
DECOMP_SIZE_ASSERT(PizzeriaState::StateStruct, 0x14)
|
2024-03-22 21:30:58 -04:00
|
|
|
|
2024-04-27 10:06:12 -04:00
|
|
|
// FUNCTION: LEGO1 0x100179c0
|
2024-01-20 18:04:46 -05:00
|
|
|
MxResult Pizzeria::Create(MxDSAction& p_dsAction)
|
|
|
|
{
|
2024-04-27 10:06:12 -04:00
|
|
|
MxResult result = IsleActor::Create(p_dsAction);
|
|
|
|
|
|
|
|
if (result == SUCCESS) {
|
2024-05-24 14:07:36 -04:00
|
|
|
CreateState();
|
2024-04-27 10:06:12 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FUNCTION: LEGO1 0x100179f0
|
2024-05-24 14:07:36 -04:00
|
|
|
void Pizzeria::CreateState()
|
2024-04-27 10:06:12 -04:00
|
|
|
{
|
|
|
|
LegoGameState* gameState = GameState();
|
|
|
|
PizzeriaState* pizzeriaState = (PizzeriaState*) gameState->GetState("PizzeriaState");
|
|
|
|
if (pizzeriaState == NULL) {
|
|
|
|
pizzeriaState = (PizzeriaState*) gameState->CreateState("PizzeriaState");
|
|
|
|
}
|
|
|
|
m_pizzeriaState = pizzeriaState;
|
|
|
|
|
|
|
|
gameState = GameState();
|
|
|
|
PizzaMissionState* pizzaMissionState = (PizzaMissionState*) gameState->GetState("PizzaMissionState");
|
|
|
|
if (pizzaMissionState == NULL) {
|
|
|
|
pizzaMissionState = (PizzaMissionState*) gameState->CreateState("PizzaMissionState");
|
|
|
|
}
|
|
|
|
m_pizzaMissionState = pizzaMissionState;
|
2024-01-20 18:04:46 -05:00
|
|
|
}
|
2024-04-11 07:55:22 -04:00
|
|
|
|
2024-05-30 09:54:24 -04:00
|
|
|
// FUNCTION: LEGO1 0x10017a50
|
|
|
|
undefined4 Pizzeria::HandleClick()
|
2024-04-11 07:55:22 -04:00
|
|
|
{
|
2024-05-30 09:54:24 -04:00
|
|
|
if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) {
|
2024-06-12 09:13:52 -04:00
|
|
|
if (UserActor()->GetActorId() != GameState()->GetActorId()) {
|
|
|
|
if (!UserActor()->IsA("SkateBoard")) {
|
|
|
|
((IslePathActor*) UserActor())->Exit();
|
2024-05-30 09:54:24 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
AnimationManager()->FUN_10061010(FALSE);
|
|
|
|
|
|
|
|
Pizza* pizza = (Pizza*) CurrentWorld()->Find(*g_isleScript, IsleScript::c_Pizza_Actor);
|
|
|
|
pizza->FUN_10038220(m_pizzeriaState->FUN_10017d70());
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1;
|
2024-04-11 07:55:22 -04:00
|
|
|
}
|
2024-06-03 12:53:25 -04:00
|
|
|
|
|
|
|
// STUB: LEGO1 0x10017af0
|
|
|
|
PizzeriaState::PizzeriaState()
|
|
|
|
{
|
|
|
|
// TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
// STUB: LEGO1 0x10017d70
|
|
|
|
MxU32 PizzeriaState::FUN_10017d70()
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2024-06-14 17:24:34 -04:00
|
|
|
// FUNCTION: LEGO1 0x10017da0
|
|
|
|
// FUNCTION: BETA10 0x100efe33
|
|
|
|
MxResult PizzeriaState::Serialize(LegoFile* p_file)
|
2024-06-03 12:53:25 -04:00
|
|
|
{
|
2024-06-14 17:24:34 -04:00
|
|
|
MxResult res = LegoState::Serialize(p_file);
|
|
|
|
|
|
|
|
if (p_file->IsReadMode()) {
|
|
|
|
for (MxS16 i = 0; i < 5; i++) {
|
|
|
|
m_unk0x08[i].ReadFromFile(p_file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
for (MxS16 i = 0; i < 5; i++) {
|
|
|
|
m_unk0x08[i].WriteToFile(p_file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return res;
|
2024-06-03 12:53:25 -04:00
|
|
|
}
|