diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fcaf104..04ca97a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ add_library(lego1 SHARED LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp LEGO1/lego/legoomni/src/entity/legorace.cpp LEGO1/lego/legoomni/src/entity/legoraceactor.cpp + LEGO1/lego/legoomni/src/entity/legoracecar.cpp LEGO1/lego/legoomni/src/entity/legoworld.cpp LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp LEGO1/lego/legoomni/src/gasstation/gasstation.cpp @@ -97,6 +98,7 @@ add_library(lego1 SHARED LEGO1/lego/legoomni/src/isle/beachhouseentity.cpp LEGO1/lego/legoomni/src/isle/bike.cpp LEGO1/lego/legoomni/src/isle/bumpbouy.cpp + LEGO1/lego/legoomni/src/isle/doors.cpp LEGO1/lego/legoomni/src/isle/historybook.cpp LEGO1/lego/legoomni/src/isle/isleactor.cpp LEGO1/lego/legoomni/src/isle/isle.cpp diff --git a/LEGO1/lego/legoomni/include/doors.h b/LEGO1/lego/legoomni/include/doors.h index 321fdf61..4672c1d4 100644 --- a/LEGO1/lego/legoomni/include/doors.h +++ b/LEGO1/lego/legoomni/include/doors.h @@ -20,6 +20,10 @@ class Doors : public LegoPathActor { return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name); } + virtual void ParseAction(char*) override; // vtable+0x20 + virtual void VTable0x70(float p_float); // vtable+0x70 + virtual MxS32 VTable0x94() override; // vtable+0x94 + // SYNTHETIC: LEGO1 0x1000e580 // Doors::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/legoracecar.h b/LEGO1/lego/legoomni/include/legoracecar.h index 7e200ff6..f080ba46 100644 --- a/LEGO1/lego/legoomni/include/legoracecar.h +++ b/LEGO1/lego/legoomni/include/legoracecar.h @@ -8,6 +8,8 @@ // SIZE 0x200 class LegoRaceCar : public LegoCarRaceActor { public: + virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 + // FUNCTION: LEGO1 0x10014290 inline const char* ClassName() const override // vtable+0xc { @@ -21,6 +23,14 @@ class LegoRaceCar : public LegoCarRaceActor { return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name); } + virtual void ParseAction(char*) override; // vtable+0x20 + virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 + virtual void VTable0x6c() override; // vtable+0x6c + virtual void VTable0x70(float p_float) override; // vtable+0x70 + virtual MxS32 VTable0x94() override; // vtable+0x94 + virtual void VTable0x98() override; // vtable+0x98 + virtual void VTable0x9c() override; // vtable+0x9c + // SYNTHETIC: LEGO1 0x10014230 // LegoRaceCar::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/src/entity/legoracecar.cpp b/LEGO1/lego/legoomni/src/entity/legoracecar.cpp new file mode 100644 index 00000000..8728783a --- /dev/null +++ b/LEGO1/lego/legoomni/src/entity/legoracecar.cpp @@ -0,0 +1,51 @@ +#include "legoracecar.h" + +// STUB: LEGO1 0x10014280 +MxLong LegoRaceCar::Notify(MxParam& p_param) +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x100144d0 +void LegoRaceCar::ParseAction(char*) +{ + // TODO +} + +// STUB: LEGO1 0x100144e0 +void LegoRaceCar::SetWorldSpeed(MxFloat p_worldSpeed) +{ + // TODO +} + +// STUB: LEGO1 0x100144f0 +void LegoRaceCar::VTable0x6c() +{ + // TODO +} + +// STUB: LEGO1 0x10014530 +void LegoRaceCar::VTable0x70(float p_float) +{ + // TODO +} + +// STUB: LEGO1 0x10014540 +MxS32 LegoRaceCar::VTable0x94() +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x10014550 +void LegoRaceCar::VTable0x98() +{ + // TODO +} + +// STUB: LEGO1 0x10014580 +void LegoRaceCar::VTable0x9c() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/isle/doors.cpp b/LEGO1/lego/legoomni/src/isle/doors.cpp new file mode 100644 index 00000000..aa7e2031 --- /dev/null +++ b/LEGO1/lego/legoomni/src/isle/doors.cpp @@ -0,0 +1,20 @@ +#include "doors.h" + +// STUB: LEGO1 0x10066100 +MxS32 Doors::VTable0x94() +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x10066250 +void Doors::VTable0x70(float p_float) +{ + // TODO +} + +// STUB: LEGO1 0x100664e0 +void Doors::ParseAction(char*) +{ + // TODO +}