diff --git a/LEGO1/lego/legoomni/include/ambulance.h b/LEGO1/lego/legoomni/include/ambulance.h index 1a92eb78..a22c0515 100644 --- a/LEGO1/lego/legoomni/include/ambulance.h +++ b/LEGO1/lego/legoomni/include/ambulance.h @@ -89,7 +89,7 @@ public: MxU32 HandleClick() override; // vtable+0xcc MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 void CreateState(); void FUN_10036e60(); diff --git a/LEGO1/lego/legoomni/include/bike.h b/LEGO1/lego/legoomni/include/bike.h index a71747ad..b042bee6 100644 --- a/LEGO1/lego/legoomni/include/bike.h +++ b/LEGO1/lego/legoomni/include/bike.h @@ -26,7 +26,7 @@ public: MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxU32 HandleClick() override; // vtable+0xcc MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 void FUN_10076b60(); diff --git a/LEGO1/lego/legoomni/include/dunebuggy.h b/LEGO1/lego/legoomni/include/dunebuggy.h index 6abe2881..287417d6 100644 --- a/LEGO1/lego/legoomni/include/dunebuggy.h +++ b/LEGO1/lego/legoomni/include/dunebuggy.h @@ -28,7 +28,7 @@ public: MxU32 HandleClick() override; // vtable+0xcc MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 void FUN_10068350(); diff --git a/LEGO1/lego/legoomni/include/helicopter.h b/LEGO1/lego/legoomni/include/helicopter.h index dd9451c0..1617d6b5 100644 --- a/LEGO1/lego/legoomni/include/helicopter.h +++ b/LEGO1/lego/legoomni/include/helicopter.h @@ -69,7 +69,7 @@ public: MxU32 HandleClick() override; // vtable+0xcc MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8 - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 // SYNTHETIC: LEGO1 0x10003210 // Helicopter::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/islepathactor.h b/LEGO1/lego/legoomni/include/islepathactor.h index 758039ff..4150db87 100644 --- a/LEGO1/lego/legoomni/include/islepathactor.h +++ b/LEGO1/lego/legoomni/include/islepathactor.h @@ -4,6 +4,7 @@ #include "legogamestate.h" #include "legopathactor.h" #include "mxtypes.h" +#include "roi/legoroi.h" class LegoControlManagerEvent; class LegoEndAnimNotificationParam; @@ -120,8 +121,8 @@ public: // FUNCTION: LEGO1 0x10002e00 virtual MxU32 VTable0xdc(MxType19NotificationParam&) { return 0; } // vtable+0xdc - virtual void VTable0xe0(); // vtable+0xe0 - virtual void VTable0xe4(); // vtable+0xe4 + virtual void Enter(); // vtable+0xe0 + virtual void Exit(); // vtable+0xe4 virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p_flags); // vtable+0xe8 virtual void VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset); // vtable+0xec @@ -130,12 +131,18 @@ public: void FUN_1001b660(); + void Reset() + { + m_roi->SetVisibility(TRUE); + SetState(0); + } + static void RegisterSpawnLocations(); protected: - LegoWorld* m_world; // 0x154 - LegoPathActor* m_unk0x158; // 0x158 - MxFloat m_unk0x15c; // 0x15c + LegoWorld* m_world; // 0x154 + LegoPathActor* m_previousActor; // 0x158 + MxFloat m_previousVel; // 0x15c }; #endif // ISLEPATHACTOR_H diff --git a/LEGO1/lego/legoomni/include/jetski.h b/LEGO1/lego/legoomni/include/jetski.h index 773513f9..3eb972a6 100644 --- a/LEGO1/lego/legoomni/include/jetski.h +++ b/LEGO1/lego/legoomni/include/jetski.h @@ -29,7 +29,7 @@ public: void VTable0x70(float p_float) override; // vtable+0x70 MxU32 HandleClick() override; // vtable+0xcc MxU32 HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4 - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 void FUN_1007e990(); diff --git a/LEGO1/lego/legoomni/include/motocycle.h b/LEGO1/lego/legoomni/include/motocycle.h index e23e87ad..1e7599af 100644 --- a/LEGO1/lego/legoomni/include/motocycle.h +++ b/LEGO1/lego/legoomni/include/motocycle.h @@ -28,7 +28,7 @@ public: MxU32 HandleClick() override; // vtable+0xcc MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 void FUN_10035e10(); diff --git a/LEGO1/lego/legoomni/include/skateboard.h b/LEGO1/lego/legoomni/include/skateboard.h index 26007aed..4e8d17fd 100644 --- a/LEGO1/lego/legoomni/include/skateboard.h +++ b/LEGO1/lego/legoomni/include/skateboard.h @@ -30,7 +30,7 @@ public: MxU32 HandleClick() override; // vtable+0xcc MxU32 VTable0xd0() override; // vtable+0xd0 MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 inline void SetUnknown0x160(MxBool p_unk0x160) { m_unk0x160 = p_unk0x160; } diff --git a/LEGO1/lego/legoomni/include/towtrack.h b/LEGO1/lego/legoomni/include/towtrack.h index a8738cbf..921ccbca 100644 --- a/LEGO1/lego/legoomni/include/towtrack.h +++ b/LEGO1/lego/legoomni/include/towtrack.h @@ -88,7 +88,7 @@ public: MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8 MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc - void VTable0xe4() override; // vtable+0xe4 + void Exit() override; // vtable+0xe4 void CreateState(); void FUN_1004dab0(); diff --git a/LEGO1/lego/legoomni/src/actors/ambulance.cpp b/LEGO1/lego/legoomni/src/actors/ambulance.cpp index 1a15d7c8..3a16bea0 100644 --- a/LEGO1/lego/legoomni/src/actors/ambulance.cpp +++ b/LEGO1/lego/legoomni/src/actors/ambulance.cpp @@ -116,7 +116,7 @@ void Ambulance::FUN_10036e60() } // STUB: LEGO1 0x10036e90 -void Ambulance::VTable0xe4() +void Ambulance::Exit() { // TODO } diff --git a/LEGO1/lego/legoomni/src/actors/bike.cpp b/LEGO1/lego/legoomni/src/actors/bike.cpp index 20b6e904..f92125a2 100644 --- a/LEGO1/lego/legoomni/src/actors/bike.cpp +++ b/LEGO1/lego/legoomni/src/actors/bike.cpp @@ -32,9 +32,9 @@ MxResult Bike::Create(MxDSAction& p_dsAction) } // FUNCTION: LEGO1 0x10076920 -void Bike::VTable0xe4() +void Bike::Exit() { - IslePathActor::VTable0xe4(); + IslePathActor::Exit(); GameState()->SetCurrentArea(LegoGameState::Area::e_bike); RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_BikeDashboard_Bitmap); RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_BikeArms_Ctl); diff --git a/LEGO1/lego/legoomni/src/actors/buildings.cpp b/LEGO1/lego/legoomni/src/actors/buildings.cpp index 9c3c174b..2d896957 100644 --- a/LEGO1/lego/legoomni/src/actors/buildings.cpp +++ b/LEGO1/lego/legoomni/src/actors/buildings.cpp @@ -29,7 +29,7 @@ MxLong InfoCenterEntity::VTable0x50(MxParam& p_param) switch (GameState()->GetCurrentAct()) { case LegoGameState::Act::e_act1: { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle); @@ -71,7 +71,7 @@ MxLong GasStationEntity::VTable0x50(MxParam& p_param) state->SetUnknown18(0); if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle); @@ -95,7 +95,7 @@ MxLong HospitalEntity::VTable0x50(MxParam& p_param) act1State->SetUnknown18(0); if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle); @@ -119,7 +119,7 @@ MxLong PoliceEntity::VTable0x50(MxParam& p_param) state->SetUnknown18(0); if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle); @@ -141,7 +141,7 @@ MxLong BeachHouseEntity::VTable0x50(MxParam& p_param) state->SetUnknown18(0); if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle); @@ -162,7 +162,7 @@ MxLong RaceStandsEntity::VTable0x50(MxParam& p_param) state->SetUnknown18(0); if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle); diff --git a/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp b/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp index 30923948..b6da3892 100644 --- a/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp +++ b/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp @@ -25,7 +25,7 @@ void DuneBuggy::VTable0x70(float p_float) } // STUB: LEGO1 0x10067fa0 -void DuneBuggy::VTable0xe4() +void DuneBuggy::Exit() { // TODO } diff --git a/LEGO1/lego/legoomni/src/actors/helicopter.cpp b/LEGO1/lego/legoomni/src/actors/helicopter.cpp index 1b765b2b..fe77c926 100644 --- a/LEGO1/lego/legoomni/src/actors/helicopter.cpp +++ b/LEGO1/lego/legoomni/src/actors/helicopter.cpp @@ -63,7 +63,7 @@ void Helicopter::CreateState() } // FUNCTION: LEGO1 0x10003360 -void Helicopter::VTable0xe4() +void Helicopter::Exit() { if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { SpawnPlayer( @@ -73,7 +73,7 @@ void Helicopter::VTable0xe4() ); } - IslePathActor::VTable0xe4(); + IslePathActor::Exit(); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { GameState()->SetCurrentArea(LegoGameState::e_copter); @@ -117,7 +117,7 @@ MxU32 Helicopter::HandleClick() if (CurrentActor()) { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } } @@ -144,7 +144,7 @@ MxU32 Helicopter::HandleClick() break; } - VTable0xe0(); + Enter(); InvokeAction(Extra::ActionType::e_start, m_script, IsleScript::c_HelicopterDashboard, NULL); GetCurrentAction().SetObjectId(-1); ControlManager()->Register(this); @@ -179,7 +179,7 @@ MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param) else if (m_state->GetUnkown8() != 0) { break; } - VTable0xe4(); + Exit(); GameState()->SetCurrentArea(LegoGameState::e_unk66); ret = 1; break; @@ -248,7 +248,7 @@ MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param) if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { ((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::e_infomain); TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); - VTable0xe4(); + Exit(); } ret = 1; break; diff --git a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp index 0f8da9e7..4d630d97 100644 --- a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp +++ b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp @@ -14,6 +14,7 @@ #include "mxbackgroundaudiomanager.h" #include "mxnotificationparam.h" #include "scripts.h" +#include "viewmanager/viewmanager.h" DECOMP_SIZE_ASSERT(IslePathActor, 0x160) DECOMP_SIZE_ASSERT(IslePathActor::SpawnLocation, 0x38) @@ -26,8 +27,8 @@ IslePathActor::IslePathActor() { m_world = NULL; m_unk0x13c = 6.0; - m_unk0x15c = 1.0; - m_unk0x158 = NULL; + m_previousVel = 1.0; + m_previousActor = NULL; } // FUNCTION: LEGO1 0x1001a280 @@ -71,15 +72,15 @@ MxLong IslePathActor::Notify(MxParam& p_param) } // FUNCTION: LEGO1 0x1001a350 -void IslePathActor::VTable0xe0() +void IslePathActor::Enter() { m_roi->SetVisibility(FALSE); if (CurrentActor() != this) { - m_unk0x15c = NavController()->GetMaxLinearVel(); - m_unk0x158 = CurrentActor(); - if (m_unk0x158) { - m_unk0x158->ResetWorldTransform(FALSE); - m_unk0x158->SetUserNavFlag(FALSE); + m_previousVel = NavController()->GetMaxLinearVel(); + m_previousActor = CurrentActor(); + if (m_previousActor) { + m_previousActor->ResetWorldTransform(FALSE); + m_previousActor->SetUserNavFlag(FALSE); } } @@ -96,10 +97,62 @@ void IslePathActor::VTable0xe0() } } -// STUB: LEGO1 0x1001a3f0 -void IslePathActor::VTable0xe4() +// FUNCTION: LEGO1 0x1001a3f0 +// FUNCTION: BETA10 0x1003669f +void IslePathActor::Exit() { - // TODO + Reset(); + + GetViewManager()->Remove(m_roi); + GetViewManager()->Add(m_roi); + + ResetWorldTransform(FALSE); + SetUserNavFlag(FALSE); + + if (m_previousActor != NULL) { + SetCurrentActor(m_previousActor); + NavController()->ResetLinearVel(m_previousVel); + m_previousActor->ResetWorldTransform(TRUE); + m_previousActor->SetUserNavFlag(TRUE); + m_previousActor->SetBoundary(m_boundary); + + MxS32 i; + for (i = 0; i < m_boundary->GetNumEdges(); i++) { + LegoUnknown100db7f4* e = (LegoUnknown100db7f4*) m_boundary->GetEdges()[i]; + assert(e); + + Mx3DPointFloat local20; + e->FUN_1002ddc0(*m_boundary, local20); + + ((Vector3&) local20).Mul(m_roi->GetWorldBoundingSphere().Radius()); + ((Vector3&) local20).Add(&GetWorldPosition()); + + MxS32 j; + for (j = 0; j < m_boundary->GetNumEdges(); j++) { + Mx4DPointFloat& normal = *m_boundary->GetEdgeNormal(j); + + if (local20.Dot(&normal, &local20) + normal[3] < -0.001) { + break; + } + } + + if (m_boundary->GetNumEdges() == j) { + m_previousActor->SetLocation(local20, GetWorldDirection(), GetWorldUp(), TRUE); + break; + } + } + + if (m_boundary->GetNumEdges() == i) { + m_previousActor->SetLocation(GetWorldPosition(), GetWorldDirection(), GetWorldUp(), TRUE); + } + + m_previousActor->SetState(0); + GameState()->m_currentArea = LegoGameState::Area::e_unk66; + } + + FUN_1001b660(); + FUN_10010c30(); + FUN_1003eda0(); } // FUNCTION: LEGO1 0x1001a700 @@ -479,7 +532,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p m_world = world; if (p_und) { - VTable0xe0(); + Enter(); } m_world->PlaceActor( @@ -563,7 +616,7 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar m_world = CurrentWorld(); if (p_reset) { - VTable0xe0(); + Enter(); } m_world->PlaceActor(this); diff --git a/LEGO1/lego/legoomni/src/actors/jetski.cpp b/LEGO1/lego/legoomni/src/actors/jetski.cpp index 2b26d842..a3806801 100644 --- a/LEGO1/lego/legoomni/src/actors/jetski.cpp +++ b/LEGO1/lego/legoomni/src/actors/jetski.cpp @@ -24,7 +24,7 @@ void Jetski::VTable0x70(float p_float) } // STUB: LEGO1 0x1007e6f0 -void Jetski::VTable0xe4() +void Jetski::Exit() { // TODO } diff --git a/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp b/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp index 340ea64d..1aefb3d5 100644 --- a/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp +++ b/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp @@ -38,7 +38,7 @@ MxLong JukeBoxEntity::Notify(MxParam& p_param) } if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } ((Isle*) FindWorld(*g_isleScript, 0))->SetDestLocation(LegoGameState::e_jukeboxw); diff --git a/LEGO1/lego/legoomni/src/actors/motorcycle.cpp b/LEGO1/lego/legoomni/src/actors/motorcycle.cpp index a716d266..6537964f 100644 --- a/LEGO1/lego/legoomni/src/actors/motorcycle.cpp +++ b/LEGO1/lego/legoomni/src/actors/motorcycle.cpp @@ -25,7 +25,7 @@ void Motocycle::VTable0x70(float p_float) } // STUB: LEGO1 0x10035bc0 -void Motocycle::VTable0xe4() +void Motocycle::Exit() { // TODO } diff --git a/LEGO1/lego/legoomni/src/actors/pizzeria.cpp b/LEGO1/lego/legoomni/src/actors/pizzeria.cpp index 1ae45305..b1c563e3 100644 --- a/LEGO1/lego/legoomni/src/actors/pizzeria.cpp +++ b/LEGO1/lego/legoomni/src/actors/pizzeria.cpp @@ -51,7 +51,7 @@ undefined4 Pizzeria::HandleClick() if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { if (!CurrentActor()->IsA("SkateBoard")) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } } diff --git a/LEGO1/lego/legoomni/src/actors/racecar.cpp b/LEGO1/lego/legoomni/src/actors/racecar.cpp index e32fab62..217360b5 100644 --- a/LEGO1/lego/legoomni/src/actors/racecar.cpp +++ b/LEGO1/lego/legoomni/src/actors/racecar.cpp @@ -15,7 +15,7 @@ RaceCar::RaceCar() RaceCar::~RaceCar() { ControlManager()->Unregister(this); - VTable0xe4(); + Exit(); } // STUB: LEGO1 0x10028490 diff --git a/LEGO1/lego/legoomni/src/actors/skateboard.cpp b/LEGO1/lego/legoomni/src/actors/skateboard.cpp index 814e1332..e91ba114 100644 --- a/LEGO1/lego/legoomni/src/actors/skateboard.cpp +++ b/LEGO1/lego/legoomni/src/actors/skateboard.cpp @@ -54,7 +54,7 @@ MxResult SkateBoard::Create(MxDSAction& p_dsAction) } // FUNCTION: LEGO1 0x10010050 -void SkateBoard::VTable0xe4() +void SkateBoard::Exit() { if (m_act1state->m_unk0x018 == 3) { Pizza* pizza = (Pizza*) CurrentWorld()->Find(*g_isleScript, IsleScript::c_Pizza_Actor); @@ -63,7 +63,7 @@ void SkateBoard::VTable0xe4() m_unk0x160 = FALSE; } - IslePathActor::VTable0xe4(); + IslePathActor::Exit(); GameState()->m_currentArea = LegoGameState::Area::e_skateboard; RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_SkateArms_Ctl); RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_SkatePizza_Bitmap); @@ -86,12 +86,12 @@ MxU32 SkateBoard::HandleClick() if (GameState()->GetActorId() != CurrentActor()->GetActorId()) { if (!CurrentActor()->IsA("SkateBoard")) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); } } if (!CurrentActor()->IsA("SkateBoard")) { - VTable0xe0(); + Enter(); InvokeAction(Extra::ActionType::e_start, *g_isleScript, IsleScript::c_SkateDashboard, NULL); GetCurrentAction().SetObjectId(-1); ControlManager()->Register(this); @@ -111,7 +111,7 @@ MxU32 SkateBoard::HandleControl(LegoControlManagerEvent& p_param) MxU32 result = 0; if (p_param.GetUnknown0x28() == 1 && p_param.GetClickedObjectId() == IsleScript::c_SkateArms_Ctl) { - VTable0xe4(); + Exit(); GameState()->m_currentArea = LegoGameState::Area::e_unk66; result = 1; } diff --git a/LEGO1/lego/legoomni/src/actors/towtrack.cpp b/LEGO1/lego/legoomni/src/actors/towtrack.cpp index 4f259903..c1c5a2bf 100644 --- a/LEGO1/lego/legoomni/src/actors/towtrack.cpp +++ b/LEGO1/lego/legoomni/src/actors/towtrack.cpp @@ -96,7 +96,7 @@ MxU32 TowTrack::HandleClick() } // STUB: LEGO1 0x1004d8f0 -void TowTrack::VTable0xe4() +void TowTrack::Exit() { // TODO } diff --git a/LEGO1/lego/legoomni/src/common/legoutils.cpp b/LEGO1/lego/legoomni/src/common/legoutils.cpp index 8f9d9b12..a0c1095b 100644 --- a/LEGO1/lego/legoomni/src/common/legoutils.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutils.cpp @@ -467,7 +467,6 @@ MxBool FUN_1003ef60() GameState()->m_currentArea != LegoGameState::e_elevdown && GameState()->m_currentArea != LegoGameState::e_garadoor && GameState()->m_currentArea != LegoGameState::e_polidoor) { - if (CurrentActor() == NULL || !CurrentActor()->IsA("TowTrack")) { if (CurrentActor() == NULL || !CurrentActor()->IsA("Ambulance")) { MxU32 unk0x18 = act1State->GetUnknown18(); diff --git a/LEGO1/lego/legoomni/src/worlds/isle.cpp b/LEGO1/lego/legoomni/src/worlds/isle.cpp index 806903af..96a6acbc 100644 --- a/LEGO1/lego/legoomni/src/worlds/isle.cpp +++ b/LEGO1/lego/legoomni/src/worlds/isle.cpp @@ -1219,7 +1219,7 @@ MxBool Isle::Escape() if (CurrentActor()) { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); m_skateboard->SetUnknown0x160(FALSE); } } @@ -1265,7 +1265,7 @@ void Isle::FUN_10033350() if (CurrentActor()) { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) { - ((IslePathActor*) CurrentActor())->VTable0xe4(); + ((IslePathActor*) CurrentActor())->Exit(); m_skateboard->SetUnknown0x160(FALSE); } }