isle/LEGO1/mxticklemanager.h
pewpew 0f92e345b3
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.
2023-08-03 11:19:05 -07:00

78 lines
1.6 KiB
C++

#ifndef MXTICKLEMANAGER_H
#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:
inline MxTickleManager() : MxCore(), m_clients() {}
virtual ~MxTickleManager(); // vtable+0x0 (scalar deleting destructor)
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