Implement/match actor Create functions (#949)

This commit is contained in:
Christian Semmler
2024-05-24 14:44:09 -04:00
committed by GitHub
parent 63719ef689
commit e59d684f37
11 changed files with 55 additions and 23 deletions

View File

@@ -58,7 +58,7 @@ MxResult Ambulance::Create(MxDSAction& p_dsAction)
m_state = (AmbulanceMissionState*) GameState()->GetState("AmbulanceMissionState");
if (!m_state) {
m_state = new AmbulanceMissionState();
m_state->SetUnknown0x08(0);
m_state->m_unk0x08 = 0;
GameState()->RegisterState(m_state);
}
}

View File

@@ -40,15 +40,16 @@ Helicopter::~Helicopter()
MxResult Helicopter::Create(MxDSAction& p_dsAction)
{
MxResult result = IslePathActor::Create(p_dsAction);
LegoWorld* world = CurrentWorld();
SetWorld(world);
if (world->IsA("Act3")) {
((Act3*) GetWorld())->SetUnknown420c(this);
m_world = CurrentWorld();
if (m_world->IsA("Act3")) {
((Act3*) m_world)->SetUnknown420c(this);
}
world = GetWorld();
if (world) {
world->Add(this);
if (m_world != NULL) {
m_world->Add(this);
}
CreateState();
return result;
}

View File

@@ -1,7 +1,9 @@
#include "pizza.h"
#include "act1state.h"
#include "isle_actions.h"
#include "legogamestate.h"
#include "legoworld.h"
#include "misc.h"
#include "mxmisc.h"
#include "mxticklemanager.h"
@@ -27,11 +29,17 @@ Pizza::~Pizza()
TickleManager()->UnregisterClient(this);
}
// STUB: LEGO1 0x10038170
// FUNCTION: LEGO1 0x10038170
MxResult Pizza::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
MxResult result = IsleActor::Create(p_dsAction);
if (result == SUCCESS) {
CreateState();
m_skateboard = (SkateBoard*) m_world->Find(m_atom, IsleScript::c_SkateBoard_Actor);
}
return result;
}
// FUNCTION: LEGO1 0x100381b0

View File

@@ -1,7 +1,12 @@
#include "towtrack.h"
#include "legogamestate.h"
#include "legovariables.h"
#include "legoworld.h"
#include "misc.h"
#include "mxmisc.h"
#include "mxtimer.h"
#include "mxvariabletable.h"
#include "towtrackmissionstate.h"
DECOMP_SIZE_ASSERT(TowTrack, 0x180)
@@ -20,11 +25,31 @@ TowTrack::TowTrack()
m_unk0x178 = 1.0;
}
// STUB: LEGO1 0x1004c9e0
// FUNCTION: LEGO1 0x1004c9e0
// FUNCTION: BETA10 0x100f6bf1
MxResult TowTrack::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
MxResult result = IslePathActor::Create(p_dsAction);
if (result == SUCCESS) {
m_world = CurrentWorld();
if (m_world) {
m_world->Add(this);
}
m_state = (TowTrackMissionState*) GameState()->GetState("TowTrackMissionState");
if (!m_state) {
m_state = new TowTrackMissionState();
m_state->m_unk0x08 = 0;
GameState()->RegisterState(m_state);
}
}
VariableTable()->SetVariable(g_varTOWFUEL, "1.0");
m_unk0x178 = 1.0;
m_time = Timer()->GetTime();
return result;
}
// STUB: LEGO1 0x1004cb10

View File

@@ -20,6 +20,10 @@ DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24)
// STRING: LEGO1 0x100f39a0
const char* g_varAMBULFUEL = "ambulFUEL";
// GLOBAL: LEGO1 0x100f43b4
// STRING: LEGO1 0x100f439c
const char* g_varTOWFUEL = "towFUEL";
// GLOBAL: LEGO1 0x100f3a40
// STRING: LEGO1 0x100f3808
const char* g_varVISIBILITY = "VISIBILITY";