diff --git a/LEGO1/mxnotificationmanager.cpp b/LEGO1/mxnotificationmanager.cpp index e3a8f263..4310cc02 100644 --- a/LEGO1/mxnotificationmanager.cpp +++ b/LEGO1/mxnotificationmanager.cpp @@ -1,21 +1,21 @@ #include "legoomni.h" #include "mxautolocker.h" +#include "mxcore.h" #include "mxnotificationmanager.h" +#include "mxparam.h" #include "mxtypes.h" -// OFFSET: LEGO1 0x100ac220 STUB -MxNotification::MxNotification(MxCore *p_destination, void *p_vtable) +// OFFSET: LEGO1 0x100ac220 +MxNotification::MxNotification(MxCore *p_destination, MxParam *p_param) { m_destination = p_destination; - // TODO: Call p_vtable+0x4, assign result to m_param. - m_param = NULL; + m_param = p_param->Clone(); } -// OFFSET: LEGO1 0x100ac240 STUB +// OFFSET: LEGO1 0x100ac240 MxNotification::~MxNotification() { - // TODO - //delete m_param; + delete m_param; } // OFFSET: LEGO1 0x100ac250 @@ -35,10 +35,7 @@ MxNotificationManager::~MxNotificationManager() delete m_queue; m_queue = NULL; - MxTickleManager *tickleManager = TickleManager(); - // TODO - //tickleManager->Unregister(this); - tickleManager->vtable18(); + TickleManager()->vtable18(this); } // OFFSET: LEGO1 0x100ac800 @@ -77,10 +74,7 @@ MxResult MxNotificationManager::Create(int p_unk1, int p_unk2) result = FAILURE; } else { - MxTickleManager *tickleManager = TickleManager(); - // TODO - //tickleManager->Register(this, 10); - tickleManager->vtable14(); + TickleManager()->vtable14(this, 10); } return result; @@ -122,7 +116,7 @@ void MxNotificationManager::FlushPending(MxCore *p_listener) } // 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); @@ -135,7 +129,7 @@ MxResult MxNotificationManager::Send(MxCore *p_listener, void *p_vtable) return FAILURE; } else { - MxNotification *notif = new MxNotification(p_listener, p_vtable); + MxNotification *notif = new MxNotification(p_listener, p_param); if (notif != NULL) { m_queue->push_back(notif); return SUCCESS; diff --git a/LEGO1/mxnotificationmanager.h b/LEGO1/mxnotificationmanager.h index 89c7374d..373c2cb7 100644 --- a/LEGO1/mxnotificationmanager.h +++ b/LEGO1/mxnotificationmanager.h @@ -9,38 +9,38 @@ class MxNotification { - public: - MxCore *m_destination; - MxParam *m_param; +public: + MxCore *m_destination; + MxParam *m_param; - MxNotification(MxCore *p_destination, void *p_vtable); - ~MxNotification(); + MxNotification(MxCore *p_destination, MxParam *p_param); + ~MxNotification(); }; // VTABLE 0x100dc078 class MxNotificationManager : public MxCore { - private: - List *m_queue; - List *m_sendList; - MxCriticalSection m_lock; - int m_unk2c; - List m_listenerIds; - MxBool m_active; +private: + List *m_queue; // 0x8 + List *m_sendList; // 0xc + MxCriticalSection m_lock; // 0x10 + int m_unk2c; // 0x2c + List m_listenerIds; // 0x30 + MxBool m_active; // 0x3c - public: - MxNotificationManager(); - virtual ~MxNotificationManager(); // vtable+0x0 +public: + MxNotificationManager(); + virtual ~MxNotificationManager(); // vtable+0x0 - virtual long Tickle(); // vtable+0x8 - // TODO: Where does this method come from? - virtual MxResult Create(int p_unk1, int p_unk2); // vtable+0x14 - void Register(MxCore *p_listener); - void Unregister(MxCore *p_listener); - MxResult Send(MxCore *p_listener, void *p_vtable); + virtual long Tickle(); // vtable+0x8 + // TODO: Where does this method come from? + virtual MxResult Create(int p_unk1, int p_unk2); // vtable+0x14 + void Register(MxCore *p_listener); + void Unregister(MxCore *p_listener); + MxResult Send(MxCore *p_listener, MxParam *p_param); - private: - void FlushPending(MxCore *p_listener); +private: + void FlushPending(MxCore *p_listener); }; #endif // MXNOTIFICATIONMANAGER_H diff --git a/LEGO1/mxticklemanager.h b/LEGO1/mxticklemanager.h index 60f2f14d..deebde2d 100644 --- a/LEGO1/mxticklemanager.h +++ b/LEGO1/mxticklemanager.h @@ -12,8 +12,10 @@ class MxTickleManager : public MxCore virtual MxLong Tickle(); virtual const char *ClassName() const; virtual MxBool IsA(const char *name) const; - virtual void vtable14(); - virtual void vtable18(); + // May be Register(obj, milliseconds); + 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 vtable20(); };