This commit is contained in:
Christian Semmler 2024-12-08 11:19:55 -07:00
parent a91eebeaa4
commit aa69da7754
7 changed files with 50 additions and 40 deletions

View File

@ -23,8 +23,9 @@ class Act3Actor : public LegoAnimActor {
MxU32 VTable0x90(float p_time, Matrix4& p_transform) override; // vtable+0x90
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
// This inline function is speculation; it might have been structured differently.
void AddToUnknown0x1c(MxFloat p_delta) { m_unk0x1c += p_delta; }
MxFloat GetUnknown0x1c() { return m_unk0x1c; }
void SetUnknown0x1c(MxFloat p_unk0x1c) { m_unk0x1c = p_unk0x1c; }
// SYNTHETIC: LEGO1 0x10043330
// Act3Actor::`scalar deleting destructor'

View File

@ -18,10 +18,10 @@ class Act3Ammo : public LegoPathActor {
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
void VTable0x70(float p_time) override; // vtable+0x70
MxBool TestBit4() { return m_flags & c_bit4; }
MxU16 GetFlags() { return m_flags; }
MxFloat GetUnknown0x158() { return m_unk0x158; }
// This inline function is speculation; it might have been structured differently.
void AddToUnknown0x158(MxFloat p_delta) { m_unk0x158 += p_delta; }
void SetUnknown0x158(MxFloat p_unk0x158) { m_unk0x158 = p_unk0x158; }
// SYNTHETIC: LEGO1 0x10053880
// Act3Ammo::`scalar deleting destructor'

View File

@ -21,10 +21,13 @@ class Act3Brickster : public Act3Actor {
) override; // vtable+0x98
MxResult VTable0x9c() override; // vtable+0x9c
// These inline functions are speculation; it might have been structured differently.
void AddToUnknown0x20(MxFloat p_delta) { m_unk0x20 += p_delta; }
void AddToUnknown0x24(MxFloat p_delta) { m_unk0x24 += p_delta; }
void AddToUnknown0x50(MxFloat p_delta) { m_unk0x50 += p_delta; }
MxFloat GetUnknown0x20() { return m_unk0x20; }
MxFloat GetUnknown0x24() { return m_unk0x24; }
MxFloat GetUnknown0x50() { return m_unk0x50; }
void SetUnknown0x20(MxFloat p_unk0x20) { m_unk0x20 = p_unk0x20; }
void SetUnknown0x24(MxFloat p_unk0x24) { m_unk0x24 = p_unk0x24; }
void SetUnknown0x50(MxFloat p_unk0x50) { m_unk0x50 = p_unk0x50; }
// SYNTHETIC: LEGO1 0x10043250
// Act3Brickster::`scalar deleting destructor'

View File

@ -15,8 +15,9 @@ class Act3Cop : public Act3Actor {
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
// This inline function is speculation; it might have been structured differently.
void AddToUnknown0x20(MxFloat p_delta) { m_unk0x20 += p_delta; }
MxFloat GetUnknown0x20() { return m_unk0x20; }
void SetUnknown0x20(MxFloat p_unk0x20) { m_unk0x20 = p_unk0x20; }
// SYNTHETIC: LEGO1 0x10043120
// Act3Cop::`scalar deleting destructor'

View File

@ -23,8 +23,9 @@ class Act3Shark : public LegoAnimActor {
// LegoAnimActor vtable
virtual MxResult FUN_10042ce0(void*); // vtable+0x10
// This inline function is speculation; it might have been structured differently.
void AddToUnknown0x2c(MxFloat p_delta) { m_unk0x2c += p_delta; }
MxFloat GetUnknown0x2c() { return m_unk0x2c; }
void SetUnknown0x2c(MxFloat p_unk0x2c) { m_unk0x2c = p_unk0x2c; }
// SYNTHETIC: LEGO1 0x10043030
// Act3Shark::`scalar deleting destructor'

View File

@ -137,6 +137,8 @@ class LegoPathActor : public LegoActor {
LegoPathController* GetController() { return m_controller; }
MxBool GetCollideBox() { return m_collideBox; }
MxFloat GetLastTime() { return m_lastTime; }
MxFloat GetActorTime() { return m_actorTime; }
void SetBoundary(LegoPathBoundary* p_boundary) { m_boundary = p_boundary; }
@ -144,13 +146,8 @@ class LegoPathActor : public LegoActor {
void SetState(MxU32 p_state) { m_state = p_state; }
void SetController(LegoPathController* p_controller) { m_controller = p_controller; }
// This inline function is speculation; it might have been structured differently.
void ApplyTimeDelta(MxFloat p_delta)
{
m_lastTime += p_delta;
m_actorTime += p_delta;
}
void SetLastTime(MxFloat p_lastTime) { m_lastTime = p_lastTime; }
void SetActorTime(MxFloat p_actorTime) { m_actorTime = p_actorTime; }
void UpdatePlane(LegoNamedPlane& p_namedPlane);
void PlaceActor(LegoNamedPlane& p_namedPlane);

View File

@ -232,37 +232,44 @@ void Act3::Enable(MxBool p_enable)
MxFloat delta = Timer()->GetTime() - m_time - 100.0f;
m_time = -1.0f;
m_cop1->ApplyTimeDelta(delta);
m_cop1->AddToUnknown0x20(delta);
m_cop1->AddToUnknown0x1c(delta);
m_cop1->SetLastTime(m_cop1->GetLastTime() + delta);
m_cop1->SetActorTime(m_cop1->GetActorTime() + delta);
m_cop1->SetUnknown0x20(m_cop1->GetUnknown0x20() + delta);
m_cop1->SetUnknown0x1c(m_cop1->GetUnknown0x1c() + delta);
m_cop2->ApplyTimeDelta(delta);
m_cop2->AddToUnknown0x20(delta);
m_cop2->AddToUnknown0x1c(delta);
m_cop2->SetLastTime(m_cop2->GetLastTime() + delta);
m_cop2->SetActorTime(m_cop2->GetActorTime() + delta);
m_cop2->SetUnknown0x20(m_cop2->GetUnknown0x20() + delta);
m_cop2->SetUnknown0x1c(m_cop2->GetUnknown0x1c() + delta);
m_brickster->ApplyTimeDelta(delta);
m_brickster->AddToUnknown0x20(delta);
m_brickster->AddToUnknown0x24(delta);
m_brickster->AddToUnknown0x50(delta);
m_brickster->AddToUnknown0x1c(delta);
m_brickster->SetLastTime(m_brickster->GetLastTime() + delta);
m_brickster->SetActorTime(m_brickster->GetActorTime() + delta);
m_brickster->SetUnknown0x20(m_brickster->GetUnknown0x20() + delta);
m_brickster->SetUnknown0x24(m_brickster->GetUnknown0x24() + delta);
m_brickster->SetUnknown0x50(m_brickster->GetUnknown0x50() + delta);
m_brickster->SetUnknown0x1c(m_brickster->GetUnknown0x1c() + delta);
m_copter->ApplyTimeDelta(delta);
m_copter->SetLastTime(m_copter->GetLastTime() + delta);
m_copter->SetActorTime(m_copter->GetActorTime() + delta);
m_shark->ApplyTimeDelta(delta);
m_shark->AddToUnknown0x2c(delta);
m_shark->SetLastTime(m_shark->GetLastTime() + delta);
m_shark->SetActorTime(m_shark->GetActorTime() + delta);
m_shark->SetUnknown0x2c(m_shark->GetUnknown0x2c() + delta);
MxS32 i;
for (i = 0; i < (MxS32) sizeOfArray(m_pizzas); i++) {
if (m_pizzas[i].TestBit4()) {
m_pizzas[i].ApplyTimeDelta(delta);
m_pizzas[i].AddToUnknown0x158(delta);
if (m_pizzas[i].GetFlags() & Act3Ammo::c_bit4) {
m_pizzas[i].SetLastTime(m_pizzas[i].GetLastTime() + delta);
m_pizzas[i].SetActorTime(m_pizzas[i].GetActorTime() + delta);
m_pizzas[i].SetUnknown0x158(m_pizzas[i].GetUnknown0x158() + delta);
}
}
for (i = 0; i < (MxS32) sizeOfArray(m_donuts); i++) {
if (m_donuts[i].TestBit4()) {
m_donuts[i].ApplyTimeDelta(delta);
m_donuts[i].AddToUnknown0x158(delta);
if (m_donuts[i].GetFlags() & Act3Ammo::c_bit4) {
m_donuts[i].SetLastTime(m_donuts[i].GetLastTime() + delta);
m_donuts[i].SetActorTime(m_donuts[i].GetActorTime() + delta);
m_donuts[i].SetUnknown0x158(m_donuts[i].GetUnknown0x158() + delta);
}
}