diff --git a/LEGO1/lego/legoomni/include/act3.h b/LEGO1/lego/legoomni/include/act3.h index 1d109052..46ae4e4f 100644 --- a/LEGO1/lego/legoomni/include/act3.h +++ b/LEGO1/lego/legoomni/include/act3.h @@ -33,7 +33,7 @@ class Act3 : public LegoWorld { MxBool VTable0x5c() override; // vtable+0x5c void VTable0x60() override; // vtable+0x60 MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; } inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; } diff --git a/LEGO1/lego/legoomni/include/elevatorbottom.h b/LEGO1/lego/legoomni/include/elevatorbottom.h index 80ea3fe0..8057b993 100644 --- a/LEGO1/lego/legoomni/include/elevatorbottom.h +++ b/LEGO1/lego/legoomni/include/elevatorbottom.h @@ -34,8 +34,8 @@ class ElevatorBottom : public LegoWorld { // FUNCTION: LEGO1 0x10017f10 MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c - MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + MxBool VTable0x64() override; // vtable+0x64 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x10018040 // ElevatorBottom::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/gasstation.h b/LEGO1/lego/legoomni/include/gasstation.h index f8115487..2d32bd81 100644 --- a/LEGO1/lego/legoomni/include/gasstation.h +++ b/LEGO1/lego/legoomni/include/gasstation.h @@ -33,7 +33,7 @@ class GasStation : public LegoWorld { void ReadyWorld() override; // vtable+0x50 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x100048a0 // GasStation::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/hospital.h b/LEGO1/lego/legoomni/include/hospital.h index ebf802a9..809e64e2 100644 --- a/LEGO1/lego/legoomni/include/hospital.h +++ b/LEGO1/lego/legoomni/include/hospital.h @@ -31,7 +31,7 @@ class Hospital : public LegoWorld { void ReadyWorld() override; // vtable+0x50 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x100747d0 // Hospital::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/infocenter.h b/LEGO1/lego/legoomni/include/infocenter.h index cd033c03..871fc1e9 100644 --- a/LEGO1/lego/legoomni/include/infocenter.h +++ b/LEGO1/lego/legoomni/include/infocenter.h @@ -188,7 +188,7 @@ class Infocenter : public LegoWorld { void ReadyWorld() override; // vtable+0x50 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x1006ec60 // Infocenter::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/infocenterdoor.h b/LEGO1/lego/legoomni/include/infocenterdoor.h index 3335731c..84be246a 100644 --- a/LEGO1/lego/legoomni/include/infocenterdoor.h +++ b/LEGO1/lego/legoomni/include/infocenterdoor.h @@ -33,8 +33,8 @@ class InfocenterDoor : public LegoWorld { // FUNCTION: LEGO1 0x100377a0 MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c - MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + MxBool VTable0x64() override; // vtable+0x64 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x100378d0 // InfocenterDoor::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/isle.h b/LEGO1/lego/legoomni/include/isle.h index e62577d6..f94e6832 100644 --- a/LEGO1/lego/legoomni/include/isle.h +++ b/LEGO1/lego/legoomni/include/isle.h @@ -47,7 +47,7 @@ class Isle : public LegoWorld { // FUNCTION: LEGO1 0x10033170 void VTable0x60() override {} // vtable+60 MxBool VTable0x64() override; // vtable+64 - void VTable0x68(MxBool p_add) override; // vtable+68 + void Enable(MxBool p_enable) override; // vtable+68 virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; } diff --git a/LEGO1/lego/legoomni/include/jukebox.h b/LEGO1/lego/legoomni/include/jukebox.h index f1335262..94728ee2 100644 --- a/LEGO1/lego/legoomni/include/jukebox.h +++ b/LEGO1/lego/legoomni/include/jukebox.h @@ -30,7 +30,7 @@ class JukeBox : public LegoWorld { void ReadyWorld() override; // vtable+0x50 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x1005d810 // JukeBox::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/legoact2.h b/LEGO1/lego/legoomni/include/legoact2.h index 5e89e06e..dfedc85d 100644 --- a/LEGO1/lego/legoomni/include/legoact2.h +++ b/LEGO1/lego/legoomni/include/legoact2.h @@ -16,7 +16,7 @@ class LegoAct2 : public LegoWorld { MxBool VTable0x5c() override; // vtable+0x5c void VTable0x60() override; // vtable+0x60 MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x1004fe20 // LegoAct2::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/legocarbuild.h b/LEGO1/lego/legoomni/include/legocarbuild.h index 8314b149..03d0484d 100644 --- a/LEGO1/lego/legoomni/include/legocarbuild.h +++ b/LEGO1/lego/legoomni/include/legocarbuild.h @@ -30,7 +30,7 @@ class LegoCarBuild : public LegoWorld { void ReadyWorld() override; // vtable+0x50 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x10022a60 // LegoCarBuild::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/legorace.h b/LEGO1/lego/legoomni/include/legorace.h index 8a6eed8a..c8b02f2e 100644 --- a/LEGO1/lego/legoomni/include/legorace.h +++ b/LEGO1/lego/legoomni/include/legorace.h @@ -31,7 +31,7 @@ class LegoRace : public LegoWorld { MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 virtual undefined4 VTable0x6c(undefined4) = 0; // vtable+0x6c virtual undefined4 VTable0x70(undefined4); // vtable+0x70 virtual undefined4 VTable0x74(undefined4); // vtable+0x74 diff --git a/LEGO1/lego/legoomni/include/legoworld.h b/LEGO1/lego/legoomni/include/legoworld.h index 0690f570..98dbbd5c 100644 --- a/LEGO1/lego/legoomni/include/legoworld.h +++ b/LEGO1/lego/legoomni/include/legoworld.h @@ -61,8 +61,8 @@ class LegoWorld : public LegoEntity { // FUNCTION: LEGO1 0x100010a0 virtual void VTable0x60() {} // vtable+0x60 - virtual MxBool VTable0x64(); // vtable+0x64 - virtual void VTable0x68(MxBool p_add); // vtable+0x68 + virtual MxBool VTable0x64(); // vtable+0x64 + virtual void Enable(MxBool p_enable); // vtable+0x68 inline LegoCameraController* GetCamera() { return m_cameraController; } inline undefined4 GetUnknown0xec() { return m_unk0xec; } diff --git a/LEGO1/lego/legoomni/include/police.h b/LEGO1/lego/legoomni/include/police.h index dd5c10e6..595f5ede 100644 --- a/LEGO1/lego/legoomni/include/police.h +++ b/LEGO1/lego/legoomni/include/police.h @@ -34,7 +34,7 @@ class Police : public LegoWorld { void ReadyWorld() override; // vtable+0x50 MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x1005e300 // Police::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/registrationbook.h b/LEGO1/lego/legoomni/include/registrationbook.h index a712fdc6..4a7f3ee8 100644 --- a/LEGO1/lego/legoomni/include/registrationbook.h +++ b/LEGO1/lego/legoomni/include/registrationbook.h @@ -29,7 +29,7 @@ class RegistrationBook : public LegoWorld { MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 void ReadyWorld() override; // vtable+0x50 MxBool VTable0x64() override; // vtable+0x64 - void VTable0x68(MxBool p_add) override; // vtable+0x68 + void Enable(MxBool p_enable) override; // vtable+0x68 // SYNTHETIC: LEGO1 0x10076f30 // RegistrationBook::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/score.h b/LEGO1/lego/legoomni/include/score.h index 98774249..2f03abe5 100644 --- a/LEGO1/lego/legoomni/include/score.h +++ b/LEGO1/lego/legoomni/include/score.h @@ -35,7 +35,7 @@ class Score : public LegoWorld { void ReadyWorld() override; // vtable+50 MxBool VTable0x5c() override; // vtable+5c MxBool VTable0x64() override; // vtable+64 - void VTable0x68(MxBool p_add) override; // vtable+68 + void Enable(MxBool p_enable) override; // vtable+68 void Paint(); MxLong FUN_10001510(MxEndActionNotificationParam& p_param); diff --git a/LEGO1/lego/legoomni/src/act2/legoact2.cpp b/LEGO1/lego/legoomni/src/act2/legoact2.cpp index 3aafe018..c32f407c 100644 --- a/LEGO1/lego/legoomni/src/act2/legoact2.cpp +++ b/LEGO1/lego/legoomni/src/act2/legoact2.cpp @@ -35,7 +35,7 @@ void LegoAct2::ReadyWorld() } // STUB: LEGO1 0x10050cf0 -void LegoAct2::VTable0x68(MxBool p_add) +void LegoAct2::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/act3/act3.cpp b/LEGO1/lego/legoomni/src/act3/act3.cpp index 02a13c60..b0971ec4 100644 --- a/LEGO1/lego/legoomni/src/act3/act3.cpp +++ b/LEGO1/lego/legoomni/src/act3/act3.cpp @@ -77,7 +77,7 @@ void Act3::FUN_10073430() } // STUB: LEGO1 0x10073a90 -void Act3::VTable0x68(MxBool p_add) +void Act3::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp index 9aba409b..09651ba2 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp @@ -49,7 +49,7 @@ void LegoCarBuild::ReadyWorld() } // STUB: LEGO1 0x100256c0 -void LegoCarBuild::VTable0x68(MxBool p_add) +void LegoCarBuild::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/common/legostate.cpp b/LEGO1/lego/legoomni/src/common/legostate.cpp index 4cc7622f..fe418e50 100644 --- a/LEGO1/lego/legoomni/src/common/legostate.cpp +++ b/LEGO1/lego/legoomni/src/common/legostate.cpp @@ -7,7 +7,7 @@ DECOMP_SIZE_ASSERT(LegoState::Shuffle, 0x0c) MxU32 LegoState::Shuffle::FUN_10014d00() { // TODO - return 0; + return m_objectIds[0]; } // STUB: LEGO1 0x10014de0 diff --git a/LEGO1/lego/legoomni/src/common/legoutil.cpp b/LEGO1/lego/legoomni/src/common/legoutil.cpp index 251942fb..51cf4342 100644 --- a/LEGO1/lego/legoomni/src/common/legoutil.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutil.cpp @@ -118,7 +118,7 @@ MxBool CheckIfEntityExists(MxBool p_enable, const char* p_filename, MxS32 p_enti LegoWorld* world = FindWorld(MxAtomId(p_filename, e_lowerCase2), p_entityId); if (world) { - world->VTable0x68(p_enable); + world->Enable(p_enable); return TRUE; } else { diff --git a/LEGO1/lego/legoomni/src/entity/legorace.cpp b/LEGO1/lego/legoomni/src/entity/legorace.cpp index 79565966..7c65c4da 100644 --- a/LEGO1/lego/legoomni/src/entity/legorace.cpp +++ b/LEGO1/lego/legoomni/src/entity/legorace.cpp @@ -82,7 +82,7 @@ MxLong LegoRace::Notify(MxParam& p_param) } // STUB: LEGO1 0x10015ed0 -void LegoRace::VTable0x68(MxBool p_add) +void LegoRace::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp index 47c3b3e3..f9c0b63c 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp @@ -84,7 +84,7 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction) if (p_dsAction.GetFlags() & MxDSAction::c_enabled) { if (CurrentWorld()) { - CurrentWorld()->VTable0x68(0); + CurrentWorld()->Enable(0); } SetCurrentWorld(this); @@ -517,13 +517,13 @@ MxCore* LegoWorld::Find(const MxAtomId& p_atom, MxS32 p_entityId) } // FUNCTION: LEGO1 0x10021a70 -void LegoWorld::VTable0x68(MxBool p_add) +void LegoWorld::Enable(MxBool p_enable) { - if (p_add && !m_set0xd0.empty()) { + if (p_enable && !m_set0xd0.empty()) { if (CurrentWorld() != this) { if (CurrentWorld()) { AnimationManager()->FUN_10061010(0); - CurrentWorld()->VTable0x68(FALSE); + CurrentWorld()->Enable(FALSE); LegoEntityListCursor cursor(m_entityList); LegoEntity* entity; @@ -569,7 +569,7 @@ void LegoWorld::VTable0x68(MxBool p_add) SetIsWorldActive(TRUE); } } - else if (!p_add && m_set0xd0.empty()) { + else if (!p_enable && m_set0xd0.empty()) { MxPresenter* presenter; LegoPathController* controller; IslePathActor* vehicle = CurrentVehicle(); diff --git a/LEGO1/lego/legoomni/src/gasstation/gasstation.cpp b/LEGO1/lego/legoomni/src/gasstation/gasstation.cpp index c7a695a8..37ff261e 100644 --- a/LEGO1/lego/legoomni/src/gasstation/gasstation.cpp +++ b/LEGO1/lego/legoomni/src/gasstation/gasstation.cpp @@ -54,7 +54,7 @@ void GasStation::ReadyWorld() } // STUB: LEGO1 0x10005c40 -void GasStation::VTable0x68(MxBool p_add) +void GasStation::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/hospital/hospital.cpp b/LEGO1/lego/legoomni/src/hospital/hospital.cpp index b141956d..8412cee5 100644 --- a/LEGO1/lego/legoomni/src/hospital/hospital.cpp +++ b/LEGO1/lego/legoomni/src/hospital/hospital.cpp @@ -58,7 +58,7 @@ void Hospital::ReadyWorld() } // STUB: LEGO1 0x10076220 -void Hospital::VTable0x68(MxBool p_add) +void Hospital::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp b/LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp index 08f2cf50..98e7d1b9 100644 --- a/LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp @@ -116,11 +116,11 @@ MxLong ElevatorBottom::HandleClick(LegoControlManagerEvent& p_param) } // FUNCTION: LEGO1 0x100182c0 -void ElevatorBottom::VTable0x68(MxBool p_add) +void ElevatorBottom::Enable(MxBool p_enable) { - LegoWorld::VTable0x68(p_add); + LegoWorld::Enable(p_enable); - if (p_add) { + if (p_enable) { InputManager()->SetWorld(this); SetIsWorldActive(FALSE); } diff --git a/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp b/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp index 0a262819..3913d355 100644 --- a/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp @@ -709,11 +709,11 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) } // FUNCTION: LEGO1 0x10070aa0 -void Infocenter::VTable0x68(MxBool p_add) +void Infocenter::Enable(MxBool p_enable) { - LegoWorld::VTable0x68(p_add); + LegoWorld::Enable(p_enable); - if (p_add) { + if (p_enable) { InputManager()->SetWorld(this); SetIsWorldActive(FALSE); } diff --git a/LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp b/LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp index 47ab29ac..eaf1ba98 100644 --- a/LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp @@ -140,11 +140,11 @@ MxLong InfocenterDoor::HandleClick(LegoControlManagerEvent& p_param) } // FUNCTION: LEGO1 0x10037c80 -void InfocenterDoor::VTable0x68(MxBool p_add) +void InfocenterDoor::Enable(MxBool p_enable) { - LegoWorld::VTable0x68(p_add); + LegoWorld::Enable(p_enable); - if (p_add) { + if (p_enable) { InputManager()->SetWorld(this); SetIsWorldActive(FALSE); } diff --git a/LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp b/LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp index a2ee09b3..5d5c6d94 100644 --- a/LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp @@ -42,7 +42,7 @@ MxResult RegistrationBook::Tickle() } // STUB: LEGO1 0x10078180 -void RegistrationBook::VTable0x68(MxBool p_add) +void RegistrationBook::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/infocenter/score.cpp b/LEGO1/lego/legoomni/src/infocenter/score.cpp index 197cd7ae..74744fbf 100644 --- a/LEGO1/lego/legoomni/src/infocenter/score.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/score.cpp @@ -217,11 +217,11 @@ MxLong Score::FUN_100016d0(LegoControlManagerEvent& p_param) } // FUNCTION: LEGO1 0x10001980 -void Score::VTable0x68(MxBool p_add) +void Score::Enable(MxBool p_enable) { - LegoWorld::VTable0x68(p_add); + LegoWorld::Enable(p_enable); - if (p_add) { + if (p_enable) { InputManager()->SetWorld(this); SetIsWorldActive(FALSE); } diff --git a/LEGO1/lego/legoomni/src/isle/isle.cpp b/LEGO1/lego/legoomni/src/isle/isle.cpp index f31ef7ad..21bdf3bf 100644 --- a/LEGO1/lego/legoomni/src/isle/isle.cpp +++ b/LEGO1/lego/legoomni/src/isle/isle.cpp @@ -135,7 +135,7 @@ MxLong Isle::Notify(MxParam& p_param) result = HandleType19Notification(p_param); break; case c_notificationType20: - VTable0x68(TRUE); + Enable(TRUE); break; case c_notificationTransitioned: result = HandleTransitionEnd(); @@ -183,10 +183,22 @@ MxLong Isle::HandleType19Notification(MxParam& p_param) } // STUB: LEGO1 0x10031820 -void Isle::VTable0x68(MxBool p_add) +void Isle::Enable(MxBool p_enable) { - LegoWorld::VTable0x68(p_add); - // TODO + if (m_set0xd0.empty() == p_enable) + return; + + LegoWorld::Enable(p_enable); + m_radio.Initialize(p_enable); + + if (p_enable) { + // TODO + } + else { + if (InputManager()->GetWorld() == this) { + InputManager()->ClearWorld(); + } + } } // STUB: LEGO1 0x10032620 diff --git a/LEGO1/lego/legoomni/src/isle/jukebox.cpp b/LEGO1/lego/legoomni/src/isle/jukebox.cpp index c969754f..ed937aeb 100644 --- a/LEGO1/lego/legoomni/src/isle/jukebox.cpp +++ b/LEGO1/lego/legoomni/src/isle/jukebox.cpp @@ -41,7 +41,7 @@ void JukeBox::ReadyWorld() } // STUB: LEGO1 0x1005dde0 -void JukeBox::VTable0x68(MxBool p_add) +void JukeBox::Enable(MxBool p_enable) { // TODO } diff --git a/LEGO1/lego/legoomni/src/police/police.cpp b/LEGO1/lego/legoomni/src/police/police.cpp index c8c29486..c14c482b 100644 --- a/LEGO1/lego/legoomni/src/police/police.cpp +++ b/LEGO1/lego/legoomni/src/police/police.cpp @@ -77,7 +77,7 @@ void Police::ReadyWorld() } // STUB: LEGO1 0x1005e740 -void Police::VTable0x68(MxBool p_add) +void Police::Enable(MxBool p_enable) { // TODO }