#ifndef LEGOVIDEOMANAGER_H #define LEGOVIDEOMANAGER_H #include "decomp.h" #include "legophonemelist.h" #include "mxvideomanager.h" #include #include class Lego3DManager; class LegoROI; class MxDirect3D; class MxStopWatch; struct ViewportAppData; namespace Tgl { class Renderer; } // VTABLE: LEGO1 0x100d9c88 // VTABLE: BETA10 0x101bef08 // 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 // FUNCTION: BETA10 0x100d8010 virtual LegoPhonemeList* GetPhonemeList() { return m_phonemeRefList; } // vtable+0x3c void SetSkyColor(float p_red, float p_green, float p_blue); void OverrideSkyColor(MxBool p_shouldOverride); MxResult ResetPalette(MxBool p_ignoreSkyColor); MxPresenter* GetPresenterByActionObjectName(const char* p_char); void FUN_1007c520(); Tgl::Renderer* GetRenderer() { return m_renderer; } // FUNCTION: BETA10 0x100117e0 Lego3DManager* Get3DManager() { return m_3dManager; } // FUNCTION: BETA10 0x1003a380 LegoROI* GetViewROI() { return m_viewROI; } MxDirect3D* GetDirect3D() { return m_direct3d; } MxBool GetRender3D() { return m_render3d; } double GetElapsedSeconds() { return m_elapsedSeconds; } // FUNCTION: BETA10 0x1002e290 void SetRender3D(MxBool p_render3d) { m_render3d = p_render3d; } void SetUnk0x554(MxBool p_unk0x554) { m_unk0x554 = p_unk0x554; } // SYNTHETIC: LEGO1 0x1007ab20 // SYNTHETIC: BETA10 0x100d8040 // LegoVideoManager::`scalar deleting destructor' 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 LegoPhonemeList* m_phonemeRefList; // 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 LPDIRECTDRAWSURFACE 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 D3DVALUE m_back; // 0x558 D3DVALUE m_front; // 0x55c float m_cameraWidth; // 0x560 float m_cameraHeight; // 0x564 D3DVALUE m_fov; // 0x55c IDirect3DRMFrame* m_camera; // 0x56c D3DRMPROJECTIONTYPE m_projection; // 0x570 ViewportAppData* m_appdata; // 0x574 D3DRMRENDERQUALITY m_quality; // 0x578 DWORD m_shades; // 0x57c D3DRMTEXTUREQUALITY m_textureQuality; // 0x580 DWORD m_rendermode; // 0x584 BOOL m_dither; // 0x588 DWORD m_bufferCount; // 0x58c }; #endif // LEGOVIDEOMANAGER_H