isle/LEGO1/mxomni.h

108 lines
4.4 KiB
C
Raw Normal View History

2023-04-27 22:19:39 -04:00
#ifndef MXOMNI_H
#define MXOMNI_H
#include "mxcore.h"
#include "mxcriticalsection.h"
2023-10-24 19:38:27 -04:00
#include "mxstring.h"
class MxAtomId;
class MxAtomIdCounterSet;
class MxDSAction;
class MxEventManager;
class MxMusicManager;
class MxNotificationManager;
2023-10-21 17:02:55 -04:00
class MxNotificationParam;
class MxObjectFactory;
class MxOmniCreateParam;
class MxPresenter;
class MxSoundManager;
class MxStreamer;
class MxTickleManager;
class MxTimer;
class MxVariableTable;
class MxVideoManager;
class MxEntity;
(Proposal) Adjustments to "decomp" language (#308) * Adjustments to "decomp" language * Fix a comment * Fix accidental clang-formatting * Fix order * Fix order * Remove junk * Fix OFFSET * Adjustments based on new suggestions * Annotate globals * Globals in ISLE * More globals * Merge from parser2 branch * Allow prepending space for exact marker match * To eliminate noise, require the 0x prefix on offset for marker match * fix test from previous * Count tab stops for indented functions to reduce MISSED_END_OF_FUNCTION noise * FUNCTION to SYNTHETIC where needed * Missed marker conversion on SetAtomId * pylint cleanup, remove unused code * Fix unexpected function end, add more unit tests * Be more strict about synthetic name syntax * Revert "Missed marker conversion on SetAtomId" This reverts commit d87d665127fae7dd6e5bd48d9af14a0a829bf9e2. * Revert "FUNCTION to SYNTHETIC where needed" This reverts commit 8c815418d261ba8c5f67a9a2cae349fe4ac92db8. * Implicit lookup by name for functions * Fix VTABLE SYNTHETIC and other decomp markers * Get vtable class name * Vtable marker should identify struct * No colon for SIZE comment * Update README.md * Update README.md * Update CONTRIBUTING.md * Update README.md * Update README.md * Update CONTRIBUTING.md * Update README.md * Update CONTRIBUTING.md * Fix destructor/annotation * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md --------- Co-authored-by: disinvite <disinvite@users.noreply.github.com>
2023-12-06 07:10:45 -05:00
// VTABLE: LEGO1 0x100dc168
// SIZE 0x68
2023-10-24 19:38:27 -04:00
class MxOmni : public MxCore {
2023-04-27 22:19:39 -04:00
public:
2023-10-24 19:38:27 -04:00
__declspec(dllexport) static void DestroyInstance();
__declspec(dllexport) static const char* GetCD();
__declspec(dllexport) static const char* GetHD();
__declspec(dllexport) static MxOmni* GetInstance();
__declspec(dllexport) static MxBool IsSound3D();
__declspec(dllexport) static void SetCD(const char* p_cd);
__declspec(dllexport) static void SetHD(const char* p_hd);
__declspec(dllexport) static void SetSound3D(MxBool p_3dsound);
MxOmni();
virtual ~MxOmni() override;
2023-10-24 19:38:27 -04:00
virtual MxLong Notify(MxParam& p) override; // vtable+04
virtual void Init(); // vtable+14
virtual MxResult Create(MxOmniCreateParam& p); // vtable+18
virtual void Destroy(); // vtable+1c
virtual MxResult Start(MxDSAction* p_dsAction); // vtable+20
virtual MxResult DeleteObject(MxDSAction& p_dsAction); // vtable+24
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction); // vtable+28
virtual void Vtable0x2c(); // vtable+2c
virtual MxEntity* FindWorld(const char*, MxS32, MxPresenter*); // vtable+30
2023-10-24 19:38:27 -04:00
virtual void NotifyCurrentEntity(MxNotificationParam* p_param); // vtable+34
virtual void StartTimer(); // vtable+38
virtual void StopTimer(); // vtable+3c
virtual MxBool IsTimerRunning(); // vtable+40
static void SetInstance(MxOmni* instance);
HWND GetWindowHandle() const { return this->m_windowHandle; }
MxObjectFactory* GetObjectFactory() const { return this->m_objectFactory; }
MxNotificationManager* GetNotificationManager() const { return this->m_notificationManager; }
MxTickleManager* GetTickleManager() const { return this->m_tickleManager; }
MxTimer* GetTimer() const { return this->m_timer; }
MxStreamer* GetStreamer() const { return this->m_streamer; }
MxSoundManager* GetSoundManager() const { return this->m_soundManager; }
MxVideoManager* GetVideoManager() const { return this->m_videoManager; }
MxVariableTable* GetVariableTable() const { return this->m_variableTable; }
MxMusicManager* GetMusicManager() const { return this->m_musicManager; }
MxEventManager* GetEventManager() const { return this->m_eventManager; }
MxAtomIdCounterSet* GetAtomIdCounterSet() const { return this->m_atomIdCounterSet; }
MxResult HandleNotificationType2(MxParam& p_param);
protected:
2023-10-24 19:38:27 -04:00
static MxOmni* g_instance;
2023-10-24 19:38:27 -04:00
MxString m_mediaPath; // 0x8
HWND m_windowHandle; // 0x18
2023-10-24 19:38:27 -04:00
MxObjectFactory* m_objectFactory; // 0x1C
MxVariableTable* m_variableTable; // 0x20
MxTickleManager* m_tickleManager; // 0x24
MxNotificationManager* m_notificationManager; // 0x28
MxVideoManager* m_videoManager; // 0x2C
MxSoundManager* m_soundManager; // 0x30
MxMusicManager* m_musicManager; // 0x34
MxEventManager* m_eventManager; // 0x38
MxTimer* m_timer; // 0x3C
MxStreamer* m_streamer; // 0x40
2023-10-24 19:38:27 -04:00
MxAtomIdCounterSet* m_atomIdCounterSet; // 0x44
2023-10-24 19:38:27 -04:00
MxCriticalSection m_criticalsection; // 0x48
2023-10-24 19:38:27 -04:00
MxBool m_timerRunning; // 0x64
2023-04-27 22:19:39 -04:00
};
2023-10-24 19:38:27 -04:00
__declspec(dllexport) MxTickleManager* TickleManager();
__declspec(dllexport) MxTimer* Timer();
__declspec(dllexport) MxStreamer* Streamer();
__declspec(dllexport) MxSoundManager* MSoundManager();
__declspec(dllexport) MxVariableTable* VariableTable();
__declspec(dllexport) MxMusicManager* MusicManager();
__declspec(dllexport) MxEventManager* EventManager();
__declspec(dllexport) MxNotificationManager* NotificationManager();
2023-10-24 19:38:27 -04:00
MxVideoManager* MVideoManager();
MxAtomIdCounterSet* AtomIdCounterSet();
MxObjectFactory* ObjectFactory();
MxResult DeleteObject(MxDSAction& p_dsAction);
void DeleteObjects(MxAtomId* p_id, MxS32 p_first, MxS32 p_last);
2023-04-27 22:19:39 -04:00
#endif // MXOMNI_H