Checkpoint before anything too crazy with param

This commit is contained in:
Brendan Dougherty 2023-07-08 18:41:03 -05:00
parent e98319995b
commit 7da2d6a4e8
3 changed files with 38 additions and 42 deletions

View File

@ -1,21 +1,21 @@
#include "legoomni.h" #include "legoomni.h"
#include "mxautolocker.h" #include "mxautolocker.h"
#include "mxcore.h"
#include "mxnotificationmanager.h" #include "mxnotificationmanager.h"
#include "mxparam.h"
#include "mxtypes.h" #include "mxtypes.h"
// OFFSET: LEGO1 0x100ac220 STUB // OFFSET: LEGO1 0x100ac220
MxNotification::MxNotification(MxCore *p_destination, void *p_vtable) MxNotification::MxNotification(MxCore *p_destination, MxParam *p_param)
{ {
m_destination = p_destination; m_destination = p_destination;
// TODO: Call p_vtable+0x4, assign result to m_param. m_param = p_param->Clone();
m_param = NULL;
} }
// OFFSET: LEGO1 0x100ac240 STUB // OFFSET: LEGO1 0x100ac240
MxNotification::~MxNotification() MxNotification::~MxNotification()
{ {
// TODO delete m_param;
//delete m_param;
} }
// OFFSET: LEGO1 0x100ac250 // OFFSET: LEGO1 0x100ac250
@ -35,10 +35,7 @@ MxNotificationManager::~MxNotificationManager()
delete m_queue; delete m_queue;
m_queue = NULL; m_queue = NULL;
MxTickleManager *tickleManager = TickleManager(); TickleManager()->vtable18(this);
// TODO
//tickleManager->Unregister(this);
tickleManager->vtable18();
} }
// OFFSET: LEGO1 0x100ac800 // OFFSET: LEGO1 0x100ac800
@ -77,10 +74,7 @@ MxResult MxNotificationManager::Create(int p_unk1, int p_unk2)
result = FAILURE; result = FAILURE;
} }
else { else {
MxTickleManager *tickleManager = TickleManager(); TickleManager()->vtable14(this, 10);
// TODO
//tickleManager->Register(this, 10);
tickleManager->vtable14();
} }
return result; return result;
@ -122,7 +116,7 @@ void MxNotificationManager::FlushPending(MxCore *p_listener)
} }
// OFFSET: LEGO1 0x100ac6c0 // OFFSET: LEGO1 0x100ac6c0
MxResult MxNotificationManager::Send(MxCore *p_listener, void *p_vtable) MxResult MxNotificationManager::Send(MxCore *p_listener, MxParam *p_param)
{ {
MxAutoLocker lock(&m_lock); MxAutoLocker lock(&m_lock);
@ -135,7 +129,7 @@ MxResult MxNotificationManager::Send(MxCore *p_listener, void *p_vtable)
return FAILURE; return FAILURE;
} }
else { else {
MxNotification *notif = new MxNotification(p_listener, p_vtable); MxNotification *notif = new MxNotification(p_listener, p_param);
if (notif != NULL) { if (notif != NULL) {
m_queue->push_back(notif); m_queue->push_back(notif);
return SUCCESS; return SUCCESS;

View File

@ -9,38 +9,38 @@
class MxNotification class MxNotification
{ {
public: public:
MxCore *m_destination; MxCore *m_destination;
MxParam *m_param; MxParam *m_param;
MxNotification(MxCore *p_destination, void *p_vtable); MxNotification(MxCore *p_destination, MxParam *p_param);
~MxNotification(); ~MxNotification();
}; };
// VTABLE 0x100dc078 // VTABLE 0x100dc078
class MxNotificationManager : public MxCore class MxNotificationManager : public MxCore
{ {
private: private:
List<MxNotification *> *m_queue; List<MxNotification *> *m_queue; // 0x8
List<MxNotification *> *m_sendList; List<MxNotification *> *m_sendList; // 0xc
MxCriticalSection m_lock; MxCriticalSection m_lock; // 0x10
int m_unk2c; int m_unk2c; // 0x2c
List<unsigned int> m_listenerIds; List<unsigned int> m_listenerIds; // 0x30
MxBool m_active; MxBool m_active; // 0x3c
public: public:
MxNotificationManager(); MxNotificationManager();
virtual ~MxNotificationManager(); // vtable+0x0 virtual ~MxNotificationManager(); // vtable+0x0
virtual long Tickle(); // vtable+0x8 virtual long Tickle(); // vtable+0x8
// TODO: Where does this method come from? // TODO: Where does this method come from?
virtual MxResult Create(int p_unk1, int p_unk2); // vtable+0x14 virtual MxResult Create(int p_unk1, int p_unk2); // vtable+0x14
void Register(MxCore *p_listener); void Register(MxCore *p_listener);
void Unregister(MxCore *p_listener); void Unregister(MxCore *p_listener);
MxResult Send(MxCore *p_listener, void *p_vtable); MxResult Send(MxCore *p_listener, MxParam *p_param);
private: private:
void FlushPending(MxCore *p_listener); void FlushPending(MxCore *p_listener);
}; };
#endif // MXNOTIFICATIONMANAGER_H #endif // MXNOTIFICATIONMANAGER_H

View File

@ -12,8 +12,10 @@ class MxTickleManager : public MxCore
virtual MxLong Tickle(); virtual MxLong Tickle();
virtual const char *ClassName() const; virtual const char *ClassName() const;
virtual MxBool IsA(const char *name) const; virtual MxBool IsA(const char *name) const;
virtual void vtable14(); // May be Register(obj, milliseconds);
virtual void vtable18(); virtual void vtable14(MxCore *p_unk1, int p_unk2);
// May be Unregister(obj);
virtual void vtable18(MxCore *p_unk1);
virtual void vtable1c(void *v, int p); virtual void vtable1c(void *v, int p);
virtual void vtable20(); virtual void vtable20();
}; };