MxTickleManager mostly done (#94)

* Checkpoint to show MxTickleManager::SetClientTickleInterval match.

* Match MxTickleManager::~MxTickleManager, obliterate MxTickleManager::SetClientTickleInterval.

* Make conditional more realistic, move MxTime to mxtypes.h, add TODO for MxTickleManager::Tickle.
This commit is contained in:
pewpew
2023-08-03 13:19:05 -05:00
committed by GitHub
parent 932baa2a87
commit 0f92e345b3
6 changed files with 184 additions and 11 deletions

View File

@@ -2,20 +2,77 @@
#define MXTICKLEMANAGER_H
#include "mxcore.h"
#include "mxtypes.h"
#include "compat.h"
class MxTickleClient
{
public:
MxTickleClient(MxCore *p_client, MxTime p_interval);
inline MxCore *GetClient() const
{
return m_client;
}
inline MxTime GetTickleInterval() const
{
return m_interval;
}
inline MxTime GetLastUpdateTime() const
{
return m_lastUpdateTime;
}
inline MxU16 GetFlags() const
{
return m_flags;
}
inline void SetTickleInterval(MxTime p_interval)
{
m_interval = p_interval;
}
inline void SetLastUpdateTime(MxTime p_lastUpdateTime)
{
m_lastUpdateTime = p_lastUpdateTime;
}
inline void SetFlags(MxU16 flags)
{
m_flags = flags;
}
private:
MxCore *m_client; // 0x0
MxTime m_interval; // 0x4
MxTime m_lastUpdateTime; // 0x8
MxU16 m_flags; // 0xc
};
class MxTickleClientPtrList : public List<MxTickleClient *>
{};
// VTABLE 0x100d86d8
class MxTickleManager : public MxCore
{
public:
virtual ~MxTickleManager();
inline MxTickleManager() : MxCore(), m_clients() {}
virtual ~MxTickleManager(); // vtable+0x0 (scalar deleting destructor)
virtual MxLong Tickle();
virtual const char *ClassName() const;
virtual MxBool IsA(const char *name) const;
virtual void Register(MxCore *p_listener, int p_milliseconds);
virtual void Unregister(MxCore *p_listener);
virtual void vtable1c(void *v, int p);
virtual void vtable20();
virtual MxResult Tickle(); // vtable+0x8
virtual void RegisterClient(MxCore *p_client, MxTime p_interval); // vtable+0x14
virtual void UnregisterClient(MxCore *p_client); // vtable+0x18
virtual void SetClientTickleInterval(MxCore *p_client, MxTime p_interval); // vtable+0x1c
virtual MxTime GetClientTickleInterval(MxCore *p_client); // vtable+0x20
private:
MxTickleClientPtrList m_clients; // 0x8
};
#define TICKLE_MANAGER_NOT_FOUND 0x80000000
#endif // MXTICKLEMANAGER_H