isle-portable/LEGO1/mxpresenter.h
DmitriLeon2000 34e09c2bb3
Clean up Destroy pattern everywhere, fix missing overrides (#202)
* Rename MxMusicPresenter function vtable38

* Rename MxMusicPresenter function vtable38

* MxMediaPresenter, MxMusicManager and MxMusicPresenter
* Refactoring Destroy functions

* MxMediaManager & MxMusicPresenter

* Fix some vtable declarations, more renames

* Fix MxEventManager

* More rename fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-13 18:43:45 +02:00

92 lines
2.8 KiB
C++

#ifndef MXPRESENTER_H
#define MXPRESENTER_H
#include "mxcore.h"
#include "mxpoint32.h"
#include "mxdsaction.h"
#include "mxcriticalsection.h"
#include "mxomni.h"
#include "decomp.h"
class MxStreamController;
// VTABLE 0x100d4d38
class MxPresenter : public MxCore
{
public:
enum TickleState
{
TickleState_Idle = 0,
TickleState_Ready,
TickleState_Starting,
TickleState_Streaming,
TickleState_Repeating,
TickleState_unk5,
TickleState_Done,
};
MxPresenter() { Init(); }
__declspec(dllexport) virtual ~MxPresenter(); // vtable+0x0
__declspec(dllexport) virtual MxResult Tickle() override; // vtable+0x8
// OFFSET: LEGO1 0x1000bfe0
inline virtual const char *ClassName() const override// vtable+0xc
{
// 0x100f0740
return "MxPresenter";
}
// OFFSET: LEGO1 0x1000bff0
inline virtual MxBool IsA(const char *name) const override// vtable+0x10
{
return !strcmp(name, MxPresenter::ClassName()) || MxCore::IsA(name);
}
virtual void VTable0x14(); // vtable+0x14
virtual void ReadyTickle(); // vtable+0x18
virtual void StartingTickle(); // vtable+0x1c
virtual void StreamingTickle(); // vtable+0x20
virtual void RepeatingTickle(); // vtable+0x24
virtual void Unk5Tickle(); // vtable+0x28
protected:
__declspec(dllexport) virtual void DoneTickle(); // vtable+0x2c
__declspec(dllexport) virtual void ParseExtra(); // vtable+0x30
public:
virtual MxResult AddToManager(); // vtable+0x34
virtual void Destroy(); // vtable+0x38
__declspec(dllexport) virtual MxLong StartAction(MxStreamController *, MxDSAction *); // vtable+0x3c
__declspec(dllexport) virtual void EndAction(); // vtable+0x40
virtual void SetTickleState(TickleState p_tickleState); // vtable+0x44
virtual MxBool HasTickleStatePassed(TickleState p_tickleState); // vtable+0x48
virtual undefined4 PutData(); // vtable+0x4c
virtual MxBool IsHit(MxS32 p_x, MxS32 p_y); // vtable+0x50
__declspec(dllexport) virtual void Enable(MxBool p_enable); // vtable+0x54
MxBool IsEnabled();
inline MxS32 GetCurrentTickleState() const { return this->m_currentTickleState; }
inline MxPoint32 GetLocation() const { return this->m_location; }
inline MxS32 GetLocationX() const { return this->m_location.m_x; }
inline MxS32 GetLocationY() const { return this->m_location.m_y; }
inline MxS32 GetDisplayZ() const { return this->m_displayZ; }
inline MxDSAction *GetAction() const { return this->m_action; }
protected:
__declspec(dllexport) void Init();
void SendTo_unkPresenter(MxOmni *);
TickleState m_currentTickleState; // 0x8
MxU32 m_previousTickleStates; // 0x0c
MxPoint32 m_location; // 0x10
MxS32 m_displayZ; // 0x18
MxDSAction *m_action; // 0x1c
MxCriticalSection m_criticalSection; // 0x20
MxPresenter *m_unkPresenter; // 0x3c
};
char *PresenterNameDispatch(const MxDSAction &);
#endif // MXPRESENTER_H