From 00cabfb8136c4a22bd985966039dd1b6ffbfaf77 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Wed, 12 Jun 2024 18:16:46 -0400 Subject: [PATCH] Add missing classes --- CMakeLists.txt | 3 ++ LEGO1/lego/legoomni/include/act2genactor.h | 15 ++++++ LEGO1/lego/legoomni/include/act3actor.h | 3 ++ LEGO1/lego/legoomni/include/act3brickster.h | 31 ++++++++++++ LEGO1/lego/legoomni/include/act3cop.h | 25 ++++++++++ .../lego/legoomni/include/legoobjectfactory.h | 6 +-- .../lego/legoomni/src/actors/act2genactor.cpp | 10 ++++ .../legoomni/src/actors/act3brickster.cpp | 47 +++++++++++++++++++ LEGO1/lego/legoomni/src/actors/act3cop.cpp | 35 ++++++++++++++ .../legoomni/src/common/legoobjectfactory.cpp | 46 +++++++++--------- 10 files changed, 195 insertions(+), 26 deletions(-) create mode 100644 LEGO1/lego/legoomni/include/act2genactor.h create mode 100644 LEGO1/lego/legoomni/include/act3brickster.h create mode 100644 LEGO1/lego/legoomni/include/act3cop.h create mode 100644 LEGO1/lego/legoomni/src/actors/act2genactor.cpp create mode 100644 LEGO1/lego/legoomni/src/actors/act3brickster.cpp create mode 100644 LEGO1/lego/legoomni/src/actors/act3cop.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1bcb3535..ceba04d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -285,7 +285,10 @@ target_link_libraries(omni PRIVATE dsound winmm Smacker::Smacker) add_library(lego1 SHARED LEGO1/define.cpp LEGO1/lego/legoomni/src/actors/act2actor.cpp + LEGO1/lego/legoomni/src/actors/act2genactor.cpp LEGO1/lego/legoomni/src/actors/act3actor.cpp + LEGO1/lego/legoomni/src/actors/act3brickster.cpp + LEGO1/lego/legoomni/src/actors/act3cop.cpp LEGO1/lego/legoomni/src/actors/act3shark.cpp LEGO1/lego/legoomni/src/actors/ambulance.cpp LEGO1/lego/legoomni/src/actors/bike.cpp diff --git a/LEGO1/lego/legoomni/include/act2genactor.h b/LEGO1/lego/legoomni/include/act2genactor.h new file mode 100644 index 00000000..93cc05da --- /dev/null +++ b/LEGO1/lego/legoomni/include/act2genactor.h @@ -0,0 +1,15 @@ +#ifndef ACT2GENACTOR_H +#define ACT2GENACTOR_H + +#include "legopathactor.h" + +// VTABLE: LEGO1 0x100d4ed8 +// SIZE 0x154 +class Act2GenActor : public LegoPathActor { + MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94 + + // SYNTHETIC: LEGO1 0x1000f5a0 + // Act2GenActor::`scalar deleting destructor' +}; + +#endif // ACT2GENACTOR_H diff --git a/LEGO1/lego/legoomni/include/act3actor.h b/LEGO1/lego/legoomni/include/act3actor.h index 3e6b3150..1944c3b4 100644 --- a/LEGO1/lego/legoomni/include/act3actor.h +++ b/LEGO1/lego/legoomni/include/act3actor.h @@ -23,6 +23,9 @@ class Act3Actor : public LegoAnimActor { // SYNTHETIC: LEGO1 0x10043330 // Act3Actor::`scalar deleting destructor' + // SYNTHETIC: LEGO1 0x10040fa0 + // Act3Actor::~Act3Actor + private: undefined4 m_unk0x1c; // 0x1c }; diff --git a/LEGO1/lego/legoomni/include/act3brickster.h b/LEGO1/lego/legoomni/include/act3brickster.h new file mode 100644 index 00000000..05a9658c --- /dev/null +++ b/LEGO1/lego/legoomni/include/act3brickster.h @@ -0,0 +1,31 @@ +#ifndef ACT3BRICKSTER_H +#define ACT3BRICKSTER_H + +#include "act3actor.h" + +// VTABLE: LEGO1 0x100d7838 LegoPathActor +// VTABLE: LEGO1 0x100d7908 LegoAnimActor +// SIZE 0x1b4 +class Act3Brickster : public Act3Actor { +public: + Act3Brickster(); + ~Act3Brickster(); + + void ParseAction(char* p_extra) override; // vtable+0x20 + void VTable0x70(float p_und) override; // vtable+0x70 + MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94 + void SwitchBoundary( + LegoPathBoundary*& p_boundary, + LegoUnknown100db7f4*& p_edge, + float& p_unk0xe4 + ) override; // vtable+0x98 + MxResult VTable0x9c() override; // vtable+0x9c + + // SYNTHETIC: LEGO1 0x10043250 + // Act3Brickster::`scalar deleting destructor' + +private: + undefined4 m_unk0x20[15]; // 0x20 +}; + +#endif // ACT3BRICKSTER_H diff --git a/LEGO1/lego/legoomni/include/act3cop.h b/LEGO1/lego/legoomni/include/act3cop.h new file mode 100644 index 00000000..29ac65b6 --- /dev/null +++ b/LEGO1/lego/legoomni/include/act3cop.h @@ -0,0 +1,25 @@ +#ifndef ACT3COP_H +#define ACT3COP_H + +#include "act3actor.h" + +// VTABLE: LEGO1 0x100d7750 LegoPathActor +// VTABLE: LEGO1 0x100d7820 LegoAnimActor +// SIZE 0x188 +class Act3Cop : public Act3Actor { +public: + Act3Cop(); + + void ParseAction(char* p_extra) override; // vtable+0x20 + void VTable0x70(float p_und) override; // vtable+0x70 + MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94 + MxResult VTable0x9c() override; // vtable+0x9c + + // SYNTHETIC: LEGO1 0x10043120 + // Act3Cop::`scalar deleting destructor' + +private: + undefined4 m_unk0x20[4]; // 0x20 +}; + +#endif // ACT3COP_H diff --git a/LEGO1/lego/legoomni/include/legoobjectfactory.h b/LEGO1/lego/legoomni/include/legoobjectfactory.h index 37d54fb3..ac085a1a 100644 --- a/LEGO1/lego/legoomni/include/legoobjectfactory.h +++ b/LEGO1/lego/legoomni/include/legoobjectfactory.h @@ -61,7 +61,7 @@ X(PizzaMissionState) \ X(Act2Actor) \ X(Act2Brick) \ - /*X(Act2GenActor)*/ \ + X(Act2GenActor) \ X(Act2PoliceStation) \ X(Act3) \ X(Act3State) \ @@ -75,8 +75,8 @@ X(AmbulanceMissionState) \ X(TowTrack) \ X(TowTrackMissionState) \ - /*X(Act3Cop)*/ \ - /*X(Act3Brickster)*/ \ + X(Act3Cop) \ + X(Act3Brickster) \ X(Act3Shark) \ X(BumpBouy) \ X(Act3Actor) \ diff --git a/LEGO1/lego/legoomni/src/actors/act2genactor.cpp b/LEGO1/lego/legoomni/src/actors/act2genactor.cpp new file mode 100644 index 00000000..d7ade7b1 --- /dev/null +++ b/LEGO1/lego/legoomni/src/actors/act2genactor.cpp @@ -0,0 +1,10 @@ +#include "act2genactor.h" + +DECOMP_SIZE_ASSERT(Act2GenActor, 0x154) + +// STUB: LEGO1 0x10018740 +MxResult Act2GenActor::VTable0x94(LegoPathActor*, MxBool) +{ + // TODO + return SUCCESS; +} diff --git a/LEGO1/lego/legoomni/src/actors/act3brickster.cpp b/LEGO1/lego/legoomni/src/actors/act3brickster.cpp new file mode 100644 index 00000000..24340578 --- /dev/null +++ b/LEGO1/lego/legoomni/src/actors/act3brickster.cpp @@ -0,0 +1,47 @@ +#include "act3brickster.h" + +DECOMP_SIZE_ASSERT(Act3Brickster, 0x1b4) + +// STUB: LEGO1 0x10040e10 +Act3Brickster::Act3Brickster() +{ + // TODO +} + +// FUNCTION: LEGO1 0x10040f20 +Act3Brickster::~Act3Brickster() +{ + // TODO +} + +// STUB: LEGO1 0x10040ff0 +void Act3Brickster::ParseAction(char* p_extra) +{ + // TODO +} + +// STUB: LEGO1 0x10041050 +void Act3Brickster::VTable0x70(float p_und) +{ + // TODO +} + +// STUB: LEGO1 0x100416b0 +MxResult Act3Brickster::VTable0x94(LegoPathActor*, MxBool) +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10042990 +void Act3Brickster::SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4) +{ + // TODO +} + +// STUB: LEGO1 0x100429d0 +MxResult Act3Brickster::VTable0x9c() +{ + // TODO + return SUCCESS; +} diff --git a/LEGO1/lego/legoomni/src/actors/act3cop.cpp b/LEGO1/lego/legoomni/src/actors/act3cop.cpp new file mode 100644 index 00000000..557386ce --- /dev/null +++ b/LEGO1/lego/legoomni/src/actors/act3cop.cpp @@ -0,0 +1,35 @@ +#include "act3cop.h" + +DECOMP_SIZE_ASSERT(Act3Cop, 0x188) + +// STUB: LEGO1 0x1003fe30 +Act3Cop::Act3Cop() +{ + // TODO +} + +// STUB: LEGO1 0x1003ff70 +MxResult Act3Cop::VTable0x94(LegoPathActor*, MxBool) +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10040060 +void Act3Cop::ParseAction(char* p_extra) +{ + // TODO +} + +// STUB: LEGO1 0x100401f0 +void Act3Cop::VTable0x70(float p_und) +{ + // TODO +} + +// STUB: LEGO1 0x10040d20 +MxResult Act3Cop::VTable0x9c() +{ + // TODO + return SUCCESS; +} diff --git a/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp b/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp index 66411554..92d3286d 100644 --- a/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp +++ b/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp @@ -2,8 +2,20 @@ #include "act2actor.h" #include "act2brick.h" +#include "act2genactor.h" +#include "act2policestation.h" +#include "act3.h" +#include "act3actor.h" +#include "act3brickster.h" +#include "act3cop.h" +#include "act3shark.h" +#include "ambulance.h" +#include "bike.h" +#include "buildings.h" +#include "bumpbouy.h" #include "carrace.h" #include "decomp.h" +#include "doors.h" #include "dunebuggy.h" #include "elevatorbottom.h" #include "gasstation.h" @@ -13,13 +25,18 @@ #include "infocenter.h" #include "infocenterdoor.h" #include "isle.h" +#include "jetski.h" #include "jetskirace.h" +#include "jukebox.h" +#include "jukeboxentity.h" #include "lego3dwavepresenter.h" #include "legoact2.h" #include "legoactioncontrolpresenter.h" #include "legoactor.h" #include "legoactorpresenter.h" #include "legoanimactor.h" +#include "legoanimationmanager.h" +#include "legoanimmmpresenter.h" #include "legoanimpresenter.h" #include "legocarbuild.h" #include "legocarbuildpresenter.h" @@ -33,6 +50,7 @@ #include "legoloadcachesoundpresenter.h" #include "legolocomotionanimpresenter.h" #include "legoloopinganimpresenter.h" +#include "legometerpresenter.h" #include "legomodelpresenter.h" #include "legopalettepresenter.h" #include "legopartpresenter.h" @@ -43,36 +61,18 @@ #include "legotexturepresenter.h" #include "legoworld.h" #include "legoworldpresenter.h" +#include "motocycle.h" +#include "mxcompositemediapresenter.h" #include "mxcontrolpresenter.h" #include "pizza.h" +#include "pizzeria.h" #include "police.h" +#include "racecar.h" +#include "raceskel.h" #include "registrationbook.h" #include "score.h" #include "skateboard.h" -// #include "act2genactor.h" -#include "act2policestation.h" -#include "act3.h" -#include "ambulance.h" -#include "bike.h" -#include "doors.h" -#include "jetski.h" -#include "legoanimationmanager.h" -#include "legoanimmmpresenter.h" -#include "motocycle.h" -#include "racecar.h" #include "towtrack.h" -// #include "act3cop.h" -// #include "act3brickster.h" -#include "act3actor.h" -#include "act3shark.h" -#include "buildings.h" -#include "bumpbouy.h" -#include "jukebox.h" -#include "jukeboxentity.h" -#include "legometerpresenter.h" -#include "mxcompositemediapresenter.h" -#include "pizzeria.h" -#include "raceskel.h" // TODO: Before HospitalState, add all of the different LegoVehicleBuildState's