mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-26 01:44:19 +00:00
Implement LegoControlManager (#500)
* Push changes * Update score.cpp * fix * Update score.h * Fixes/matches --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
@@ -25,13 +25,13 @@ public:
|
||||
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10036130
|
||||
// Ambulance::`scalar deleting destructor'
|
||||
|
||||
@@ -23,10 +23,10 @@ public:
|
||||
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10076880
|
||||
// Bike::`scalar deleting destructor'
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ public:
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#ifndef ISLEPATHACTOR_H
|
||||
#define ISLEPATHACTOR_H
|
||||
|
||||
#include "legocontrolmanager.h"
|
||||
#include "legopathactor.h"
|
||||
#include "legoworld.h"
|
||||
#include "mxtype17notificationparam.h"
|
||||
#include "mxtype18notificationparam.h"
|
||||
#include "mxtype19notificationparam.h"
|
||||
#include "mxtypes.h"
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
// FUNCTION: LEGO1 0x10002df0
|
||||
virtual MxU32 VTable0xd0() { return 0; } // vtable+0xd0
|
||||
// FUNCTION: LEGO1 0x10002e80
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam&) { return 0; } // vtable+0xd4
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent&) { return 0; } // vtable+0xd4
|
||||
// FUNCTION: LEGO1 0x10002e90
|
||||
virtual MxU32 VTable0xd8(MxType18NotificationParam&) { return 0; } // vtable+0xd8
|
||||
// FUNCTION: LEGO1 0x10002e00
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "decomp.h"
|
||||
#include "islepathactor.h"
|
||||
#include "mxtype17notificationparam.h"
|
||||
#include "legocontrolmanager.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d9ec8
|
||||
// SIZE 0x164
|
||||
@@ -24,11 +24,11 @@ public:
|
||||
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam&) override; // vtable+0xd4
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent&) override; // vtable+0xd4
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1007e5c0
|
||||
// Jetski::`scalar deleting destructor'
|
||||
|
||||
@@ -2,9 +2,40 @@
|
||||
#define LEGOCONTROLMANAGER_H
|
||||
|
||||
#include "legoeventnotificationparam.h"
|
||||
#include "legoinputmanager.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxpresenterlist.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a98
|
||||
// SIZE 0x2c
|
||||
class LegoControlManagerEvent : public LegoEventNotificationParam {
|
||||
public:
|
||||
inline LegoControlManagerEvent() : LegoEventNotificationParam()
|
||||
{
|
||||
m_clickedObjectId = -1;
|
||||
m_clickedAtom = NULL;
|
||||
}
|
||||
|
||||
inline MxS32 GetClickedObjectId() const { return m_clickedObjectId; }
|
||||
inline const char* GetClickedAtom() const { return m_clickedAtom; }
|
||||
inline MxS16 GetUnknown0x28() const { return m_unk0x28; }
|
||||
|
||||
inline void SetClickedObjectId(MxS32 p_clickedObjectId) { m_clickedObjectId = p_clickedObjectId; }
|
||||
inline void SetClickedAtom(const char* p_clickedAtom) { m_clickedAtom = p_clickedAtom; }
|
||||
inline void SetUnknown0x28(MxS16 p_unk0x28) { m_unk0x28 = p_unk0x28; }
|
||||
|
||||
private:
|
||||
MxS32 m_clickedObjectId; // 0x20
|
||||
const char* m_clickedAtom; // 0x24
|
||||
MxS16 m_unk0x28; // 0x28
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028bf0
|
||||
// LegoControlManagerEvent::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028c60
|
||||
// LegoControlManagerEvent::~LegoControlManagerEvent
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a80
|
||||
class LegoControlManager : public MxCore {
|
||||
public:
|
||||
@@ -31,6 +62,10 @@ public:
|
||||
void Unregister(MxCore* p_listener);
|
||||
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
|
||||
void FUN_100293c0(undefined4, const char*, undefined2);
|
||||
void FUN_100294e0(MxS32 p_x, MxS32 p_y);
|
||||
MxBool FUN_10029630();
|
||||
MxBool FUN_10029750();
|
||||
void FUN_100292e0();
|
||||
|
||||
inline undefined4 GetUnknown0x0c() { return m_unk0x0c; }
|
||||
inline undefined GetUnknown0x10() { return m_unk0x10; }
|
||||
@@ -39,10 +74,13 @@ public:
|
||||
// LegoControlManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
undefined m_unk0x10; // 0x10
|
||||
undefined m_padding0x14[0x4c]; // 0x14
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
MxBool m_unk0x10; // 0x10
|
||||
MxPresenter* m_unk0x14; // 0x14
|
||||
LegoControlManagerEvent m_event; // 0x18
|
||||
MxPresenterList* m_presenterList; // 0x44
|
||||
LegoNotifyList m_notifyList; // 0x48
|
||||
};
|
||||
|
||||
#endif // LEGOCONTROLMANAGER_H
|
||||
|
||||
@@ -39,6 +39,10 @@ public:
|
||||
inline MxS32 GetY() const { return m_y; }
|
||||
|
||||
inline void SetROI(LegoROI* p_roi) { m_roi = p_roi; }
|
||||
inline void SetModifier(MxU8 p_modifier) { m_modifier = p_modifier; }
|
||||
inline void SetKey(MxU8 p_key) { m_key = p_key; }
|
||||
inline void SetX(MxS32 p_x) { m_x = p_x; }
|
||||
inline void SetY(MxS32 p_y) { m_y = p_y; }
|
||||
|
||||
protected:
|
||||
MxU8 m_modifier; // 0x0c
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
class LegoControlManager;
|
||||
|
||||
extern MxS32 g_unk0x100f31b0;
|
||||
extern const char* g_unk0x100f31b4;
|
||||
|
||||
// VTABLE: LEGO1 0x100d87b8
|
||||
// class MxCollection<LegoEventNotificationParam>
|
||||
|
||||
@@ -171,6 +174,9 @@ private:
|
||||
// SYNTHETIC: LEGO1 0x10028b30
|
||||
// MxPtrList<MxCore>::`scalar deleting destructor'
|
||||
|
||||
// FUNCTION: LEGO1 0x10028ba0
|
||||
// LegoNotifyList::~LegoNotifyList
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028fd0
|
||||
// LegoNotifyListCursor::`scalar deleting destructor'
|
||||
|
||||
|
||||
@@ -23,12 +23,12 @@ public:
|
||||
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100359d0
|
||||
// Motocycle::`scalar deleting destructor'
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include "decomp.h"
|
||||
#include "mxcompositepresenter.h"
|
||||
|
||||
class LegoControlManagerEvent;
|
||||
|
||||
// VTABLE: LEGO1 0x100d7b88
|
||||
// SIZE 0x5c
|
||||
class MxControlPresenter : public MxCompositePresenter {
|
||||
@@ -34,11 +36,12 @@ public:
|
||||
virtual void Enable(MxBool p_enable) override; // vtable+0x54
|
||||
virtual MxBool VTable0x64(undefined4 p_undefined) override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_unk0x50); // vtable+0x68
|
||||
virtual void VTable0x6c(undefined4); // vtable+0x6c
|
||||
virtual void VTable0x6c(undefined2); // vtable+0x6c
|
||||
|
||||
MxBool FUN_10044480(LegoControlManagerEvent* p_event, MxPresenter* p_presenter);
|
||||
|
||||
private:
|
||||
MxBool FUN_10044270(undefined4, undefined4, undefined4*);
|
||||
MxBool FUN_10044480(undefined4, undefined4*);
|
||||
MxBool FUN_10044270(MxS32 p_x, MxS32 p_y, MxPresenter* p_presenter);
|
||||
void FUN_10044540(undefined2);
|
||||
|
||||
undefined2 m_unk0x4c; // 0x4c
|
||||
@@ -46,6 +49,7 @@ private:
|
||||
MxBool m_unk0x50; // 0x50
|
||||
undefined2 m_unk0x52; // 0x52
|
||||
undefined2 m_unk0x54; // 0x54
|
||||
undefined2 m_unk0x56; // 0x56
|
||||
MxS16* m_unk0x58; // 0x58
|
||||
};
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef SCORE_H
|
||||
#define SCORE_H
|
||||
|
||||
#include "legocontrolmanager.h"
|
||||
#include "legoeventnotificationparam.h"
|
||||
#include "legoworld.h"
|
||||
#include "mxactionnotificationparam.h"
|
||||
#include "mxtype17notificationparam.h"
|
||||
#include "scorestate.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d4018
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
|
||||
void Paint();
|
||||
MxLong FUN_10001510(MxEndActionNotificationParam& p_param);
|
||||
MxLong FUN_100016d0(MxType17NotificationParam& p_param);
|
||||
MxLong FUN_100016d0(LegoControlManagerEvent& p_param);
|
||||
void FillArea(MxU32 p_x, MxU32 p_y, MxS16 p_color);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -23,11 +23,11 @@ public:
|
||||
return !strcmp(p_name, SkateBoard::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd0() override; // vtable+0xd0
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd0() override; // vtable+0xd0
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000ff60
|
||||
// SkateBoard::`scalar deleting destructor'
|
||||
|
||||
@@ -27,7 +27,7 @@ public:
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8
|
||||
virtual MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||
virtual void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
Reference in New Issue
Block a user