From a6cf0b5856491f37c1352817440a326bf826d682 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Sat, 2 Mar 2024 17:11:03 -0500 Subject: [PATCH] implement BuildingEntity functions (#617) * implement BuildingEntity functions * fix build * Update infocenterentity.h --- LEGO1/lego/legoomni/include/beachhouseentity.h | 3 +++ LEGO1/lego/legoomni/include/buildingentity.h | 2 ++ LEGO1/lego/legoomni/include/gasstationentity.h | 3 +++ LEGO1/lego/legoomni/include/hospitalentity.h | 3 +++ LEGO1/lego/legoomni/include/infocenterentity.h | 3 +++ LEGO1/lego/legoomni/include/policeentity.h | 3 +++ LEGO1/lego/legoomni/include/racestandsentity.h | 3 +++ .../lego/legoomni/src/build/buildingentity.cpp | 17 +++++++++++------ 8 files changed, 31 insertions(+), 6 deletions(-) diff --git a/LEGO1/lego/legoomni/include/beachhouseentity.h b/LEGO1/lego/legoomni/include/beachhouseentity.h index 0910f49e..662f6382 100644 --- a/LEGO1/lego/legoomni/include/beachhouseentity.h +++ b/LEGO1/lego/legoomni/include/beachhouseentity.h @@ -20,6 +20,9 @@ class BeachHouseEntity : public BuildingEntity { return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name); } + // STUB: LEGO1 0x100153b0 + MxLong VTable0x50(MxParam& p_param) override { return 0; } + // SYNTHETIC: LEGO1 0x1000f970 // BeachHouseEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/buildingentity.h b/LEGO1/lego/legoomni/include/buildingentity.h index d07d9f5d..57297558 100644 --- a/LEGO1/lego/legoomni/include/buildingentity.h +++ b/LEGO1/lego/legoomni/include/buildingentity.h @@ -25,6 +25,8 @@ class BuildingEntity : public LegoEntity { return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name); } + virtual MxLong VTable0x50(MxParam& p_param) = 0; + // SYNTHETIC: LEGO1 0x10015010 // BuildingEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/gasstationentity.h b/LEGO1/lego/legoomni/include/gasstationentity.h index 0b271d46..776c3c00 100644 --- a/LEGO1/lego/legoomni/include/gasstationentity.h +++ b/LEGO1/lego/legoomni/include/gasstationentity.h @@ -20,6 +20,9 @@ class GasStationEntity : public BuildingEntity { return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name); } + // STUB: LEGO1 0x100151d0 + MxLong VTable0x50(MxParam& p_param) override { return 0; } + // SYNTHETIC: LEGO1 0x1000f890 // GasStationEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/hospitalentity.h b/LEGO1/lego/legoomni/include/hospitalentity.h index a837bd7b..2910916e 100644 --- a/LEGO1/lego/legoomni/include/hospitalentity.h +++ b/LEGO1/lego/legoomni/include/hospitalentity.h @@ -20,6 +20,9 @@ class HospitalEntity : public BuildingEntity { return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name); } + // STUB: LEGO1 0x10015270 + MxLong VTable0x50(MxParam& p_param) override { return 0; } + // SYNTHETIC: LEGO1 0x1000f820 // HospitalEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/infocenterentity.h b/LEGO1/lego/legoomni/include/infocenterentity.h index 85bcbce5..0584db7f 100644 --- a/LEGO1/lego/legoomni/include/infocenterentity.h +++ b/LEGO1/lego/legoomni/include/infocenterentity.h @@ -20,6 +20,9 @@ class InfoCenterEntity : public BuildingEntity { return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name); } + // STUB: LEGO1 0x100150c0 + MxLong VTable0x50(MxParam& p_param) override { return 0; } + // SYNTHETIC: LEGO1 0x1000f7b0 // InfoCenterEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/policeentity.h b/LEGO1/lego/legoomni/include/policeentity.h index acf0937b..726d47b8 100644 --- a/LEGO1/lego/legoomni/include/policeentity.h +++ b/LEGO1/lego/legoomni/include/policeentity.h @@ -20,6 +20,9 @@ class PoliceEntity : public BuildingEntity { return !strcmp(p_name, PoliceEntity::ClassName()) || BuildingEntity::IsA(p_name); } + // STUB: LEGO1 0x10015310 + MxLong VTable0x50(MxParam& p_param) override { return 0; } + // SYNTHETIC: LEGO1 0x1000f900 // PoliceEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/racestandsentity.h b/LEGO1/lego/legoomni/include/racestandsentity.h index 5b5b83e5..61c70bd0 100644 --- a/LEGO1/lego/legoomni/include/racestandsentity.h +++ b/LEGO1/lego/legoomni/include/racestandsentity.h @@ -19,6 +19,9 @@ class RaceStandsEntity : public BuildingEntity { return !strcmp(p_name, RaceStandsEntity::ClassName()) || BuildingEntity::IsA(p_name); } + // STUB: LEGO1 0x10015450 + MxLong VTable0x50(MxParam& p_param) override { return 0; } + // SYNTHETIC: LEGO1 0x1000f9e0 // RaceStandsEntity::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/src/build/buildingentity.cpp b/LEGO1/lego/legoomni/src/build/buildingentity.cpp index 37b0a8d9..f8ff1a83 100644 --- a/LEGO1/lego/legoomni/src/build/buildingentity.cpp +++ b/LEGO1/lego/legoomni/src/build/buildingentity.cpp @@ -1,21 +1,26 @@ #include "buildingentity.h" -// STUB: LEGO1 0x10014e20 +#include "legoomni.h" +#include "mxnotificationmanager.h" + +// FUNCTION: LEGO1 0x10014e20 BuildingEntity::BuildingEntity() { - // TODO + NotificationManager()->Register(this); } -// STUB: LEGO1 0x10015030 +// FUNCTION: LEGO1 0x10015030 BuildingEntity::~BuildingEntity() { - // TODO + NotificationManager()->Unregister(this); } -// STUB: LEGO1 0x100150a0 +// FUNCTION: LEGO1 0x100150a0 MxLong BuildingEntity::Notify(MxParam& p_param) { - // TODO + if (((MxNotificationParam&) p_param).GetType() == c_notificationType11) { + return VTable0x50(p_param); + } return 0; }