#ifndef LEGOVIDEOMANAGER_H #define LEGOVIDEOMANAGER_H #include "3dmanager/lego3dmanager.h" #include "decomp.h" #include "legounknown100d9d00.h" #include "mxdirectx/mxdirect3d.h" #include "mxdirectx/mxstopwatch.h" #include "mxvideomanager.h" #include class LegoROI; // VTABLE: LEGO1 0x100d9c88 // SIZE 0x590 class LegoVideoManager : public MxVideoManager { public: LegoVideoManager(); ~LegoVideoManager() override; int EnableRMDevice(); int DisableRMDevice(); void EnableFullScreenMovie(MxBool p_enable); void EnableFullScreenMovie(MxBool p_enable, MxBool p_scale); void MoveCursor(MxS32 p_cursorX, MxS32 p_cursorY); void ToggleFPS(MxBool p_visible); MxResult Tickle() override; // vtable+0x08 void Destroy() override; // vtable+0x18 MxResult Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, MxBool p_createThread) override; // vtable+0x2c MxResult RealizePalette(MxPalette*) override; // vtable+0x30 void UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height) override; // vtable+0x34 virtual MxPresenter* GetPresenterAt(MxS32 p_x, MxS32 p_y); // vtable+0x38 // FUNCTION: LEGO1 0x1007ab10 virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c void SetSkyColor(float p_red, float p_green, float p_blue); void OverrideSkyColor(MxBool p_shouldOverride); MxResult ResetPalette(MxBool p_ignoreSkyColor); void FUN_1007c520(); inline Tgl::Renderer* GetRenderer() { return this->m_renderer; } inline Lego3DManager* Get3DManager() { return this->m_3dManager; } inline LegoROI* GetViewROI() { return this->m_viewROI; } inline MxDirect3D* GetDirect3D() { return this->m_direct3d; } inline MxBool GetRender3D() { return this->m_render3d; } inline void SetRender3D(MxBool p_render3d) { this->m_render3d = p_render3d; } inline void SetUnk0x554(MxBool p_unk0x554) { this->m_unk0x554 = p_unk0x554; } private: MxResult CreateDirect3D(); MxResult ConfigureD3DRM(); void DrawFPS(); inline void DrawCursor(); Tgl::Renderer* m_renderer; // 0x64 Lego3DManager* m_3dManager; // 0x68 LegoROI* m_viewROI; // 0x6c undefined4 m_unk0x70; // 0x70 MxDirect3D* m_direct3d; // 0x74 undefined4 m_unk0x78[27]; // 0x78 MxBool m_render3d; // 0xe4 MxBool m_unk0xe5; // 0xe5 MxBool m_unk0xe6; // 0xe6 PALETTEENTRY m_paletteEntries[256]; // 0xe7 undefined m_padding0x4e7; // 0x4e7 LegoUnknown100d9d00* m_unk0x100d9d00; // 0x4e8 MxBool m_isFullscreenMovie; // 0x4ec MxPalette* m_palette; // 0x4f0 MxStopWatch* m_stopWatch; // 0x4f4 double m_elapsedSeconds; // 0x4f8 MxBool m_fullScreenMovie; // 0x500 MxBool m_drawCursor; // 0x501 MxS32 m_cursorXCopy; // 0x504 MxS32 m_cursorYCopy; // 0x508 MxS32 m_cursorX; // 0x50c MxS32 m_cursorY; // 0x510 LPDIRECTDRAWSURFACE m_cursorSurface; // 0x514 RECT m_cursorRect; // 0x518 undefined4 m_unk0x528; // 0x528 MxBool m_drawFPS; // 0x52c RECT m_fpsRect; // 0x530 HFONT m_arialFont; // 0x540 SIZE m_fpsSize; // 0x544 MxFloat m_unk0x54c; // 0x54c MxFloat m_unk0x550; // 0x550 MxBool m_unk0x554; // 0x554 MxBool m_paused; // 0x555 undefined m_pad0x556[0x39]; // 0x556 }; // SYNTHETIC: LEGO1 0x1007ab20 // LegoVideoManager::`scalar deleting destructor' #endif // LEGOVIDEOMANAGER_H