isle/LEGO1/mxcore.h
pewpew 4a50a9ff56
MxNotificationManager and MxParam initial work. (#78)
* MxNotificationManager initial work.

* Add .swp files to .gitignore.

* Checkpoint before anything too crazy with param

* Cleanup and add MxParam.

* Checkpoint for everything except MxNotificationManager::Register.

* Add int return type to MxCore::GetId instead of relying on implicit function nonsense.

* Add stlcompat.h so this can still be built on modern compilers, fix affected type size asserts.

* Switch to Mx types

* Add BUILD_COMPAT option to CMake so the project can still be built with modern compilers.

* Change vtable14 and vtable18 to Register and Unregister in MxTickleManager.

* Remove last unsigned int reference to id type.

* Remove MxList, use one inherited class per type. Improves accuracy again.

* Address compiler compatibility code review.

* Match MxNotificationManager::Register.

* Re-enable MxNotificationManager DECOMP_SIZE_ASSERT.
2023-07-15 23:43:08 -07:00

44 lines
762 B
C++

#ifndef MXCORE_H
#define MXCORE_H
#include <string.h>
#include "compat.h"
#include "mxtypes.h"
class MxParam;
// VTABLE 0x100dc0f8
// SIZE 0x8
class MxCore
{
public:
__declspec(dllexport) MxCore();
__declspec(dllexport) virtual ~MxCore(); // vtable+00
__declspec(dllexport) virtual MxResult Notify(MxParam &p); // vtable+04
virtual MxResult Tickle(); // vtable+08
// OFFSET: LEGO1 0x100144c0
inline virtual const char *ClassName() const // vtable+0c
{
// 0x100f007c
return "MxCore";
}
// OFFSET: LEGO1 0x100140d0
inline virtual MxBool IsA(const char *name) const // vtable+10
{
return !strcmp(name, MxCore::ClassName());
}
inline MxU32 GetId()
{
return m_id;
}
private:
MxU32 m_id;
};
#endif // MXCORE_H