From e55bd9f607524b4ce1811a687e51c971e17dd5b7 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Sun, 29 Oct 2023 10:20:13 -0400 Subject: [PATCH] commit code --- LEGO1/legoinputmanager.cpp | 7 +++++ LEGO1/legoinputmanager.h | 1 + LEGO1/legoomni.cpp | 52 +++++++++++++++++++++++++++++++++++--- LEGO1/legosoundmanager.cpp | 2 +- LEGO1/mxomnicreateparam.h | 2 +- 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/LEGO1/legoinputmanager.cpp b/LEGO1/legoinputmanager.cpp index 0fd1d22d..0ff25bc5 100644 --- a/LEGO1/legoinputmanager.cpp +++ b/LEGO1/legoinputmanager.cpp @@ -63,6 +63,13 @@ void LegoInputManager::Destroy() delete m_controlManager; } +// OFFSET: LEGO1 0x1005b960 STUB +MxResult LegoInputManager::Create(HWND p_hwnd) +{ + // TODO STUB + return SUCCESS; +} + // OFFSET: LEGO1 0x1005c030 void LegoInputManager::CreateAndAcquireKeyboard(HWND hwnd) { diff --git a/LEGO1/legoinputmanager.h b/LEGO1/legoinputmanager.h index d0059605..e657f81e 100644 --- a/LEGO1/legoinputmanager.h +++ b/LEGO1/legoinputmanager.h @@ -35,6 +35,7 @@ class LegoInputManager : public MxPresenter { virtual MxResult Tickle() override; // vtable+0x8 + MxResult Create(HWND p_hwnd); void Destroy(); void CreateAndAcquireKeyboard(HWND hwnd); void ReleaseDX(); diff --git a/LEGO1/legoomni.cpp b/LEGO1/legoomni.cpp index a37d9776..06d895be 100644 --- a/LEGO1/legoomni.cpp +++ b/LEGO1/legoomni.cpp @@ -3,10 +3,16 @@ #include "legogamestate.h" #include "legoinputmanager.h" #include "legoobjectfactory.h" +#include "legosoundmanager.h" #include "legoutil.h" +#include "legovideomanager.h" #include "legoworld.h" +#include "mxautolocker.h" #include "mxbackgroundaudiomanager.h" #include "mxdsfile.h" +#include "mxomnicreateflags.h" +#include "mxomnicreateparam.h" +#include "mxticklemanager.h" // 0x100f4588 MxAtomId* g_nocdSourceName = NULL; @@ -302,16 +308,56 @@ void LegoOmni::Init() m_transitionManager = NULL; } -// OFFSET: LEGO1 0x10058e70 STUB +// OFFSET: LEGO1 0x10058e70 MxResult LegoOmni::Create(MxOmniCreateParam& p) { - MxOmni::Create(p); + MxResult result = FAILURE; + MxAutoLocker lock(&this->m_criticalsection); + + p.CreateFlags().CreateObjectFactory(FALSE); + p.CreateFlags().CreateVideoManager(FALSE); + p.CreateFlags().CreateSoundManager(FALSE); + p.CreateFlags().CreateTickleManager(FALSE); + + if (!(m_tickleManager = new MxTickleManager())) + return FAILURE; + + if (MxOmni::Create(p) != SUCCESS) + return FAILURE; m_objectFactory = new LegoObjectFactory(); + if (m_objectFactory == NULL) + return FAILURE; + + if (m_soundManager = new LegoSoundManager()) { + if (m_soundManager->Create(10, 0) != SUCCESS) { + delete m_soundManager; + m_soundManager = NULL; + return FAILURE; + } + } + + if (m_videoManager = new LegoVideoManager()) { + if (m_videoManager->Create(p.GetVideoParam(), 100, 0) != SUCCESS) { + delete m_videoManager; + m_videoManager = NULL; + } + } + + if (m_inputMgr = new LegoInputManager()) { + if (m_inputMgr->Create(p.GetWindowHandle()) != SUCCESS) { + delete m_inputMgr; + m_inputMgr = NULL; + } + } + m_gameState = new LegoGameState(); m_bkgAudioManager = new MxBackgroundAudioManager(); - return SUCCESS; + SetAppCursor(1); + + result = SUCCESS; + return result; } // OFFSET: LEGO1 0x10058c30 STUB diff --git a/LEGO1/legosoundmanager.cpp b/LEGO1/legosoundmanager.cpp index 94bd9a29..a99aadf8 100644 --- a/LEGO1/legosoundmanager.cpp +++ b/LEGO1/legosoundmanager.cpp @@ -28,7 +28,7 @@ void LegoSoundManager::Destroy(MxBool p_fromDestructor) // OFFSET: LEGO1 0x100299f0 STUB MxResult LegoSoundManager::Create(MxU32 p_frequencyMS, MxBool p_createThread) { - return FAILURE; + return SUCCESS; } // OFFSET: LEGO1 0x100299a0 diff --git a/LEGO1/mxomnicreateparam.h b/LEGO1/mxomnicreateparam.h index 12867186..a30d01df 100644 --- a/LEGO1/mxomnicreateparam.h +++ b/LEGO1/mxomnicreateparam.h @@ -17,7 +17,7 @@ class MxOmniCreateParam : public MxParam { MxOmniCreateFlags flags ); - const MxOmniCreateFlags& CreateFlags() const { return this->m_createFlags; } + MxOmniCreateFlags& CreateFlags() { return this->m_createFlags; } const MxString& GetMediaPath() const { return m_mediaPath; } const HWND GetWindowHandle() const { return m_windowHandle; } MxVideoParam& GetVideoParam() { return m_videoParam; }