Implement/match Motocycle, consistent notification names (#1037)

* Implement/match Motocycle, consistent notification names

* Format

* Fix

* Fix return types

* Fix return type

* Fix annotations

* Rename function
This commit is contained in:
Christian Semmler 2024-06-16 10:47:53 -04:00 committed by GitHub
parent 68023379d8
commit e4e0f4e4d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
62 changed files with 362 additions and 244 deletions

View file

@ -122,15 +122,15 @@ class Ambulance : public IslePathActor {
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
void VTable0x70(float p_time) override; // vtable+0x70 void VTable0x70(float p_time) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxLong HandleControl(LegoControlManagerNotificationParam& p_param) override; // vtable+0xd4
MxLong HandlePathStruct(LegoPathStructEvent& p_param) override; // vtable+0xdc MxLong HandlePathStruct(LegoPathStructNotificationParam& p_param) override; // vtable+0xdc
void Exit() override; // vtable+0xe4 void Exit() override; // vtable+0xe4
virtual MxLong HandleButtonDown(LegoControlManagerEvent& p_param); // vtable+0xf0 virtual MxLong HandleButtonDown(LegoControlManagerNotificationParam& p_param); // vtable+0xf0
virtual MxLong HandleEndAction(MxEndActionNotificationParam& p_param); // vtable+0xf4 virtual MxLong HandleEndAction(MxEndActionNotificationParam& p_param); // vtable+0xf4
void CreateState(); void CreateState();
void FUN_10036e60(); void FUN_10036e60();

View file

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

View file

@ -44,13 +44,13 @@ class CarRace : public LegoRace {
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name); return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
MxBool Escape() override; // vtable+0x64 MxBool Escape() override; // vtable+0x64
MxLong HandleClick(LegoEventNotificationParam&) override; // vtable+0x6c MxLong HandleClick(LegoEventNotificationParam&) override; // vtable+0x6c
MxLong HandlePathStruct(LegoPathStructEvent&) override; // vtable+0x70 MxLong HandlePathStruct(LegoPathStructNotificationParam&) override; // vtable+0x70
MxLong HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74 MxLong HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74
MxLong HandleType0Notification(MxNotificationParam&) override; // vtable+0x78 MxLong HandleType0Notification(MxNotificationParam&) override; // vtable+0x78
// SYNTHETIC: LEGO1 0x10016c70 // SYNTHETIC: LEGO1 0x10016c70
// CarRace::`scalar deleting destructor' // CarRace::`scalar deleting destructor'

View file

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

View file

@ -5,7 +5,7 @@
#include "legogamestate.h" #include "legogamestate.h"
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
// VTABLE: LEGO1 0x100d5f20 // VTABLE: LEGO1 0x100d5f20
// SIZE 0xfc // SIZE 0xfc
@ -44,7 +44,7 @@ class ElevatorBottom : public LegoWorld {
private: private:
LegoGameState::Area m_destLocation; // 0xf8 LegoGameState::Area m_destLocation; // 0xf8
MxLong HandleControl(LegoControlManagerEvent& p_param); MxLong HandleControl(LegoControlManagerNotificationParam& p_param);
}; };
#endif // ELEVATORBOTTOM_H #endif // ELEVATORBOTTOM_H

View file

@ -75,12 +75,12 @@ class GasStation : public LegoWorld {
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
MxBool Escape() override; // vtable+0x64 MxBool Escape() override; // vtable+0x64
void Enable(MxBool p_enable) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
virtual MxLong HandleControl(LegoControlManagerEvent& p_param); // vtable+0x6c virtual MxLong HandleControl(LegoControlManagerNotificationParam& p_param); // vtable+0x6c
inline void PlayAction(MxU32 p_objectId); inline void PlayAction(MxU32 p_objectId);
@ -90,7 +90,7 @@ class GasStation : public LegoWorld {
private: private:
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleKeyPress(MxS8 p_key); MxLong HandleKeyPress(MxS8 p_key);
MxLong HandleButtonDown(LegoControlManagerEvent& p_param); MxLong HandleButtonDown(LegoControlManagerNotificationParam& p_param);
MxS16 m_currentActorId; // 0xf8 MxS16 m_currentActorId; // 0xf8
undefined2 m_unk0xfa; // 0xfa undefined2 m_unk0xfa; // 0xfa

View file

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

View file

@ -7,7 +7,7 @@
#include "legostate.h" #include "legostate.h"
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
class MxEndActionNotificationParam; class MxEndActionNotificationParam;
class MxStillPresenter; class MxStillPresenter;
@ -89,8 +89,8 @@ class Hospital : public LegoWorld {
private: private:
MxLong HandleKeyPress(MxS8 p_key); MxLong HandleKeyPress(MxS8 p_key);
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleButtonDown(LegoControlManagerEvent& p_param); MxLong HandleButtonDown(LegoControlManagerNotificationParam& p_param);
MxBool HandleControl(LegoControlManagerEvent& p_param); MxBool HandleControl(LegoControlManagerNotificationParam& p_param);
MxS16 m_currentActorId; // 0xf8 MxS16 m_currentActorId; // 0xf8
LegoGameState::Area m_destLocation; // 0xfc LegoGameState::Area m_destLocation; // 0xfc

View file

@ -10,7 +10,7 @@
class MxNotificationParam; class MxNotificationParam;
class MxStillPresenter; class MxStillPresenter;
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
// VTABLE: LEGO1 0x100d93a8 // VTABLE: LEGO1 0x100d93a8
// SIZE 0x94 // SIZE 0x94
@ -129,7 +129,7 @@ class Infocenter : public LegoWorld {
MxLong HandleKeyPress(MxS8 p_key); MxLong HandleKeyPress(MxS8 p_key);
MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y); MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y);
MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y); MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y);
MxU8 HandleControl(LegoControlManagerEvent& p_param); MxU8 HandleControl(LegoControlManagerNotificationParam& p_param);
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleNotification0(MxNotificationParam& p_param); MxLong HandleNotification0(MxNotificationParam& p_param);

View file

@ -4,7 +4,7 @@
#include "legogamestate.h" #include "legogamestate.h"
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
// VTABLE: LEGO1 0x100d72d8 // VTABLE: LEGO1 0x100d72d8
// SIZE 0xfc // SIZE 0xfc
@ -43,7 +43,7 @@ class InfocenterDoor : public LegoWorld {
private: private:
LegoGameState::Area m_destLocation; // 0xf8 LegoGameState::Area m_destLocation; // 0xf8
MxLong HandleControl(LegoControlManagerEvent& p_param); MxLong HandleControl(LegoControlManagerNotificationParam& p_param);
}; };
#endif // INFOCENTERDOOR_H #endif // INFOCENTERDOOR_H

View file

@ -15,7 +15,7 @@ class Jetski;
class JukeBoxEntity; class JukeBoxEntity;
class LegoNamedTexture; class LegoNamedTexture;
class Motocycle; class Motocycle;
class LegoPathStructEvent; class LegoPathStructNotificationParam;
class Pizza; class Pizza;
class Pizzeria; class Pizzeria;
class RaceCar; class RaceCar;
@ -198,8 +198,8 @@ class Isle : public LegoWorld {
protected: protected:
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleControl(LegoControlManagerEvent& p_param); MxLong HandleControl(LegoControlManagerNotificationParam& p_param);
MxLong HandlePathStruct(LegoPathStructEvent& p_param); MxLong HandlePathStruct(LegoPathStructNotificationParam& p_param);
MxLong HandleTransitionEnd(); MxLong HandleTransitionEnd();
void HandleElevatorEndAction(); void HandleElevatorEndAction();
void UpdateGlobe(); void UpdateGlobe();

View file

@ -3,6 +3,8 @@
#include "legoactor.h" #include "legoactor.h"
class LegoControlManagerNotificationParam;
class LegoPathStructNotificationParam;
class LegoWorld; class LegoWorld;
class MxEndActionNotificationParam; class MxEndActionNotificationParam;
class MxNotificationParam; class MxNotificationParam;
@ -29,25 +31,25 @@ class IsleActor : public LegoActor {
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
// FUNCTION: LEGO1 0x1000e5f0 // FUNCTION: LEGO1 0x1000e5f0
virtual undefined4 HandleClick() { return 0; } // vtable+0x68 virtual MxLong HandleClick() { return 0; } // vtable+0x68
// FUNCTION: LEGO1 0x1000e600 // FUNCTION: LEGO1 0x1000e600
virtual undefined4 VTable0x6c() { return 0; } // vtable+0x6c virtual MxLong VTable0x6c() { return 0; } // vtable+0x6c
// FUNCTION: LEGO1 0x1000e610 // FUNCTION: LEGO1 0x1000e610
virtual undefined4 VTable0x70() { return 0; } // vtable+0x70 virtual MxLong HandleEndAnim() { return 0; } // vtable+0x70
// FUNCTION: LEGO1 0x1000e620 // FUNCTION: LEGO1 0x1000e620
virtual undefined4 HandleEndAction(MxEndActionNotificationParam&) { return 0; } // vtable+0x74 virtual MxLong HandleEndAction(MxEndActionNotificationParam&) { return 0; } // vtable+0x74
// FUNCTION: LEGO1 0x1000e630 // FUNCTION: LEGO1 0x1000e630
virtual undefined4 HandleButtonDown(MxNotificationParam&) { return 0; } // vtable+0x78 virtual MxLong HandleButtonDown(LegoControlManagerNotificationParam&) { return 0; } // vtable+0x78
// FUNCTION: LEGO1 0x1000e640 // FUNCTION: LEGO1 0x1000e640
virtual undefined4 HandleButtonUp(MxNotificationParam&) { return 0; } // vtable+0x7c virtual MxLong HandleButtonUp(LegoControlManagerNotificationParam&) { return 0; } // vtable+0x7c
// FUNCTION: LEGO1 0x1000e650 // FUNCTION: LEGO1 0x1000e650
virtual undefined4 VTable0x80(MxParam&) { return 0; } // vtable+0x80 virtual MxLong HandlePathStruct(LegoPathStructNotificationParam&) { return 0; } // vtable+0x80
protected: protected:
LegoWorld* m_world; // 0x78 LegoWorld* m_world; // 0x78

View file

@ -6,10 +6,10 @@
#include "mxtypes.h" #include "mxtypes.h"
#include "roi/legoroi.h" #include "roi/legoroi.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
class LegoEndAnimNotificationParam; class LegoEndAnimNotificationParam;
class LegoWorld; class LegoWorld;
class LegoPathStructEvent; class LegoPathStructNotificationParam;
// VTABLE: LEGO1 0x100d4398 // VTABLE: LEGO1 0x100d4398
// SIZE 0x160 // SIZE 0x160
@ -113,13 +113,13 @@ class IslePathActor : public LegoPathActor {
virtual MxLong HandleNotification0() { return 0; } // vtable+0xd0 virtual MxLong HandleNotification0() { return 0; } // vtable+0xd0
// FUNCTION: LEGO1 0x10002e80 // FUNCTION: LEGO1 0x10002e80
virtual MxLong HandleControl(LegoControlManagerEvent&) { return 0; } // vtable+0xd4 virtual MxLong HandleControl(LegoControlManagerNotificationParam&) { return 0; } // vtable+0xd4
// FUNCTION: LEGO1 0x10002e90 // FUNCTION: LEGO1 0x10002e90
virtual MxLong HandleEndAnim(LegoEndAnimNotificationParam&) { return 0; } // vtable+0xd8 virtual MxLong HandleEndAnim(LegoEndAnimNotificationParam&) { return 0; } // vtable+0xd8
// FUNCTION: LEGO1 0x10002e00 // FUNCTION: LEGO1 0x10002e00
virtual MxLong HandlePathStruct(LegoPathStructEvent&) { return 0; } // vtable+0xdc virtual MxLong HandlePathStruct(LegoPathStructNotificationParam&) { return 0; } // vtable+0xdc
virtual void Enter(); // vtable+0xe0 virtual void Enter(); // vtable+0xe0
virtual void Exit(); // vtable+0xe4 virtual void Exit(); // vtable+0xe4

View file

@ -4,7 +4,7 @@
#include "decomp.h" #include "decomp.h"
#include "islepathactor.h" #include "islepathactor.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
// VTABLE: LEGO1 0x100d9ec8 // VTABLE: LEGO1 0x100d9ec8
// SIZE 0x164 // SIZE 0x164
@ -25,11 +25,11 @@ class Jetski : public IslePathActor {
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4 MxLong HandleControl(LegoControlManagerNotificationParam&) override; // vtable+0xd4
void Exit() override; // vtable+0xe4 void Exit() override; // vtable+0xe4
void FUN_1007e990(); void FUN_1007e990();

View file

@ -48,12 +48,12 @@ class JetskiRace : public LegoRace {
return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name); return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name);
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
MxBool Escape() override; // vtable+0x64 MxBool Escape() override; // vtable+0x64
MxLong HandleClick(LegoEventNotificationParam&) override; // vtable+0x6c MxLong HandleClick(LegoEventNotificationParam&) override; // vtable+0x6c
MxLong HandlePathStruct(LegoPathStructEvent&) override; // vtable+0x70 MxLong HandlePathStruct(LegoPathStructNotificationParam&) override; // vtable+0x70
MxLong HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74 MxLong HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74
}; };
// SYNTHETIC: LEGO1 0x1000f530 // SYNTHETIC: LEGO1 0x1000f530

View file

@ -6,7 +6,7 @@
#include "legostate.h" #include "legostate.h"
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
// VTABLE: LEGO1 0x100d4a90 // VTABLE: LEGO1 0x100d4a90
// SIZE 0x10 // SIZE 0x10
@ -79,7 +79,7 @@ class JukeBox : public LegoWorld {
// JukeBox::`scalar deleting destructor' // JukeBox::`scalar deleting destructor'
private: private:
MxBool HandleControl(LegoControlManagerEvent& p_param); MxBool HandleControl(LegoControlManagerNotificationParam& p_param);
LegoGameState::Area m_destLocation; // 0xf8 LegoGameState::Area m_destLocation; // 0xf8
JukeBoxState* m_state; // 0xfc JukeBoxState* m_state; // 0xfc

View file

@ -10,9 +10,9 @@ class MxControlPresenter;
// VTABLE: LEGO1 0x100d6a98 // VTABLE: LEGO1 0x100d6a98
// SIZE 0x2c // SIZE 0x2c
class LegoControlManagerEvent : public LegoEventNotificationParam { class LegoControlManagerNotificationParam : public LegoEventNotificationParam {
public: public:
inline LegoControlManagerEvent() : LegoEventNotificationParam() inline LegoControlManagerNotificationParam() : LegoEventNotificationParam()
{ {
m_clickedObjectId = -1; m_clickedObjectId = -1;
m_clickedAtom = NULL; m_clickedAtom = NULL;
@ -34,10 +34,10 @@ class LegoControlManagerEvent : public LegoEventNotificationParam {
}; };
// SYNTHETIC: LEGO1 0x10028bf0 // SYNTHETIC: LEGO1 0x10028bf0
// LegoControlManagerEvent::`scalar deleting destructor' // LegoControlManagerNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10028c60 // SYNTHETIC: LEGO1 0x10028c60
// LegoControlManagerEvent::~LegoControlManagerEvent // LegoControlManagerNotificationParam::~LegoControlManagerNotificationParam
// VTABLE: LEGO1 0x100d6a80 // VTABLE: LEGO1 0x100d6a80
class LegoControlManager : public MxCore { class LegoControlManager : public MxCore {
@ -84,13 +84,13 @@ class LegoControlManager : public MxCore {
// LegoControlManager::`scalar deleting destructor' // LegoControlManager::`scalar deleting destructor'
private: private:
undefined4 m_unk0x08; // 0x08 undefined4 m_unk0x08; // 0x08
undefined4 m_unk0x0c; // 0x0c undefined4 m_unk0x0c; // 0x0c
MxBool m_unk0x10; // 0x10 MxBool m_unk0x10; // 0x10
MxPresenter* m_unk0x14; // 0x14 MxPresenter* m_unk0x14; // 0x14
LegoControlManagerEvent m_event; // 0x18 LegoControlManagerNotificationParam m_event; // 0x18
MxPresenterList* m_presenterList; // 0x44 MxPresenterList* m_presenterList; // 0x44
LegoNotifyList m_notifyList; // 0x48 LegoNotifyList m_notifyList; // 0x48
}; };
#endif // LEGOCONTROLMANAGER_H #endif // LEGOCONTROLMANAGER_H

View file

@ -11,9 +11,10 @@ class LegoWorld;
// VTABLE: LEGO1 0x100d6230 // VTABLE: LEGO1 0x100d6230
// SIZE 0x10 // SIZE 0x10
class LegoPathStructEvent : public MxNotificationParam { class LegoPathStructNotificationParam : public MxNotificationParam {
public: public:
LegoPathStructEvent(NotificationId p_type, MxCore* p_sender, MxU8 p_trigger, MxS16 p_data) : MxNotificationParam() LegoPathStructNotificationParam(NotificationId p_type, MxCore* p_sender, MxU8 p_trigger, MxS16 p_data)
: MxNotificationParam()
{ {
m_type = p_type; m_type = p_type;
m_sender = p_sender; m_sender = p_sender;
@ -24,7 +25,7 @@ class LegoPathStructEvent : public MxNotificationParam {
// FUNCTION: LEGO1 0x1001bac0 // FUNCTION: LEGO1 0x1001bac0
MxNotificationParam* Clone() const override MxNotificationParam* Clone() const override
{ {
return new LegoPathStructEvent(m_type, m_sender, m_trigger, m_data); return new LegoPathStructNotificationParam(m_type, m_sender, m_trigger, m_data);
} // vtable+0x04 } // vtable+0x04
inline MxU8 GetTrigger() { return m_trigger; } inline MxU8 GetTrigger() { return m_trigger; }
@ -99,10 +100,10 @@ class LegoPathStruct : public LegoPathStructBase {
}; };
// SYNTHETIC: LEGO1 0x1001bb80 // SYNTHETIC: LEGO1 0x1001bb80
// LegoPathStructEvent::`scalar deleting destructor' // LegoPathStructNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001bbf0 // SYNTHETIC: LEGO1 0x1001bbf0
// LegoPathStructEvent::~LegoPathStructEvent // LegoPathStructNotificationParam::~LegoPathStructNotificationParam
// SYNTHETIC: LEGO1 0x10047440 // SYNTHETIC: LEGO1 0x10047440
// LegoPathStructBase::`scalar deleting destructor' // LegoPathStructBase::`scalar deleting destructor'

View file

@ -13,7 +13,7 @@ class LegoEventNotificationParam;
class LegoPathActor; class LegoPathActor;
class MxEndActionNotificationParam; class MxEndActionNotificationParam;
class MxNotificationParam; class MxNotificationParam;
class LegoPathStructEvent; class LegoPathStructNotificationParam;
// VTABLE: LEGO1 0x100d5e30 // VTABLE: LEGO1 0x100d5e30
// SIZE 0x2c // SIZE 0x2c
@ -114,11 +114,11 @@ class LegoRace : public LegoWorld {
// FUNCTION: LEGO1 0x1000dae0 // FUNCTION: LEGO1 0x1000dae0
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
MxBool Escape() override; // vtable+0x64 MxBool Escape() override; // vtable+0x64
void Enable(MxBool p_enable) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
virtual MxLong HandleClick(LegoEventNotificationParam&) = 0; // vtable+0x6c virtual MxLong HandleClick(LegoEventNotificationParam&) = 0; // vtable+0x6c
virtual MxLong HandlePathStruct(LegoPathStructEvent&); // vtable+0x70 virtual MxLong HandlePathStruct(LegoPathStructNotificationParam&); // vtable+0x70
virtual MxLong HandleEndAction(MxEndActionNotificationParam&); // vtable+0x74 virtual MxLong HandleEndAction(MxEndActionNotificationParam&); // vtable+0x74
// FUNCTION: LEGO1 0x1000dab0 // FUNCTION: LEGO1 0x1000dab0
virtual MxLong HandleType0Notification(MxNotificationParam&) { return 0; } // vtable+0x78 virtual MxLong HandleType0Notification(MxNotificationParam&) { return 0; } // vtable+0x78

View file

@ -3,6 +3,8 @@
#include "mxvariable.h" #include "mxvariable.h"
extern const char* g_varMOTOSPEED;
extern const char* g_varMOTOFUEL;
extern const char* g_varAMBULSPEED; extern const char* g_varAMBULSPEED;
extern const char* g_varAMBULFUEL; extern const char* g_varAMBULFUEL;
extern const char* g_varTOWFUEL; extern const char* g_varTOWFUEL;

View file

@ -1,5 +1,5 @@
#ifndef MOTOCYCLE_H #ifndef MOTORCYCLE_H
#define MOTOCYCLE_H #define MOTORCYCLE_H
#include "decomp.h" #include "decomp.h"
#include "islepathactor.h" #include "islepathactor.h"
@ -23,22 +23,22 @@ class Motocycle : public IslePathActor {
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_time) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxLong HandleControl(LegoControlManagerNotificationParam& p_param) override; // vtable+0xd4
MxLong HandlePathStruct(LegoPathStructEvent&) override; // vtable+0xdc MxLong HandlePathStruct(LegoPathStructNotificationParam&) override; // vtable+0xdc
void Exit() override; // vtable+0xe4 void Exit() override; // vtable+0xe4
void FUN_10035e10(); void ActivateSceneActions();
// SYNTHETIC: LEGO1 0x100359d0 // SYNTHETIC: LEGO1 0x100359d0
// Motocycle::`scalar deleting destructor' // Motocycle::`scalar deleting destructor'
private: private:
undefined m_unk0x160[4]; undefined m_unk0x160[4]; // 0x160
MxFloat m_unk0x164; MxFloat m_fuel; // 0x164
undefined m_unk0x168[4]; MxFloat m_time; // 0x168
}; };
#endif // MOTOCYCLE_H #endif // MOTORCYCLE_H

View file

@ -4,7 +4,7 @@
#include "decomp.h" #include "decomp.h"
#include "mxcompositepresenter.h" #include "mxcompositepresenter.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
class MxVideoPresenter; class MxVideoPresenter;
// VTABLE: LEGO1 0x100d7b88 // VTABLE: LEGO1 0x100d7b88
@ -39,7 +39,7 @@ class MxControlPresenter : public MxCompositePresenter {
virtual void VTable0x68(MxBool p_unk0x50); // vtable+0x68 virtual void VTable0x68(MxBool p_unk0x50); // vtable+0x68
virtual void VTable0x6c(MxS16 p_unk0x4e); // vtable+0x6c virtual void VTable0x6c(MxS16 p_unk0x4e); // vtable+0x6c
MxBool FUN_10044480(LegoControlManagerEvent* p_event, MxPresenter* p_presenter); MxBool FUN_10044480(LegoControlManagerNotificationParam* p_param, MxPresenter* p_presenter);
MxBool FUN_10044270(MxS32 p_x, MxS32 p_y, MxVideoPresenter* p_presenter); MxBool FUN_10044270(MxS32 p_x, MxS32 p_y, MxVideoPresenter* p_presenter);
inline MxS16 GetUnknown0x4e() { return m_unk0x4e; } inline MxS16 GetUnknown0x4e() { return m_unk0x4e; }

View file

@ -99,9 +99,9 @@ class Pizza : public IsleActor {
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
undefined4 HandleClick() override; // vtable+0x68 MxLong HandleClick() override; // vtable+0x68
undefined4 HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74 MxLong HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74
undefined4 VTable0x80(MxParam&) override; // vtable+0x80 MxLong HandlePathStruct(LegoPathStructNotificationParam&) override; // vtable+0x80
void CreateState(); void CreateState();
void FUN_10038220(MxU32 p_objectId); void FUN_10038220(MxU32 p_objectId);

View file

@ -68,7 +68,7 @@ class Pizzeria : public IsleActor {
} }
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
undefined4 HandleClick() override; // vtable+0x68 MxLong HandleClick() override; // vtable+0x68
void CreateState(); void CreateState();

View file

@ -7,7 +7,7 @@
#include "legoworld.h" #include "legoworld.h"
#include "radio.h" #include "radio.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
class LegoEventNotificationParam; class LegoEventNotificationParam;
class MxDSAction; class MxDSAction;
@ -79,7 +79,7 @@ class Police : public LegoWorld {
// Police::`scalar deleting destructor' // Police::`scalar deleting destructor'
private: private:
MxLong HandleControl(LegoControlManagerEvent& p_param); MxLong HandleControl(LegoControlManagerNotificationParam& p_param);
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleKeyPress(LegoEventNotificationParam& p_param); MxLong HandleKeyPress(LegoEventNotificationParam& p_param);

View file

@ -4,7 +4,7 @@
#include "legostate.h" #include "legostate.h"
#include "mxcore.h" #include "mxcore.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
class MxAtomId; class MxAtomId;
class MxEndActionNotificationParam; class MxEndActionNotificationParam;
@ -84,7 +84,7 @@ class Radio : public MxCore {
MxBool m_audioEnabled; // 0x0d MxBool m_audioEnabled; // 0x0d
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleControl(LegoControlManagerEvent& p_param); MxLong HandleControl(LegoControlManagerNotificationParam& p_param);
}; };
#endif // RADIO_H #endif // RADIO_H

View file

@ -7,7 +7,7 @@ class InfocenterState;
class MxControlPresenter; class MxControlPresenter;
class MxEndActionNotificationParam; class MxEndActionNotificationParam;
class MxStillPresenter; class MxStillPresenter;
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
// VTABLE: LEGO1 0x100d9928 // VTABLE: LEGO1 0x100d9928
// SIZE 0x2d0 // SIZE 0x2d0
@ -64,7 +64,7 @@ class RegistrationBook : public LegoWorld {
MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleKeyPress(MxU8 p_key); MxLong HandleKeyPress(MxU8 p_key);
MxLong HandleControl(LegoControlManagerEvent& p_param); MxLong HandleControl(LegoControlManagerNotificationParam& p_param);
MxLong HandleNotification19(MxParam& p_param); MxLong HandleNotification19(MxParam& p_param);
void FUN_100775c0(MxS16 p_playerIndex); void FUN_100775c0(MxS16 p_playerIndex);
void WriteInfocenterLetters(MxS16); void WriteInfocenterLetters(MxS16);

View file

@ -5,7 +5,7 @@
#include "legostate.h" #include "legostate.h"
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent; class LegoControlManagerNotificationParam;
class MxEndActionNotificationParam; class MxEndActionNotificationParam;
// VTABLE: LEGO1 0x100d53f8 // VTABLE: LEGO1 0x100d53f8
@ -80,7 +80,7 @@ class Score : public LegoWorld {
void Paint(); void Paint();
MxLong FUN_10001510(MxEndActionNotificationParam& p_param); MxLong FUN_10001510(MxEndActionNotificationParam& p_param);
MxLong FUN_100016d0(LegoControlManagerEvent& p_param); MxLong FUN_100016d0(LegoControlManagerNotificationParam& p_param);
void FillArea(MxU32 i_activity, MxU32 i_actor, MxS16 score); void FillArea(MxU32 i_activity, MxU32 i_actor, MxS16 score);
protected: protected:

View file

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

View file

@ -82,14 +82,14 @@ class TowTrack : public IslePathActor {
return !strcmp(p_name, TowTrack::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, TowTrack::ClassName()) || IslePathActor::IsA(p_name);
} }
MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
MxLong HandleClick() override; // vtable+0xcc MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxLong HandleControl(LegoControlManagerNotificationParam& p_param) override; // vtable+0xd4
MxLong HandleEndAnim(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8 MxLong HandleEndAnim(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
MxLong HandlePathStruct(LegoPathStructEvent& p_param) override; // vtable+0xdc MxLong HandlePathStruct(LegoPathStructNotificationParam& p_param) override; // vtable+0xdc
void Exit() override; // vtable+0xe4 void Exit() override; // vtable+0xe4
void CreateState(); void CreateState();
void FUN_1004dab0(); void FUN_1004dab0();

View file

@ -139,16 +139,16 @@ MxLong Ambulance::Notify(MxParam& p_param)
result = HandleEndAction((MxEndActionNotificationParam&) p_param); result = HandleEndAction((MxEndActionNotificationParam&) p_param);
break; break;
case c_notificationButtonDown: case c_notificationButtonDown:
result = HandleButtonDown((LegoControlManagerEvent&) p_param); result = HandleButtonDown((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationClick: case c_notificationClick:
result = HandleClick(); result = HandleClick();
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationPathStruct: case c_notificationPathStruct:
result = HandlePathStruct((LegoPathStructEvent&) p_param); result = HandlePathStruct((LegoPathStructNotificationParam&) p_param);
break; break;
} }
@ -243,7 +243,7 @@ MxLong Ambulance::HandleEndAction(MxEndActionNotificationParam& p_param)
// FUNCTION: LEGO1 0x100367c0 // FUNCTION: LEGO1 0x100367c0
// FUNCTION: BETA10 0x100230bf // FUNCTION: BETA10 0x100230bf
MxLong Ambulance::HandleButtonDown(LegoControlManagerEvent& p_param) MxLong Ambulance::HandleButtonDown(LegoControlManagerNotificationParam& p_param)
{ {
if (m_unk0x170 == 1) { if (m_unk0x170 == 1) {
LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY()); LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY());
@ -266,7 +266,7 @@ MxLong Ambulance::HandleButtonDown(LegoControlManagerEvent& p_param)
// FUNCTION: LEGO1 0x10036860 // FUNCTION: LEGO1 0x10036860
// FUNCTION: BETA10 0x100231bf // FUNCTION: BETA10 0x100231bf
MxLong Ambulance::HandlePathStruct(LegoPathStructEvent& p_param) MxLong Ambulance::HandlePathStruct(LegoPathStructNotificationParam& p_param)
{ {
// 0x168 corresponds to the path at the gas station // 0x168 corresponds to the path at the gas station
if (p_param.GetData() == 0x168) { if (p_param.GetData() == 0x168) {
@ -437,7 +437,7 @@ void Ambulance::Leave()
} }
// FUNCTION: LEGO1 0x10036f90 // FUNCTION: LEGO1 0x10036f90
MxLong Ambulance::HandleControl(LegoControlManagerEvent& p_param) MxLong Ambulance::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxLong result = 0; MxLong result = 0;

View file

@ -77,7 +77,7 @@ MxLong Bike::HandleClick()
} }
// FUNCTION: LEGO1 0x10076aa0 // FUNCTION: LEGO1 0x10076aa0
MxLong Bike::HandleControl(LegoControlManagerEvent& p_param) MxLong Bike::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxLong result = 0; MxLong result = 0;

View file

@ -38,14 +38,14 @@ MxLong DuneBuggy::HandleClick()
} }
// STUB: LEGO1 0x100681b0 // STUB: LEGO1 0x100681b0
MxLong DuneBuggy::HandleControl(LegoControlManagerEvent& p_param) MxLong DuneBuggy::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
// TODO // TODO
return 0; return 0;
} }
// STUB: LEGO1 0x10068270 // STUB: LEGO1 0x10068270
MxLong DuneBuggy::HandlePathStruct(LegoPathStructEvent& p_param) MxLong DuneBuggy::HandlePathStruct(LegoPathStructNotificationParam& p_param)
{ {
// TODO // TODO
return 0; return 0;

View file

@ -152,7 +152,7 @@ MxLong Helicopter::HandleClick()
} }
// FUNCTION: LEGO1 0x100035e0 // FUNCTION: LEGO1 0x100035e0
MxLong Helicopter::HandleControl(LegoControlManagerEvent& p_param) MxLong Helicopter::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxU32 ret = 0; MxU32 ret = 0;
MxAtomId script; MxAtomId script;

View file

@ -37,19 +37,19 @@ MxLong IsleActor::Notify(MxParam& p_param)
result = HandleEndAction((MxEndActionNotificationParam&) p_param); result = HandleEndAction((MxEndActionNotificationParam&) p_param);
break; break;
case c_notificationButtonUp: case c_notificationButtonUp:
result = HandleButtonUp((MxNotificationParam&) p_param); result = HandleButtonUp((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationButtonDown: case c_notificationButtonDown:
result = HandleButtonDown((MxNotificationParam&) p_param); result = HandleButtonDown((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationClick: case c_notificationClick:
result = HandleClick(); result = HandleClick();
break; break;
case c_notificationEndAnim: case c_notificationEndAnim:
result = VTable0x70(); result = HandleEndAnim();
break; break;
case c_notificationPathStruct: case c_notificationPathStruct:
result = VTable0x80(p_param); result = HandlePathStruct((LegoPathStructNotificationParam&) p_param);
break; break;
} }

View file

@ -58,13 +58,13 @@ MxLong IslePathActor::Notify(MxParam& p_param)
result = HandleClick(); result = HandleClick();
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationEndAnim: case c_notificationEndAnim:
result = HandleEndAnim((LegoEndAnimNotificationParam&) p_param); result = HandleEndAnim((LegoEndAnimNotificationParam&) p_param);
break; break;
case c_notificationPathStruct: case c_notificationPathStruct:
result = HandlePathStruct((LegoPathStructEvent&) p_param); result = HandlePathStruct((LegoPathStructNotificationParam&) p_param);
break; break;
} }

View file

@ -37,7 +37,7 @@ MxLong Jetski::HandleClick()
} }
// STUB: LEGO1 0x1007e8e0 // STUB: LEGO1 0x1007e8e0
MxLong Jetski::HandleControl(LegoControlManagerEvent& p_param) MxLong Jetski::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
// TODO // TODO
return 0; return 0;

View file

@ -1,58 +1,163 @@
#include "motocycle.h" #include "motorcycle.h"
#include "isle.h"
#include "isle_actions.h"
#include "jukebox_actions.h"
#include "legoanimationmanager.h"
#include "legocontrolmanager.h"
#include "legonavcontroller.h"
#include "legopathstruct.h"
#include "legoutils.h"
#include "legovariables.h"
#include "legoworld.h"
#include "misc.h"
#include "mxmisc.h"
#include "mxtimer.h"
#include "mxtransitionmanager.h"
#include "mxvariabletable.h"
DECOMP_SIZE_ASSERT(Motocycle, 0x16c) DECOMP_SIZE_ASSERT(Motocycle, 0x16c)
// FUNCTION: LEGO1 0x100357b0 // FUNCTION: LEGO1 0x100357b0
Motocycle::Motocycle() Motocycle::Motocycle()
{ {
this->m_maxLinearVel = 40.0; m_maxLinearVel = 40.0;
this->m_unk0x150 = 1.75; m_unk0x150 = 1.75;
this->m_unk0x148 = 1; m_unk0x148 = 1;
this->m_unk0x164 = 1.0; m_fuel = 1.0;
} }
// STUB: LEGO1 0x10035a40 // FUNCTION: LEGO1 0x10035a40
MxResult Motocycle::Create(MxDSAction& p_dsAction) MxResult Motocycle::Create(MxDSAction& p_dsAction)
{ {
// TODO MxResult result = IslePathActor::Create(p_dsAction);
return SUCCESS; m_world = CurrentWorld();
if (m_world) {
m_world->Add(this);
}
VariableTable()->SetVariable(g_varMOTOFUEL, "1.0");
m_fuel = 1.0;
m_time = Timer()->GetTime();
return result;
} }
// STUB: LEGO1 0x10035ad0 // FUNCTION: LEGO1 0x10035ad0
void Motocycle::VTable0x70(float p_float) void Motocycle::VTable0x70(float p_time)
{ {
// TODO IslePathActor::VTable0x70(p_time);
if (UserActor() == this) {
char buf[200];
float speed = abs(m_worldSpeed);
float maxLinearVel = NavController()->GetMaxLinearVel();
sprintf(buf, "%g", speed / maxLinearVel);
VariableTable()->SetVariable(g_varMOTOSPEED, buf);
m_fuel += (p_time - m_time) * -3.333333333e-06f;
if (m_fuel < 0) {
m_fuel = 0;
}
m_time = p_time;
sprintf(buf, "%g", m_fuel);
VariableTable()->SetVariable(g_varMOTOFUEL, buf);
}
} }
// STUB: LEGO1 0x10035bc0 // FUNCTION: LEGO1 0x10035bc0
void Motocycle::Exit() void Motocycle::Exit()
{ {
// TODO IslePathActor::Exit();
GameState()->m_currentArea = LegoGameState::e_motocycle;
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_MotoBikeDashboard_Bitmap);
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_MotoBikeArms_Ctl);
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_MotoBikeInfo_Ctl);
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_MotoBikeSpeedMeter);
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_MotoBikeFuelMeter);
ControlManager()->Unregister(this);
} }
// STUB: LEGO1 0x10035c50 // FUNCTION: LEGO1 0x10035c50
MxLong Motocycle::HandleClick() MxLong Motocycle::HandleClick()
{ {
// TODO if (!FUN_1003ef60()) {
return 1;
}
FUN_10015820(TRUE, 0);
((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::Area::e_motocycle);
TransitionManager()->StartTransition(MxTransitionManager::TransitionType::e_mosaic, 50, FALSE, TRUE);
if (GameState()->GetActorId() != UserActor()->GetActorId()) {
((IslePathActor*) UserActor())->Exit();
}
m_time = Timer()->GetTime();
Enter();
InvokeAction(Extra::ActionType::e_start, *g_isleScript, IsleScript::c_MotoBikeDashboard, NULL);
GetCurrentAction().SetObjectId(-1);
Vector3 position = m_roi->GetWorldPosition();
AnimationManager()->FUN_10064670(&position);
AnimationManager()->FUN_10064740(&position);
ControlManager()->Register(this);
return 1;
}
// FUNCTION: LEGO1 0x10035d70
MxLong Motocycle::HandleControl(LegoControlManagerNotificationParam& p_param)
{
MxLong result = 0;
if (p_param.GetUnknown0x28() == 1) {
switch (p_param.GetClickedObjectId()) {
case IsleScript::c_MotoBikeArms_Ctl:
Exit();
GameState()->m_currentArea = LegoGameState::e_unk66;
result = 1;
break;
case IsleScript::c_MotoBikeInfo_Ctl:
((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::e_infomain);
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
Exit();
result = 1;
break;
}
}
return result;
}
// FUNCTION: LEGO1 0x10035df0
MxLong Motocycle::HandlePathStruct(LegoPathStructNotificationParam& p_param)
{
// 0x168 corresponds to the path at the gas station
if (p_param.GetData() == 0x168) {
m_fuel = 1.0f;
}
return 0; return 0;
} }
// STUB: LEGO1 0x10035d70 // FUNCTION: LEGO1 0x10035e10
MxLong Motocycle::HandleControl(LegoControlManagerEvent& p_param) void Motocycle::ActivateSceneActions()
{ {
// TODO PlayMusic(JukeboxScript::c_PoliceStation_Music);
return 0;
}
// STUB: LEGO1 0x10035df0 Act1State* act1state = (Act1State*) GameState()->GetState("Act1State");
MxLong Motocycle::HandlePathStruct(LegoPathStructEvent& p_param) if (!act1state->m_unk0x022) {
{ act1state->m_unk0x022 = TRUE;
// TODO
return 0;
}
// STUB: LEGO1 0x10035e10 MxMatrix mat(UserActor()->GetROI()->GetLocal2World());
void Motocycle::FUN_10035e10() mat.TranslateBy(mat[2][0] * 2.5, mat[2][1] + 0.7, mat[2][2] * 2.5);
{
// TODO AnimationManager()
->FUN_10060dc0(IsleScript::c_sns006in_RunAnim, &mat, TRUE, FALSE, NULL, FALSE, TRUE, TRUE, TRUE);
}
} }

View file

@ -72,14 +72,14 @@ void Pizza::FUN_10038380()
} }
// STUB: LEGO1 0x100383f0 // STUB: LEGO1 0x100383f0
undefined4 Pizza::HandleClick() MxLong Pizza::HandleClick()
{ {
// TODO // TODO
return 0; return 0;
} }
// STUB: LEGO1 0x100384f0 // STUB: LEGO1 0x100384f0
undefined4 Pizza::VTable0x80(MxParam&) MxLong Pizza::HandlePathStruct(LegoPathStructNotificationParam&)
{ {
// TODO // TODO
return 0; return 0;
@ -93,7 +93,7 @@ MxResult Pizza::Tickle()
} }
// STUB: LEGO1 0x10038b10 // STUB: LEGO1 0x10038b10
undefined4 Pizza::HandleEndAction(MxEndActionNotificationParam&) MxLong Pizza::HandleEndAction(MxEndActionNotificationParam&)
{ {
// TODO // TODO
return 0; return 0;

View file

@ -46,7 +46,7 @@ void Pizzeria::CreateState()
} }
// FUNCTION: LEGO1 0x10017a50 // FUNCTION: LEGO1 0x10017a50
undefined4 Pizzeria::HandleClick() MxLong Pizzeria::HandleClick()
{ {
if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) { if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) {
if (UserActor()->GetActorId() != GameState()->GetActorId()) { if (UserActor()->GetActorId() != GameState()->GetActorId()) {

View file

@ -91,7 +91,7 @@ MxLong Radio::Notify(MxParam& p_param)
result = HandleEndAction((MxEndActionNotificationParam&) p_param); result = HandleEndAction((MxEndActionNotificationParam&) p_param);
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
} }
} }
@ -139,7 +139,7 @@ void Radio::Stop()
} }
// FUNCTION: LEGO1 0x1002cbc0 // FUNCTION: LEGO1 0x1002cbc0
MxLong Radio::HandleControl(LegoControlManagerEvent& p_param) MxLong Radio::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxDSAction action; // Unused MxDSAction action; // Unused
MxS32 objectId = p_param.GetClickedObjectId(); MxS32 objectId = p_param.GetClickedObjectId();

View file

@ -106,7 +106,7 @@ MxLong SkateBoard::HandleClick()
} }
// FUNCTION: LEGO1 0x10010230 // FUNCTION: LEGO1 0x10010230
MxLong SkateBoard::HandleControl(LegoControlManagerEvent& p_param) MxLong SkateBoard::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxU32 result = 0; MxU32 result = 0;

View file

@ -89,7 +89,7 @@ MxLong TowTrack::HandleEndAnim(LegoEndAnimNotificationParam& p_param)
} }
// STUB: LEGO1 0x1004d330 // STUB: LEGO1 0x1004d330
MxLong TowTrack::HandlePathStruct(LegoPathStructEvent& p_param) MxLong TowTrack::HandlePathStruct(LegoPathStructNotificationParam& p_param)
{ {
// TODO // TODO
return 0; return 0;
@ -109,7 +109,7 @@ void TowTrack::Exit()
} }
// STUB: LEGO1 0x1004d9e0 // STUB: LEGO1 0x1004d9e0
MxLong TowTrack::HandleControl(LegoControlManagerEvent& p_param) MxLong TowTrack::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
// TODO // TODO
return 0; return 0;

View file

@ -62,7 +62,7 @@
#include "legoworld.h" #include "legoworld.h"
#include "legoworldpresenter.h" #include "legoworldpresenter.h"
#include "misc.h" #include "misc.h"
#include "motocycle.h" #include "motorcycle.h"
#include "mxcompositemediapresenter.h" #include "mxcompositemediapresenter.h"
#include "mxcontrolpresenter.h" #include "mxcontrolpresenter.h"
#include "pizza.h" #include "pizza.h"

View file

@ -367,7 +367,7 @@ void PlayCamAnim(LegoPathActor* p_actor, MxBool p_unused, MxU32 p_location, MxBo
MxLong result = 0; MxLong result = 0;
if (world != NULL) { if (world != NULL) {
LegoPathStructEvent param(c_notificationPathStruct, p_actor, LegoPathStruct::c_camAnim, p_location); LegoPathStructNotificationParam param(c_notificationPathStruct, p_actor, LegoPathStruct::c_camAnim, p_location);
result = world->Notify(param); result = world->Notify(param);
} }

View file

@ -16,6 +16,14 @@ DECOMP_SIZE_ASSERT(CursorVariable, 0x24)
DECOMP_SIZE_ASSERT(WhoAmIVariable, 0x24) DECOMP_SIZE_ASSERT(WhoAmIVariable, 0x24)
DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24) DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24)
// GLOBAL: LEGO1 0x100f3994
// STRING: LEGO1 0x100f3988
const char* g_varMOTOSPEED = "motoSPEED";
// GLOBAL: LEGO1 0x100f3998
// STRING: LEGO1 0x100f397c
const char* g_varMOTOFUEL = "motoFUEL";
// GLOBAL: LEGO1 0x100f39b8 // GLOBAL: LEGO1 0x100f39b8
// STRING: LEGO1 0x100f39ac // STRING: LEGO1 0x100f39ac
const char* g_varAMBULSPEED = "ambulSPEED"; const char* g_varAMBULSPEED = "ambulSPEED";

View file

@ -175,27 +175,27 @@ MxBool MxControlPresenter::FUN_10044270(MxS32 p_x, MxS32 p_y, MxVideoPresenter*
} }
// FUNCTION: LEGO1 0x10044480 // FUNCTION: LEGO1 0x10044480
MxBool MxControlPresenter::FUN_10044480(LegoControlManagerEvent* p_event, MxPresenter* p_presenter) MxBool MxControlPresenter::FUN_10044480(LegoControlManagerNotificationParam* p_param, MxPresenter* p_presenter)
{ {
if (IsEnabled()) { if (IsEnabled()) {
switch (p_event->GetNotification()) { switch (p_param->GetNotification()) {
case c_notificationButtonUp: case c_notificationButtonUp:
if (m_unk0x4c == 0 || m_unk0x4c == 2 || m_unk0x4c == 3) { if (m_unk0x4c == 0 || m_unk0x4c == 2 || m_unk0x4c == 3) {
p_event->SetClickedObjectId(m_action->GetObjectId()); p_param->SetClickedObjectId(m_action->GetObjectId());
p_event->SetClickedAtom(m_action->GetAtomId().GetInternal()); p_param->SetClickedAtom(m_action->GetAtomId().GetInternal());
VTable0x6c(0); VTable0x6c(0);
p_event->SetNotification(c_notificationControl); p_param->SetNotification(c_notificationControl);
p_event->SetUnknown0x28(m_unk0x4e); p_param->SetUnknown0x28(m_unk0x4e);
return TRUE; return TRUE;
} }
break; break;
case c_notificationButtonDown: case c_notificationButtonDown:
if (FUN_10044270(p_event->GetX(), p_event->GetY(), (MxVideoPresenter*) p_presenter)) { if (FUN_10044270(p_param->GetX(), p_param->GetY(), (MxVideoPresenter*) p_presenter)) {
p_event->SetClickedObjectId(m_action->GetObjectId()); p_param->SetClickedObjectId(m_action->GetObjectId());
p_event->SetClickedAtom(m_action->GetAtomId().GetInternal()); p_param->SetClickedAtom(m_action->GetAtomId().GetInternal());
VTable0x6c(m_unk0x56); VTable0x6c(m_unk0x56);
p_event->SetNotification(c_notificationControl); p_param->SetNotification(c_notificationControl);
p_event->SetUnknown0x28(m_unk0x4e); p_param->SetUnknown0x28(m_unk0x4e);
return TRUE; return TRUE;
} }
break; break;

View file

@ -10,7 +10,7 @@
#include "mxticklemanager.h" #include "mxticklemanager.h"
DECOMP_SIZE_ASSERT(LegoControlManager, 0x60) DECOMP_SIZE_ASSERT(LegoControlManager, 0x60)
DECOMP_SIZE_ASSERT(LegoControlManagerEvent, 0x2c) DECOMP_SIZE_ASSERT(LegoControlManagerNotificationParam, 0x2c)
// FUNCTION: LEGO1 0x10028520 // FUNCTION: LEGO1 0x10028520
LegoControlManager::LegoControlManager() LegoControlManager::LegoControlManager()

View file

@ -51,7 +51,7 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
case c_d: { case c_d: {
p_actor->VTable0x58(p_data); p_actor->VTable0x58(p_data);
LegoPathStructEvent param(c_notificationPathStruct, p_actor, m_name[2], p_data); LegoPathStructNotificationParam param(c_notificationPathStruct, p_actor, m_name[2], p_data);
p_actor->Notify(param); p_actor->Notify(param);
LegoWorld* world = CurrentWorld(); LegoWorld* world = CurrentWorld();
@ -80,7 +80,7 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
case c_s: { case c_s: {
LegoWorld* world = CurrentWorld(); LegoWorld* world = CurrentWorld();
if (world != NULL) { if (world != NULL) {
LegoPathStructEvent param(c_notificationPathStruct, p_actor, m_name[2], p_data); LegoPathStructNotificationParam param(c_notificationPathStruct, p_actor, m_name[2], p_data);
if (world->Notify(param) != 0) { if (world->Notify(param) != 0) {
break; break;
@ -93,7 +93,7 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
case c_w: { case c_w: {
LegoWorld* world = CurrentWorld(); LegoWorld* world = CurrentWorld();
if (world != NULL) { if (world != NULL) {
LegoPathStructEvent param(c_notificationPathStruct, p_actor, m_name[2], p_data); LegoPathStructNotificationParam param(c_notificationPathStruct, p_actor, m_name[2], p_data);
NotificationManager()->Send(world, param); NotificationManager()->Send(world, param);
} }
break; break;

View file

@ -32,7 +32,7 @@ MxLong CarRace::HandleEndAction(MxEndActionNotificationParam&)
} }
// STUB: LEGO1 0x100170e0 // STUB: LEGO1 0x100170e0
MxLong CarRace::HandlePathStruct(LegoPathStructEvent&) MxLong CarRace::HandlePathStruct(LegoPathStructNotificationParam&)
{ {
// TODO // TODO
return 0; return 0;

View file

@ -26,7 +26,7 @@ MxLong JetskiRace::HandleClick(LegoEventNotificationParam&)
} }
// STUB: LEGO1 0x100166a0 // STUB: LEGO1 0x100166a0
MxLong JetskiRace::HandlePathStruct(LegoPathStructEvent&) MxLong JetskiRace::HandlePathStruct(LegoPathStructNotificationParam&)
{ {
return 0; return 0;
} }

View file

@ -36,7 +36,7 @@ LegoRace::LegoRace()
} }
// FUNCTION: LEGO1 0x10015b70 // FUNCTION: LEGO1 0x10015b70
MxLong LegoRace::HandlePathStruct(LegoPathStructEvent&) MxLong LegoRace::HandlePathStruct(LegoPathStructNotificationParam&)
{ {
return 0; return 0;
} }
@ -102,7 +102,7 @@ MxLong LegoRace::Notify(MxParam& p_param)
result = HandleClick((LegoEventNotificationParam&) p_param); result = HandleClick((LegoEventNotificationParam&) p_param);
break; break;
case c_notificationPathStruct: case c_notificationPathStruct:
result = HandlePathStruct((LegoPathStructEvent&) p_param); result = HandlePathStruct((LegoPathStructNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
GameState()->SwitchArea(m_destLocation); GameState()->SwitchArea(m_destLocation);

View file

@ -60,7 +60,7 @@ MxLong ElevatorBottom::Notify(MxParam& p_param)
if (m_worldStarted) { if (m_worldStarted) {
switch (((MxNotificationParam&) p_param).GetNotification()) { switch (((MxNotificationParam&) p_param).GetNotification()) {
case c_notificationControl: case c_notificationControl:
ret = HandleControl((LegoControlManagerEvent&) p_param); ret = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
GameState()->SwitchArea(m_destLocation); GameState()->SwitchArea(m_destLocation);
@ -80,7 +80,7 @@ void ElevatorBottom::ReadyWorld()
} }
// FUNCTION: LEGO1 0x100181d0 // FUNCTION: LEGO1 0x100181d0
MxLong ElevatorBottom::HandleControl(LegoControlManagerEvent& p_param) MxLong ElevatorBottom::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxLong result = 0; MxLong result = 0;

View file

@ -111,10 +111,10 @@ MxLong GasStation::Notify(MxParam& p_param)
result = HandleKeyPress((((LegoEventNotificationParam&) p_param)).GetKey()); result = HandleKeyPress((((LegoEventNotificationParam&) p_param)).GetKey());
break; break;
case c_notificationButtonDown: case c_notificationButtonDown:
result = HandleButtonDown(((LegoControlManagerEvent&) p_param)); result = HandleButtonDown(((LegoControlManagerNotificationParam&) p_param));
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
GameState()->SwitchArea(m_destLocation); GameState()->SwitchArea(m_destLocation);
@ -306,14 +306,14 @@ MxLong GasStation::HandleKeyPress(MxS8 p_key)
} }
// STUB: LEGO1 0x10005960 // STUB: LEGO1 0x10005960
MxLong GasStation::HandleButtonDown(LegoControlManagerEvent& p_param) MxLong GasStation::HandleButtonDown(LegoControlManagerNotificationParam& p_param)
{ {
// TODO // TODO
return 0; return 0;
} }
// FUNCTION: LEGO1 0x10005b20 // FUNCTION: LEGO1 0x10005b20
MxLong GasStation::HandleControl(LegoControlManagerEvent& p_param) MxLong GasStation::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
if (p_param.GetUnknown0x28() == 1) { if (p_param.GetUnknown0x28() == 1) {
MxDSAction action; MxDSAction action;

View file

@ -120,10 +120,10 @@ MxLong Hospital::Notify(MxParam& p_param)
result = HandleKeyPress((((LegoEventNotificationParam&) p_param)).GetKey()); result = HandleKeyPress((((LegoEventNotificationParam&) p_param)).GetKey());
break; break;
case c_notificationButtonDown: case c_notificationButtonDown:
result = HandleButtonDown(((LegoControlManagerEvent&) p_param)); result = HandleButtonDown(((LegoControlManagerNotificationParam&) p_param));
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
if (m_destLocation != LegoGameState::e_undefined) { if (m_destLocation != LegoGameState::e_undefined) {
@ -396,7 +396,7 @@ MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param)
} }
// FUNCTION: LEGO1 0x10075710 // FUNCTION: LEGO1 0x10075710
MxLong Hospital::HandleButtonDown(LegoControlManagerEvent& p_param) MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param)
{ {
if (m_unk0x100 == 1) { if (m_unk0x100 == 1) {
LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY()); LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY());
@ -552,7 +552,7 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerEvent& p_param)
} }
// FUNCTION: LEGO1 0x10075f90 // FUNCTION: LEGO1 0x10075f90
MxBool Hospital::HandleControl(LegoControlManagerEvent& p_param) MxBool Hospital::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
if (p_param.GetUnknown0x28() == 1) { if (p_param.GetUnknown0x28() == 1) {
switch (p_param.GetClickedObjectId()) { switch (p_param.GetClickedObjectId()) {

View file

@ -254,7 +254,7 @@ MxLong Infocenter::Notify(MxParam& p_param)
); );
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
StopBookAnimation(); StopBookAnimation();
@ -952,7 +952,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
} }
// FUNCTION: LEGO1 0x10070370 // FUNCTION: LEGO1 0x10070370
MxU8 Infocenter::HandleControl(LegoControlManagerEvent& p_param) MxU8 Infocenter::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
if (p_param.GetUnknown0x28() == 1) { if (p_param.GetUnknown0x28() == 1) {
m_infoManDialogueTimer = 0; m_infoManDialogueTimer = 0;

View file

@ -69,7 +69,7 @@ MxLong InfocenterDoor::Notify(MxParam& p_param)
} }
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
GameState()->SwitchArea(m_destLocation); GameState()->SwitchArea(m_destLocation);
@ -90,7 +90,7 @@ void InfocenterDoor::ReadyWorld()
} }
// FUNCTION: LEGO1 0x10037a90 // FUNCTION: LEGO1 0x10037a90
MxLong InfocenterDoor::HandleControl(LegoControlManagerEvent& p_param) MxLong InfocenterDoor::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxLong result = 0; MxLong result = 0;

View file

@ -23,7 +23,7 @@
#include "legovariables.h" #include "legovariables.h"
#include "legovideomanager.h" #include "legovideomanager.h"
#include "misc.h" #include "misc.h"
#include "motocycle.h" #include "motorcycle.h"
#include "mxactionnotificationparam.h" #include "mxactionnotificationparam.h"
#include "mxbackgroundaudiomanager.h" #include "mxbackgroundaudiomanager.h"
#include "mxmisc.h" #include "mxmisc.h"
@ -152,7 +152,7 @@ MxLong Isle::Notify(MxParam& p_param)
} }
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationEndAnim: case c_notificationEndAnim:
switch (m_act1state->m_unk0x018) { switch (m_act1state->m_unk0x018) {
@ -168,7 +168,7 @@ MxLong Isle::Notify(MxParam& p_param)
} }
break; break;
case c_notificationPathStruct: case c_notificationPathStruct:
result = HandlePathStruct((LegoPathStructEvent&) p_param); result = HandlePathStruct((LegoPathStructNotificationParam&) p_param);
break; break;
case c_notificationType20: case c_notificationType20:
Enable(TRUE); Enable(TRUE);
@ -287,7 +287,7 @@ void Isle::ReadyWorld()
} }
// FUNCTION: LEGO1 0x10031030 // FUNCTION: LEGO1 0x10031030
MxLong Isle::HandleControl(LegoControlManagerEvent& p_param) MxLong Isle::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
if (p_param.GetUnknown0x28() == 1) { if (p_param.GetUnknown0x28() == 1) {
MxDSAction action; MxDSAction action;
@ -469,7 +469,7 @@ void Isle::UpdateGlobe()
} }
// FUNCTION: LEGO1 0x100315f0 // FUNCTION: LEGO1 0x100315f0
MxLong Isle::HandlePathStruct(LegoPathStructEvent& p_param) MxLong Isle::HandlePathStruct(LegoPathStructNotificationParam& p_param)
{ {
MxLong result = 0; MxLong result = 0;
@ -1006,7 +1006,7 @@ MxLong Isle::HandleTransitionEnd()
FUN_10032d30(IsleScript::c_MotoBikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE); FUN_10032d30(IsleScript::c_MotoBikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE);
if (!m_act1state->m_unk0x01f) { if (!m_act1state->m_unk0x01f) {
m_motocycle->FUN_10035e10(); m_motocycle->ActivateSceneActions();
} }
break; break;
case LegoGameState::e_copter: case LegoGameState::e_copter:

View file

@ -76,7 +76,7 @@ MxLong JukeBox::Notify(MxParam& p_param)
if (m_worldStarted) { if (m_worldStarted) {
switch (((MxNotificationParam&) p_param).GetNotification()) { switch (((MxNotificationParam&) p_param).GetNotification()) {
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
GameState()->SwitchArea(m_destLocation); GameState()->SwitchArea(m_destLocation);
@ -123,7 +123,7 @@ void JukeBox::ReadyWorld()
// FUNCTION: LEGO1 0x1005da70 // FUNCTION: LEGO1 0x1005da70
// FUNCTION: BETA10 0x10037f6d // FUNCTION: BETA10 0x10037f6d
MxBool JukeBox::HandleControl(LegoControlManagerEvent& p_param) MxBool JukeBox::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxStillPresenter* presenter; MxStillPresenter* presenter;

View file

@ -83,7 +83,7 @@ MxLong Police::Notify(MxParam& p_param)
result = HandleKeyPress(((LegoEventNotificationParam&) p_param)); result = HandleKeyPress(((LegoEventNotificationParam&) p_param));
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
GameState()->SwitchArea(m_destLocation); GameState()->SwitchArea(m_destLocation);
@ -103,7 +103,7 @@ void Police::ReadyWorld()
} }
// FUNCTION: LEGO1 0x1005e550 // FUNCTION: LEGO1 0x1005e550
MxLong Police::HandleControl(LegoControlManagerEvent& p_param) MxLong Police::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
if (p_param.GetUnknown0x28() == 1) { if (p_param.GetUnknown0x28() == 1) {
switch (p_param.GetClickedObjectId()) { switch (p_param.GetClickedObjectId()) {

View file

@ -115,7 +115,7 @@ MxLong RegistrationBook::Notify(MxParam& p_param)
m_registerDialogueTimer = Timer()->GetTime(); m_registerDialogueTimer = Timer()->GetTime();
break; break;
case c_notificationControl: case c_notificationControl:
result = HandleControl((LegoControlManagerEvent&) p_param); result = HandleControl((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationPathStruct: case c_notificationPathStruct:
result = HandleNotification19(p_param); result = HandleNotification19(p_param);
@ -210,7 +210,7 @@ MxLong RegistrationBook::HandleKeyPress(MxU8 p_key)
} }
// FUNCTION: LEGO1 0x100774a0 // FUNCTION: LEGO1 0x100774a0
MxLong RegistrationBook::HandleControl(LegoControlManagerEvent& p_param) MxLong RegistrationBook::HandleControl(LegoControlManagerNotificationParam& p_param)
{ {
MxS16 unk0x28 = p_param.GetUnknown0x28(); MxS16 unk0x28 = p_param.GetUnknown0x28();

View file

@ -105,7 +105,7 @@ MxLong Score::Notify(MxParam& p_param)
ret = 1; ret = 1;
break; break;
case c_notificationControl: case c_notificationControl:
ret = FUN_100016d0((LegoControlManagerEvent&) p_param); ret = FUN_100016d0((LegoControlManagerNotificationParam&) p_param);
break; break;
case c_notificationTransitioned: case c_notificationTransitioned:
DeleteObjects(g_infoscorScript, InfoscorScript::c_LegoBox1_Flc, InfoscorScript::c_LegoBox3_Flc); DeleteObjects(g_infoscorScript, InfoscorScript::c_LegoBox1_Flc, InfoscorScript::c_LegoBox3_Flc);
@ -166,7 +166,7 @@ void Score::ReadyWorld()
} }
// FUNCTION: LEGO1 0x100016d0 // FUNCTION: LEGO1 0x100016d0
MxLong Score::FUN_100016d0(LegoControlManagerEvent& p_param) MxLong Score::FUN_100016d0(LegoControlManagerNotificationParam& p_param)
{ {
MxS16 unk0x28 = p_param.GetUnknown0x28(); MxS16 unk0x28 = p_param.GetUnknown0x28();