Implement/match Ambulance::Notify ()

This commit is contained in:
Christian Semmler 2024-06-06 12:19:43 -04:00 committed by GitHub
parent 9a9bccda0e
commit ca17928fc6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 131 additions and 86 deletions

View file

@ -4,6 +4,8 @@
#include "islepathactor.h"
#include "legostate.h"
class MxEndActionNotificationParam;
// VTABLE: LEGO1 0x100d72a0
// SIZE 0x24
class AmbulanceMissionState : public LegoState {
@ -83,13 +85,15 @@ public:
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
void VTable0x70(float p_float) override; // vtable+0x70
MxU32 HandleClick() override; // vtable+0xcc
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxLong HandleNotification19(MxType19NotificationParam& p_param) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
virtual MxLong HandleButtonDown(LegoControlManagerEvent& p_param); // vtable+0xf0
virtual MxLong HandleEndAction(MxEndActionNotificationParam& p_param); // vtable+0xf4
void CreateState();
void FUN_10036e60();

View file

@ -23,10 +23,10 @@ public:
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
MxU32 HandleClick() override; // vtable+0xcc
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
void Exit() override; // vtable+0xe4
void FUN_10076b60();

View file

@ -23,12 +23,12 @@ public:
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxU32 HandleClick() override; // vtable+0xcc
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxLong HandleNotification19(MxType19NotificationParam& p_param) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
void FUN_10068350();

View file

@ -63,13 +63,13 @@ public:
return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
MxU32 HandleClick() override; // vtable+0xcc
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxLong HandleEndAnim(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
void Exit() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10003210
// Helicopter::`scalar deleting destructor'

View file

@ -107,19 +107,19 @@ public:
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
// FUNCTION: LEGO1 0x10002e70
virtual MxU32 HandleClick() { return 0; } // vtable+0xcc
virtual MxLong HandleClick() { return 0; } // vtable+0xcc
// FUNCTION: LEGO1 0x10002df0
virtual MxU32 VTable0xd0() { return 0; } // vtable+0xd0
virtual MxLong HandleNotification0() { return 0; } // vtable+0xd0
// FUNCTION: LEGO1 0x10002e80
virtual MxU32 HandleControl(LegoControlManagerEvent&) { return 0; } // vtable+0xd4
virtual MxLong HandleControl(LegoControlManagerEvent&) { return 0; } // vtable+0xd4
// FUNCTION: LEGO1 0x10002e90
virtual MxU32 VTable0xd8(LegoEndAnimNotificationParam&) { return 0; } // vtable+0xd8
virtual MxLong HandleEndAnim(LegoEndAnimNotificationParam&) { return 0; } // vtable+0xd8
// FUNCTION: LEGO1 0x10002e00
virtual MxU32 VTable0xdc(MxType19NotificationParam&) { return 0; } // vtable+0xdc
virtual MxLong HandleNotification19(MxType19NotificationParam&) { return 0; } // vtable+0xdc
virtual void Enter(); // vtable+0xe0
virtual void Exit(); // vtable+0xe4

View file

@ -25,11 +25,11 @@ public:
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxU32 HandleClick() override; // vtable+0xcc
MxU32 HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4
void Exit() override; // vtable+0xe4
void FUN_1007e990();

View file

@ -23,12 +23,12 @@ public:
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxU32 HandleClick() override; // vtable+0xcc
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxLong HandleNotification19(MxType19NotificationParam&) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
void FUN_10035e10();

View file

@ -25,7 +25,7 @@ public:
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
MxU32 HandleClick() override; // vtable+0xcc
MxLong HandleClick() override; // vtable+0xcc
// SYNTHETIC: LEGO1 0x10028400
// RaceCar::`scalar deleting destructor'

View file

@ -26,11 +26,11 @@ public:
return !strcmp(p_name, SkateBoard::ClassName()) || IslePathActor::IsA(p_name);
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
MxU32 HandleClick() override; // vtable+0xcc
MxU32 VTable0xd0() override; // vtable+0xd0
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
void Exit() override; // vtable+0xe4
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleNotification0() override; // vtable+0xd0
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
void Exit() override; // vtable+0xe4
inline void SetUnknown0x160(MxBool p_unk0x160) { m_unk0x160 = p_unk0x160; }

View file

@ -81,14 +81,14 @@ public:
return !strcmp(p_name, TowTrack::ClassName()) || IslePathActor::IsA(p_name);
}
MxLong Notify(MxParam& p_param) override; // vtable+0x04
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxU32 HandleClick() override; // vtable+0xcc
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 Exit() override; // vtable+0xe4
MxLong Notify(MxParam& p_param) override; // vtable+0x04
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
MxLong HandleEndAnim(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
MxLong HandleNotification19(MxType19NotificationParam& p_param) override; // vtable+0xdc
void Exit() override; // vtable+0xe4
void CreateState();
void FUN_1004dab0();

View file

@ -16,18 +16,19 @@ DECOMP_SIZE_ASSERT(Ambulance, 0x184)
DECOMP_SIZE_ASSERT(AmbulanceMissionState, 0x24)
// FUNCTION: LEGO1 0x10035ee0
// FUNCTION: BETA10 0x10022820
Ambulance::Ambulance()
{
m_maxLinearVel = 40.0;
m_state = NULL;
m_unk0x168 = 0;
m_unk0x16a = -1;
m_state = NULL;
m_unk0x16c = 0;
m_unk0x174 = -1;
m_unk0x16e = 0;
m_unk0x178 = -1;
m_unk0x170 = 0;
m_unk0x174 = -1;
m_unk0x172 = 0;
m_maxLinearVel = 40.0;
m_unk0x178 = -1;
m_unk0x17c = 1.0;
}
@ -37,6 +38,7 @@ void Ambulance::Destroy(MxBool p_fromDestructor)
}
// FUNCTION: LEGO1 0x10036150
// FUNCTION: BETA10 0x100228fe
Ambulance::~Ambulance()
{
ControlManager()->Unregister(this);
@ -44,6 +46,7 @@ Ambulance::~Ambulance()
}
// FUNCTION: LEGO1 0x100361d0
// FUNCTION: BETA10 0x10022993
MxResult Ambulance::Create(MxDSAction& p_dsAction)
{
MxResult result = IslePathActor::Create(p_dsAction);
@ -76,6 +79,7 @@ void Ambulance::VTable0x70(float p_float)
}
// FUNCTION: LEGO1 0x100363f0
// FUNCTION: BETA10 0x10022b2a
void Ambulance::CreateState()
{
LegoGameState* gameState = GameState();
@ -88,22 +92,59 @@ void Ambulance::CreateState()
m_state = state;
}
// STUB: LEGO1 0x10036420
// FUNCTION: LEGO1 0x10036420
// FUNCTION: BETA10 0x10022b84
MxLong Ambulance::Notify(MxParam& p_param)
{
MxLong result = 0;
switch (((MxNotificationParam&) p_param).GetType()) {
case c_notificationType0:
result = HandleNotification0();
break;
case c_notificationEndAction:
result = HandleEndAction((MxEndActionNotificationParam&) p_param);
break;
case c_notificationButtonDown:
result = HandleButtonDown((LegoControlManagerEvent&) p_param);
break;
case c_notificationClick:
result = HandleClick();
break;
case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param);
break;
case c_notificationType19:
result = HandleNotification19((MxType19NotificationParam&) p_param);
break;
}
return result;
}
// STUB: LEGO1 0x100364d0
MxLong Ambulance::HandleEndAction(MxEndActionNotificationParam& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x100367c0
MxLong Ambulance::HandleButtonDown(LegoControlManagerEvent& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x10036860
MxU32 Ambulance::VTable0xdc(MxType19NotificationParam& p_param)
MxLong Ambulance::HandleNotification19(MxType19NotificationParam& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x10036ce0
MxU32 Ambulance::HandleClick()
MxLong Ambulance::HandleClick()
{
// TODO
return 0;
@ -122,7 +163,7 @@ void Ambulance::Exit()
}
// STUB: LEGO1 0x10036f90
MxU32 Ambulance::HandleControl(LegoControlManagerEvent& p_param)
MxLong Ambulance::HandleControl(LegoControlManagerEvent& p_param)
{
// TODO
return 0;

View file

@ -45,14 +45,14 @@ void Bike::Exit()
}
// STUB: LEGO1 0x100769a0
MxU32 Bike::HandleClick()
MxLong Bike::HandleClick()
{
// TODO
return 0;
}
// STUB: LEGO1 0x10076aa0
MxU32 Bike::HandleControl(LegoControlManagerEvent& p_param)
MxLong Bike::HandleControl(LegoControlManagerEvent& p_param)
{
// TODO
return 0;

View file

@ -31,21 +31,21 @@ void DuneBuggy::Exit()
}
// STUB: LEGO1 0x10068060
MxU32 DuneBuggy::HandleClick()
MxLong DuneBuggy::HandleClick()
{
// TODO
return 0;
}
// STUB: LEGO1 0x100681b0
MxU32 DuneBuggy::HandleControl(LegoControlManagerEvent& p_param)
MxLong DuneBuggy::HandleControl(LegoControlManagerEvent& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x10068270
MxU32 DuneBuggy::VTable0xdc(MxType19NotificationParam& p_param)
MxLong DuneBuggy::HandleNotification19(MxType19NotificationParam& p_param)
{
// TODO
return 0;

View file

@ -103,7 +103,7 @@ void Helicopter::Exit()
}
// FUNCTION: LEGO1 0x10003480
MxU32 Helicopter::HandleClick()
MxLong Helicopter::HandleClick()
{
if (!FUN_1003ef60()) {
return 1;
@ -152,7 +152,7 @@ MxU32 Helicopter::HandleClick()
}
// FUNCTION: LEGO1 0x100035e0
MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param)
MxLong Helicopter::HandleControl(LegoControlManagerEvent& p_param)
{
MxU32 ret = 0;
MxAtomId script;
@ -261,7 +261,7 @@ MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param)
}
// FUNCTION: LEGO1 0x10003c20
MxU32 Helicopter::VTable0xd8(LegoEndAnimNotificationParam& p_param)
MxLong Helicopter::HandleEndAnim(LegoEndAnimNotificationParam& p_param)
{
MxU32 ret = 0;

View file

@ -52,7 +52,7 @@ MxLong IslePathActor::Notify(MxParam& p_param)
switch (((MxNotificationParam&) p_param).GetType()) {
case c_notificationType0:
ret = VTable0xd0();
ret = HandleNotification0();
break;
case c_notificationClick:
ret = HandleClick();
@ -61,10 +61,10 @@ MxLong IslePathActor::Notify(MxParam& p_param)
ret = HandleControl((LegoControlManagerEvent&) p_param);
break;
case c_notificationEndAnim:
ret = VTable0xd8((LegoEndAnimNotificationParam&) p_param);
ret = HandleEndAnim((LegoEndAnimNotificationParam&) p_param);
break;
case c_notificationType19:
ret = VTable0xdc((MxType19NotificationParam&) p_param);
ret = HandleNotification19((MxType19NotificationParam&) p_param);
break;
}

View file

@ -30,14 +30,14 @@ void Jetski::Exit()
}
// STUB: LEGO1 0x1007e750
MxU32 Jetski::HandleClick()
MxLong Jetski::HandleClick()
{
// TODO
return 0;
}
// STUB: LEGO1 0x1007e8e0
MxU32 Jetski::HandleControl(LegoControlManagerEvent& p_param)
MxLong Jetski::HandleControl(LegoControlManagerEvent& p_param)
{
// TODO
return 0;

View file

@ -31,21 +31,21 @@ void Motocycle::Exit()
}
// STUB: LEGO1 0x10035c50
MxU32 Motocycle::HandleClick()
MxLong Motocycle::HandleClick()
{
// TODO
return 0;
}
// STUB: LEGO1 0x10035d70
MxU32 Motocycle::HandleControl(LegoControlManagerEvent& p_param)
MxLong Motocycle::HandleControl(LegoControlManagerEvent& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x10035df0
MxU32 Motocycle::VTable0xdc(MxType19NotificationParam& p_param)
MxLong Motocycle::HandleNotification19(MxType19NotificationParam& p_param)
{
// TODO
return 0;

View file

@ -26,7 +26,7 @@ MxResult RaceCar::Create(MxDSAction& p_dsAction)
}
// STUB: LEGO1 0x100284d0
MxU32 RaceCar::HandleClick()
MxLong RaceCar::HandleClick()
{
// TODO
return 0;

View file

@ -71,7 +71,7 @@ void SkateBoard::Exit()
}
// FUNCTION: LEGO1 0x100100e0
MxU32 SkateBoard::HandleClick()
MxLong SkateBoard::HandleClick()
{
Act1State* state = (Act1State*) GameState()->GetState("Act1State");
@ -106,7 +106,7 @@ MxU32 SkateBoard::HandleClick()
}
// FUNCTION: LEGO1 0x10010230
MxU32 SkateBoard::HandleControl(LegoControlManagerEvent& p_param)
MxLong SkateBoard::HandleControl(LegoControlManagerEvent& p_param)
{
MxU32 result = 0;
@ -139,7 +139,7 @@ void SkateBoard::EnableScenePresentation(MxBool p_enable)
// FUNCTION: LEGO1 0x100104f0
// FUNCTION: BETA10 0x100f5472
MxU32 SkateBoard::VTable0xd0()
MxLong SkateBoard::HandleNotification0()
{
EnableScenePresentation(m_unk0x160);
return 1;

View file

@ -75,21 +75,21 @@ MxLong TowTrack::Notify(MxParam& p_param)
}
// STUB: LEGO1 0x1004cd30
MxU32 TowTrack::VTable0xd8(LegoEndAnimNotificationParam& p_param)
MxLong TowTrack::HandleEndAnim(LegoEndAnimNotificationParam& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x1004d330
MxU32 TowTrack::VTable0xdc(MxType19NotificationParam& p_param)
MxLong TowTrack::HandleNotification19(MxType19NotificationParam& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x1004d690
MxU32 TowTrack::HandleClick()
MxLong TowTrack::HandleClick()
{
// TODO
return 0;
@ -102,7 +102,7 @@ void TowTrack::Exit()
}
// STUB: LEGO1 0x1004d9e0
MxU32 TowTrack::HandleControl(LegoControlManagerEvent& p_param)
MxLong TowTrack::HandleControl(LegoControlManagerEvent& p_param)
{
// TODO
return 0;