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 "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;

View File

@ -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<MxNotification *> *m_queue;
List<MxNotification *> *m_sendList;
MxCriticalSection m_lock;
int m_unk2c;
List<unsigned int> m_listenerIds;
MxBool m_active;
private:
List<MxNotification *> *m_queue; // 0x8
List<MxNotification *> *m_sendList; // 0xc
MxCriticalSection m_lock; // 0x10
int m_unk2c; // 0x2c
List<unsigned int> 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

View File

@ -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();
};