mirror of https://github.com/AxioDL/metaforce.git
Prep MP1::CMain for testing
This commit is contained in:
parent
86c21a77ac
commit
abff623cf6
|
@ -18,10 +18,6 @@ if(MSVC)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/DEBUG /RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUGTYPE:cv,fixup")
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/DEBUG /RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUGTYPE:cv,fixup")
|
||||||
|
|
||||||
else()
|
else()
|
||||||
if (CMAKE_COMPILER_IS_GNUCXX)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
|
|
||||||
message(WARNING "GCC needs -fpermissive for nested type redeclarations; expect lotsa warnings!!")
|
|
||||||
endif()
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wno-multichar -fno-exceptions")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wno-multichar -fno-exceptions")
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
|
|
|
@ -19,7 +19,7 @@ class PAKBridge
|
||||||
PAK m_pak;
|
PAK m_pak;
|
||||||
public:
|
public:
|
||||||
bool m_doExtract;
|
bool m_doExtract;
|
||||||
using Level = Level<UniqueID32>;
|
using Level = DataSpec::Level<UniqueID32>;
|
||||||
std::unordered_map<UniqueID32, Level> m_levelDeps;
|
std::unordered_map<UniqueID32, Level> m_levelDeps;
|
||||||
hecl::SystemString m_levelString;
|
hecl::SystemString m_levelString;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ class PAKBridge
|
||||||
DNAMP1::PAK m_pak;
|
DNAMP1::PAK m_pak;
|
||||||
public:
|
public:
|
||||||
bool m_doExtract;
|
bool m_doExtract;
|
||||||
using Level = Level<UniqueID32>;
|
using Level = DataSpec::Level<UniqueID32>;
|
||||||
std::unordered_map<UniqueID32, Level> m_levelDeps;
|
std::unordered_map<UniqueID32, Level> m_levelDeps;
|
||||||
hecl::SystemString m_levelString;
|
hecl::SystemString m_levelString;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ class PAKBridge
|
||||||
PAK m_pak;
|
PAK m_pak;
|
||||||
public:
|
public:
|
||||||
bool m_doExtract;
|
bool m_doExtract;
|
||||||
using Level = Level<UniqueID64>;
|
using Level = DataSpec::Level<UniqueID64>;
|
||||||
std::unordered_map<UniqueID64, Level> m_levelDeps;
|
std::unordered_map<UniqueID64, Level> m_levelDeps;
|
||||||
hecl::SystemString m_levelString;
|
hecl::SystemString m_levelString;
|
||||||
|
|
||||||
|
|
|
@ -98,13 +98,18 @@ bool ProjectManager::openProject(const hecl::SystemString& path)
|
||||||
hecl::ProjectPath urdeSpacesPath(*m_proj, _S(".hecl/urde_spaces.yaml"));
|
hecl::ProjectPath urdeSpacesPath(*m_proj, _S(".hecl/urde_spaces.yaml"));
|
||||||
FILE* fp = hecl::Fopen(urdeSpacesPath.getAbsolutePath().c_str(), _S("r"));
|
FILE* fp = hecl::Fopen(urdeSpacesPath.getAbsolutePath().c_str(), _S("r"));
|
||||||
|
|
||||||
|
bool needsSave = false;
|
||||||
athena::io::YAMLDocReader r;
|
athena::io::YAMLDocReader r;
|
||||||
if (!fp)
|
if (!fp)
|
||||||
|
{
|
||||||
|
needsSave = true;
|
||||||
goto makeDefault;
|
goto makeDefault;
|
||||||
|
}
|
||||||
|
|
||||||
yaml_parser_set_input_file(r.getParser(), fp);
|
yaml_parser_set_input_file(r.getParser(), fp);
|
||||||
if (!r.ValidateClassType("UrdeSpacesState"))
|
if (!r.ValidateClassType("UrdeSpacesState"))
|
||||||
{
|
{
|
||||||
|
needsSave = true;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
goto makeDefault;
|
goto makeDefault;
|
||||||
}
|
}
|
||||||
|
@ -114,33 +119,23 @@ bool ProjectManager::openProject(const hecl::SystemString& path)
|
||||||
yaml_parser_set_input_file(r.getParser(), fp);
|
yaml_parser_set_input_file(r.getParser(), fp);
|
||||||
if (!r.parse())
|
if (!r.parse())
|
||||||
{
|
{
|
||||||
|
needsSave = true;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
goto makeDefault;
|
goto makeDefault;
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
m_vm.ProjectChanged(*m_proj);
|
|
||||||
m_vm.SetupEditorView(r);
|
|
||||||
|
|
||||||
m_factoryMP1.IndexMP1Resources(*m_proj);
|
|
||||||
m_vm.BuildTestPART(m_objStore);
|
|
||||||
|
|
||||||
{
|
|
||||||
hecl::SystemString windowTitle(m_proj->getProjectRootPath().getLastComponent());
|
|
||||||
windowTitle += _S(" - URDE");
|
|
||||||
m_vm.m_mainWindow->setTitle(windowTitle.c_str());
|
|
||||||
}
|
|
||||||
m_vm.DismissSplash();
|
|
||||||
m_vm.FadeInEditors();
|
|
||||||
|
|
||||||
m_vm.pushRecentProject(m_proj->getProjectRootPath().getAbsolutePath());
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
makeDefault:
|
makeDefault:
|
||||||
m_vm.ProjectChanged(*m_proj);
|
m_vm.ProjectChanged(*m_proj);
|
||||||
m_vm.SetupEditorView();
|
m_vm.SetupEditorView();
|
||||||
saveProject();
|
|
||||||
|
m_factoryMP1.IndexMP1Resources(*m_proj);
|
||||||
|
m_mainMP1.emplace(m_factoryMP1, m_objStore);
|
||||||
|
m_vm.InitMP1(*m_mainMP1);
|
||||||
|
m_vm.BuildTestPART(m_objStore);
|
||||||
|
|
||||||
|
if (needsSave)
|
||||||
|
saveProject();
|
||||||
|
|
||||||
{
|
{
|
||||||
hecl::SystemString windowTitle(m_proj->getProjectRootPath().getLastComponent());
|
hecl::SystemString windowTitle(m_proj->getProjectRootPath().getLastComponent());
|
||||||
|
@ -149,6 +144,7 @@ makeDefault:
|
||||||
}
|
}
|
||||||
m_vm.DismissSplash();
|
m_vm.DismissSplash();
|
||||||
m_vm.FadeInEditors();
|
m_vm.FadeInEditors();
|
||||||
|
m_vm.pushRecentProject(m_proj->getProjectRootPath().getAbsolutePath());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "ProjectResourceFactoryMP1.hpp"
|
#include "ProjectResourceFactoryMP1.hpp"
|
||||||
#include "Runtime/CSimplePool.hpp"
|
#include "Runtime/CSimplePool.hpp"
|
||||||
#include "hecl/Runtime.hpp"
|
#include "hecl/Runtime.hpp"
|
||||||
|
#include "MP1/MP1.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
@ -32,6 +33,7 @@ class ProjectManager
|
||||||
hecl::ClientProcess m_clientProc;
|
hecl::ClientProcess m_clientProc;
|
||||||
ProjectResourceFactoryMP1 m_factoryMP1;
|
ProjectResourceFactoryMP1 m_factoryMP1;
|
||||||
ProjectResourcePool m_objStore;
|
ProjectResourcePool m_objStore;
|
||||||
|
std::experimental::optional<MP1::CMain> m_mainMP1;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static ProjectManager* g_SharedManager;
|
static ProjectManager* g_SharedManager;
|
||||||
|
@ -47,9 +49,21 @@ public:
|
||||||
bool extractGame(const hecl::SystemString& path);
|
bool extractGame(const hecl::SystemString& path);
|
||||||
bool saveProject();
|
bool saveProject();
|
||||||
|
|
||||||
void asyncIdle() {m_factoryMP1.AsyncIdle();}
|
void mainUpdate()
|
||||||
|
{
|
||||||
|
if (m_mainMP1)
|
||||||
|
m_mainMP1->Proc();
|
||||||
|
}
|
||||||
|
|
||||||
|
void asyncIdle()
|
||||||
|
{
|
||||||
|
m_factoryMP1.AsyncIdle();
|
||||||
|
}
|
||||||
|
|
||||||
void shutdown()
|
void shutdown()
|
||||||
{
|
{
|
||||||
|
if (m_mainMP1)
|
||||||
|
m_mainMP1->Shutdown();
|
||||||
m_clientProc.shutdown();
|
m_clientProc.shutdown();
|
||||||
m_factoryMP1.Shutdown();
|
m_factoryMP1.Shutdown();
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,11 @@ void ViewManager::BuildTestPART(urde::IObjectStore& objStore)
|
||||||
m_rootView->updateSize();
|
m_rootView->updateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ViewManager::InitMP1(MP1::CMain& main)
|
||||||
|
{
|
||||||
|
main.Init(m_mainBooFactory, m_mainCommandQueue, m_renderTex, m_fileStoreManager, m_voiceEngine.get());
|
||||||
|
}
|
||||||
|
|
||||||
void ViewManager::ParticleView::resized(const boo::SWindowRect& root, const boo::SWindowRect& sub)
|
void ViewManager::ParticleView::resized(const boo::SWindowRect& root, const boo::SWindowRect& sub)
|
||||||
{
|
{
|
||||||
specter::View::resized(root, sub);
|
specter::View::resized(root, sub);
|
||||||
|
@ -272,23 +277,25 @@ void ViewManager::init(boo::IApplication* app)
|
||||||
|
|
||||||
float pixelFactor = 1.0;
|
float pixelFactor = 1.0;
|
||||||
|
|
||||||
boo::IGraphicsDataFactory* gf = m_mainWindow->getMainContextDataFactory();
|
m_mainBooFactory = m_mainWindow->getMainContextDataFactory();
|
||||||
m_viewResources.init(gf, &m_fontCache, &m_themeData, pixelFactor);
|
m_mainCommandQueue = m_mainWindow->getCommandQueue();
|
||||||
|
m_viewResources.init(m_mainBooFactory, &m_fontCache, &m_themeData, pixelFactor);
|
||||||
m_iconsToken = InitializeIcons(m_viewResources);
|
m_iconsToken = InitializeIcons(m_viewResources);
|
||||||
m_viewResources.prepFontCacheAsync(m_mainWindow.get());
|
m_viewResources.prepFontCacheAsync(m_mainWindow.get());
|
||||||
specter::RootView* root = SetupRootView();
|
specter::RootView* root = SetupRootView();
|
||||||
m_showSplash = true;
|
m_showSplash = true;
|
||||||
root->accessContentViews().push_back(SetupSplashView());
|
root->accessContentViews().push_back(SetupSplashView());
|
||||||
root->updateSize();
|
root->updateSize();
|
||||||
|
m_renderTex = root->renderTex();
|
||||||
m_mainWindow->setWaitCursor(false);
|
m_mainWindow->setWaitCursor(false);
|
||||||
|
|
||||||
m_voiceEngine = boo::NewAudioVoiceEngine();
|
m_voiceEngine = boo::NewAudioVoiceEngine();
|
||||||
|
/*
|
||||||
CGraphics::InitializeBoo(gf, m_mainWindow->getCommandQueue(), root->renderTex());
|
CGraphics::InitializeBoo(gf, m_mainWindow->getCommandQueue(), root->renderTex());
|
||||||
CModelShaders::Initialize(m_fileStoreManager, gf);
|
CModelShaders::Initialize(m_fileStoreManager, gf);
|
||||||
CElementGen::Initialize();
|
CElementGen::Initialize();
|
||||||
CMoviePlayer::Initialize();
|
CMoviePlayer::Initialize();
|
||||||
CLineRenderer::Initialize();
|
CLineRenderer::Initialize();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ViewManager::proc()
|
bool ViewManager::proc()
|
||||||
|
@ -330,6 +337,8 @@ bool ViewManager::proc()
|
||||||
if (m_rootSpaceView && m_editorFrames <= 30)
|
if (m_rootSpaceView && m_editorFrames <= 30)
|
||||||
m_rootSpaceView->setMultiplyColor(zeus::CColor::lerp({1,1,1,0}, {1,1,1,1}, m_editorFrames / 30.0));
|
m_rootSpaceView->setMultiplyColor(zeus::CColor::lerp({1,1,1,0}, {1,1,1,1}, m_editorFrames / 30.0));
|
||||||
|
|
||||||
|
m_projManager.mainUpdate();
|
||||||
|
|
||||||
m_rootView->draw(gfxQ);
|
m_rootView->draw(gfxQ);
|
||||||
CGraphics::EndScene();
|
CGraphics::EndScene();
|
||||||
gfxQ->execute();
|
gfxQ->execute();
|
||||||
|
|
|
@ -33,7 +33,9 @@ class ViewManager : public specter::IViewManager
|
||||||
boo::GraphicsDataToken m_iconsToken;
|
boo::GraphicsDataToken m_iconsToken;
|
||||||
specter::Translator m_translator;
|
specter::Translator m_translator;
|
||||||
std::unique_ptr<boo::IWindow> m_mainWindow;
|
std::unique_ptr<boo::IWindow> m_mainWindow;
|
||||||
CCharacterFactoryBuilder m_test;
|
boo::IGraphicsDataFactory* m_mainBooFactory = nullptr;
|
||||||
|
boo::IGraphicsCommandQueue* m_mainCommandQueue = nullptr;
|
||||||
|
boo::ITextureR* m_renderTex = nullptr;
|
||||||
|
|
||||||
std::unique_ptr<specter::RootView> m_rootView;
|
std::unique_ptr<specter::RootView> m_rootView;
|
||||||
std::unique_ptr<SplashScreen> m_splash;
|
std::unique_ptr<SplashScreen> m_splash;
|
||||||
|
@ -96,6 +98,7 @@ class ViewManager : public specter::IViewManager
|
||||||
void FadeInEditors() {m_editorFrames = 0;}
|
void FadeInEditors() {m_editorFrames = 0;}
|
||||||
|
|
||||||
void BuildTestPART(urde::IObjectStore& objStore);
|
void BuildTestPART(urde::IObjectStore& objStore);
|
||||||
|
void InitMP1(MP1::CMain& main);
|
||||||
|
|
||||||
Space* m_deferSplit = nullptr;
|
Space* m_deferSplit = nullptr;
|
||||||
specter::SplitView::Axis m_deferSplitAxis;
|
specter::SplitView::Axis m_deferSplitAxis;
|
||||||
|
|
|
@ -17,7 +17,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(RuntimeCommon
|
add_library(RuntimeCommon
|
||||||
CMemory.hpp CMemory.cpp
|
#CMemory.hpp CMemory.cpp
|
||||||
CMemoryCardSys.hpp
|
CMemoryCardSys.hpp
|
||||||
IAllocator.hpp IAllocator.cpp
|
IAllocator.hpp IAllocator.cpp
|
||||||
CGameAllocator.hpp CGameAllocator.cpp
|
CGameAllocator.hpp CGameAllocator.cpp
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#if 0
|
||||||
|
|
||||||
#include "CMemory.hpp"
|
#include "CMemory.hpp"
|
||||||
#include "CGameAllocator.hpp"
|
#include "CGameAllocator.hpp"
|
||||||
#include "CCallStack.hpp"
|
#include "CCallStack.hpp"
|
||||||
|
@ -71,7 +73,6 @@ IAllocator& CMemorySys::GetGameAllocator() {return g_gameAllocator;}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void* operator new(std::size_t sz)
|
void* operator new(std::size_t sz)
|
||||||
{
|
{
|
||||||
if (!urde::g_memoryAllocatorReady)
|
if (!urde::g_memoryAllocatorReady)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef __URDE_CMEMORY_HPP__
|
#ifndef __URDE_CMEMORY_HPP__
|
||||||
#define __URDE_CMEMORY_HPP__
|
#define __URDE_CMEMORY_HPP__
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
#include "IAllocator.hpp"
|
#include "IAllocator.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
|
@ -30,7 +32,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom new funcs */
|
/* Custom new funcs */
|
||||||
//void* operator new(std::size_t sz, const char* funcName, const char* typeName);
|
void* operator new(std::size_t sz, const char* funcName, const char* typeName);
|
||||||
//void* operator new[](std::size_t sz, const char* funcName, const char* typeName);
|
void* operator new[](std::size_t sz, const char* funcName, const char* typeName);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // __URDE_CMEMORY_HPP__
|
#endif // __URDE_CMEMORY_HPP__
|
||||||
|
|
|
@ -37,14 +37,7 @@ CInputStream* CResLoader::LoadNewResourcePartSync(const SObjectTag& tag, int off
|
||||||
void* buf = extBuf;
|
void* buf = extBuf;
|
||||||
CPakFile* file = FindResourceForLoad(tag);
|
CPakFile* file = FindResourceForLoad(tag);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
{
|
buf = new u8[length];
|
||||||
CCallStack cs(AT_PRETTY_FUNCTION, "UnknownType");
|
|
||||||
buf = CMemory::Alloc(length,
|
|
||||||
IAllocator::EHint::Large,
|
|
||||||
IAllocator::EScope::Default,
|
|
||||||
IAllocator::EType::Primitive,
|
|
||||||
cs);
|
|
||||||
}
|
|
||||||
file->SyncSeekRead(buf, length, ESeekOrigin::Begin, x50_cachedResInfo->x4_offset + offset);
|
file->SyncSeekRead(buf, length, ESeekOrigin::Begin, x50_cachedResInfo->x4_offset + offset);
|
||||||
return new CMemoryInStream((atUint8*)buf, length, !extBuf);
|
return new CMemoryInStream((atUint8*)buf, length, !extBuf);
|
||||||
}
|
}
|
||||||
|
@ -52,12 +45,7 @@ CInputStream* CResLoader::LoadNewResourcePartSync(const SObjectTag& tag, int off
|
||||||
void CResLoader::LoadMemResourceSync(const SObjectTag& tag, void** bufOut, int* sizeOut)
|
void CResLoader::LoadMemResourceSync(const SObjectTag& tag, void** bufOut, int* sizeOut)
|
||||||
{
|
{
|
||||||
CPakFile* file = FindResourceForLoad(tag);
|
CPakFile* file = FindResourceForLoad(tag);
|
||||||
CCallStack cs(AT_PRETTY_FUNCTION, "UnknownType");
|
void* buf = new u8[x50_cachedResInfo->x8_size];
|
||||||
void* buf = CMemory::Alloc(x50_cachedResInfo->x8_size,
|
|
||||||
IAllocator::EHint::Large,
|
|
||||||
IAllocator::EScope::Default,
|
|
||||||
IAllocator::EType::Primitive,
|
|
||||||
cs);
|
|
||||||
file->SyncSeekRead(buf, x50_cachedResInfo->x8_size, ESeekOrigin::Begin,
|
file->SyncSeekRead(buf, x50_cachedResInfo->x8_size, ESeekOrigin::Begin,
|
||||||
x50_cachedResInfo->x4_offset);
|
x50_cachedResInfo->x4_offset);
|
||||||
*bufOut = buf;
|
*bufOut = buf;
|
||||||
|
@ -82,14 +70,7 @@ CInputStream* CResLoader::LoadNewResourceSync(const SObjectTag& tag, void* extBu
|
||||||
CPakFile* file = FindResourceForLoad(tag);
|
CPakFile* file = FindResourceForLoad(tag);
|
||||||
size_t resSz = ROUND_UP_32(x50_cachedResInfo->x8_size);
|
size_t resSz = ROUND_UP_32(x50_cachedResInfo->x8_size);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
{
|
buf = new u8[resSz];
|
||||||
CCallStack cs(AT_PRETTY_FUNCTION, "UnknownType");
|
|
||||||
buf = CMemory::Alloc(resSz,
|
|
||||||
IAllocator::EHint::Large,
|
|
||||||
IAllocator::EScope::Default,
|
|
||||||
IAllocator::EType::Primitive,
|
|
||||||
cs);
|
|
||||||
}
|
|
||||||
file->SyncSeekRead(buf, resSz, ESeekOrigin::Begin, x50_cachedResInfo->x4_offset);
|
file->SyncSeekRead(buf, resSz, ESeekOrigin::Begin, x50_cachedResInfo->x4_offset);
|
||||||
CInputStream* newStrm = new CMemoryInStream((atUint8*)buf, resSz, !extBuf);
|
CInputStream* newStrm = new CMemoryInStream((atUint8*)buf, resSz, !extBuf);
|
||||||
if (x50_cachedResInfo->xb_compressed)
|
if (x50_cachedResInfo->xb_compressed)
|
||||||
|
|
|
@ -5,12 +5,12 @@ namespace urde
|
||||||
{
|
{
|
||||||
class IObjectStore;
|
class IObjectStore;
|
||||||
class CMemorySys;
|
class CMemorySys;
|
||||||
class CResFactory;
|
class IFactory;
|
||||||
|
|
||||||
class CBooRenderer
|
class CBooRenderer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CBooRenderer(IObjectStore&, CMemorySys&, CResFactory&)
|
CBooRenderer(IObjectStore&, IFactory&)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,44 +1,5 @@
|
||||||
#if _WIN32
|
|
||||||
#ifndef NOMINMAX
|
|
||||||
#define NOMINMAX
|
|
||||||
#endif
|
|
||||||
#include <objbase.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <clocale>
|
|
||||||
#include <memory>
|
|
||||||
#include <boo/boo.hpp>
|
|
||||||
#include <boo/graphicsdev/GL.hpp>
|
|
||||||
#include "CBasics.hpp"
|
|
||||||
#include "CMemoryCardSys.hpp"
|
|
||||||
#include "CResFactory.hpp"
|
|
||||||
#include "CSimplePool.hpp"
|
|
||||||
#include "Character/CAssetFactory.hpp"
|
|
||||||
#include "CAi.hpp"
|
|
||||||
#include "CGameState.hpp"
|
|
||||||
#include "CInGameTweakManager.hpp"
|
|
||||||
#include "Particle/CElementGen.hpp"
|
|
||||||
#include "Character/CAnimData.hpp"
|
|
||||||
#include "Particle/CDecalManager.hpp"
|
|
||||||
#include "Particle/CGenDescription.hpp"
|
|
||||||
#include "Graphics/CBooRenderer.hpp"
|
|
||||||
#include "Audio/CAudioSys.hpp"
|
|
||||||
#include "Input/CInputGenerator.hpp"
|
|
||||||
#include "GuiSys/CGuiSys.hpp"
|
|
||||||
#include "CIOWinManager.hpp"
|
|
||||||
#include "GuiSys/CSplashScreen.hpp"
|
|
||||||
#include "CMainFlow.hpp"
|
|
||||||
#include "GuiSys/CConsoleOutputWindow.hpp"
|
|
||||||
#include "GuiSys/CTextParser.hpp"
|
|
||||||
#include "Audio/CAudioStateWin.hpp"
|
|
||||||
#include "GameGlobalObjects.hpp"
|
|
||||||
#include "CArchitectureQueue.hpp"
|
|
||||||
#include "MP1.hpp"
|
#include "MP1.hpp"
|
||||||
#include "CTimeProvider.hpp"
|
#include "Graphics/CModelShaders.hpp"
|
||||||
#include "GuiSys/CTextExecuteBuffer.hpp"
|
|
||||||
|
|
||||||
#include "DataSpec/DNAMP1/Tweaks/CTweakPlayer.hpp"
|
|
||||||
#include "DataSpec/DNAMP1/Tweaks/CTweakGame.hpp"
|
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
@ -47,143 +8,13 @@ namespace MP1
|
||||||
{
|
{
|
||||||
class CMain* g_main = nullptr;
|
class CMain* g_main = nullptr;
|
||||||
|
|
||||||
class CGameGlobalObjects
|
CMain::CMain(IFactory& resFactory, CSimplePool& resStore)
|
||||||
{
|
: m_globalObjects(resFactory, resStore)
|
||||||
CMemoryCardSys x0_memoryCardSys;
|
|
||||||
CResFactory x20_resFactory;
|
|
||||||
CSimplePool x114_simplePool;
|
|
||||||
CCharacterFactoryBuilder x14c_charFactoryBuilder;
|
|
||||||
CAiFuncMap x188_aiFuncMap;
|
|
||||||
CGameState x1a8_gameState;
|
|
||||||
CInGameTweakManager x1c0_tweakManager;
|
|
||||||
std::unique_ptr<CBooRenderer> m_renderer;
|
|
||||||
|
|
||||||
void AddPaksAndFactories()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
void LoadStringTable()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
static CBooRenderer*
|
|
||||||
AllocateRenderer(IObjectStore& store,
|
|
||||||
CMemorySys& memSys, CResFactory& resFactory)
|
|
||||||
{
|
|
||||||
g_Renderer = new CBooRenderer(store, memSys, resFactory);
|
|
||||||
return g_Renderer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
|
||||||
CGameGlobalObjects()
|
|
||||||
: x114_simplePool(x20_resFactory)
|
|
||||||
{
|
|
||||||
g_MemoryCardSys = &x0_memoryCardSys;
|
|
||||||
g_ResFactory = &x20_resFactory;
|
|
||||||
g_SimplePool = &x114_simplePool;
|
|
||||||
g_CharFactoryBuilder = &x14c_charFactoryBuilder;
|
|
||||||
g_AiFuncMap = &x188_aiFuncMap;
|
|
||||||
g_GameState = &x1a8_gameState;
|
|
||||||
g_TweakManager = &x1c0_tweakManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PostInitialize(CMemorySys& memSys)
|
|
||||||
{
|
|
||||||
AddPaksAndFactories();
|
|
||||||
LoadStringTable();
|
|
||||||
m_renderer.reset(AllocateRenderer(x114_simplePool, memSys, x20_resFactory));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class CGameArchitectureSupport : public boo::IWindowCallback
|
|
||||||
{
|
|
||||||
CArchitectureQueue m_archQueue;
|
|
||||||
CAudioSys m_audioSys;
|
|
||||||
CInputGenerator m_inputGenerator;
|
|
||||||
CGuiSys m_guiSys;
|
|
||||||
CIOWinManager m_ioWinManager;
|
|
||||||
CSplashScreen m_splashScreen;
|
|
||||||
CMainFlow m_mainFlow;
|
|
||||||
CConsoleOutputWindow m_consoleWindow;
|
|
||||||
CAudioStateWin m_audioStateWin;
|
|
||||||
boo::SWindowRect m_windowRect;
|
|
||||||
bool m_rectIsDirty;
|
|
||||||
|
|
||||||
void mouseDown(const boo::SWindowCoord &coord, boo::EMouseButton button, boo::EModifierKey mods)
|
|
||||||
{ m_inputGenerator.mouseDown(coord, button, mods); }
|
|
||||||
void mouseUp(const boo::SWindowCoord &coord, boo::EMouseButton button, boo::EModifierKey mods)
|
|
||||||
{ m_inputGenerator.mouseUp(coord, button, mods); }
|
|
||||||
void mouseMove(const boo::SWindowCoord &coord)
|
|
||||||
{ m_inputGenerator.mouseMove(coord); }
|
|
||||||
void scroll(const boo::SWindowCoord &coord, const boo::SScrollDelta &scroll)
|
|
||||||
{ m_inputGenerator.scroll(coord, scroll); }
|
|
||||||
void charKeyDown(unsigned long charCode, boo::EModifierKey mods, bool isRepeat)
|
|
||||||
{ m_inputGenerator.charKeyDown(charCode, mods, isRepeat); }
|
|
||||||
void charKeyUp(unsigned long charCode, boo::EModifierKey mods)
|
|
||||||
{ m_inputGenerator.charKeyUp(charCode, mods); }
|
|
||||||
void specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat)
|
|
||||||
{ m_inputGenerator.specialKeyDown(key, mods, isRepeat); }
|
|
||||||
void specialKeyUp(boo::ESpecialKey key, boo::EModifierKey mods)
|
|
||||||
{ m_inputGenerator.specialKeyUp(key, mods); }
|
|
||||||
void modKeyDown(boo::EModifierKey mod, bool isRepeat)
|
|
||||||
{ m_inputGenerator.modKeyDown(mod, isRepeat);}
|
|
||||||
void modKeyUp(boo::EModifierKey mod)
|
|
||||||
{ m_inputGenerator.modKeyUp(mod); }
|
|
||||||
|
|
||||||
void destroyed() { m_archQueue.Push(std::move(MakeMsg::CreateApplicationExit(EArchMsgTarget::ArchitectureSupport))); }
|
|
||||||
|
|
||||||
void resized(const boo::SWindowRect &rect)
|
|
||||||
{
|
|
||||||
m_windowRect = rect;
|
|
||||||
m_rectIsDirty = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
|
||||||
CGameArchitectureSupport()
|
|
||||||
: m_audioSys(0,0,0,0,0),
|
|
||||||
m_inputGenerator(0.0f /*g_tweakPlayer->GetLeftLogicalThreshold()*/,
|
|
||||||
0.0f /*g_tweakPlayer->GetRightLogicalThreshold()*/),
|
|
||||||
m_guiSys(*g_ResFactory, *g_SimplePool, CGuiSys::EUsageMode::Zero)
|
|
||||||
{
|
|
||||||
g_GuiSys = &m_guiSys;
|
|
||||||
m_inputGenerator.startScanning();
|
|
||||||
}
|
|
||||||
bool Update()
|
|
||||||
{
|
|
||||||
bool finished = false;
|
|
||||||
m_inputGenerator.Update(1.0 / 60.0, m_archQueue);
|
|
||||||
|
|
||||||
while(m_archQueue)
|
|
||||||
{
|
|
||||||
CArchitectureMessage msg = m_archQueue.Pop();
|
|
||||||
if (msg.GetTarget() == EArchMsgTarget::ArchitectureSupport)
|
|
||||||
{
|
|
||||||
if (msg.GetType() == EArchMsgType::ApplicationExit)
|
|
||||||
finished = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (msg.GetTarget() == EArchMsgTarget::Game && msg.GetType() == EArchMsgType::UserInput)
|
|
||||||
{
|
|
||||||
const CArchMsgParmUserInput* input = msg.GetParm<CArchMsgParmUserInput>();
|
|
||||||
if (input->x4_parm.DStart())
|
|
||||||
m_archQueue.Push(std::move(MakeMsg::CreateApplicationExit(EArchMsgTarget::ArchitectureSupport)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return finished;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isRectDirty() { return m_rectIsDirty; }
|
|
||||||
const boo::SWindowRect& getWindowRect()
|
|
||||||
{
|
|
||||||
m_rectIsDirty = false;
|
|
||||||
return m_windowRect;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
CMain::CMain()
|
|
||||||
: x6c_memSys(CMemorySys::GetGameAllocator())
|
|
||||||
{
|
{
|
||||||
g_main = this;
|
g_main = this;
|
||||||
xe4_gameplayResult = EGameplayResult::Playing;
|
xe4_gameplayResult = EGameplayResult::Playing;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMain::RegisterResourceTweaks()
|
void CMain::RegisterResourceTweaks()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -191,25 +22,20 @@ void CMain::ResetGameState()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMain::InitializeSubsystems()
|
void CMain::InitializeSubsystems(boo::IGraphicsDataFactory* factory,
|
||||||
|
boo::IGraphicsCommandQueue* cc,
|
||||||
|
boo::ITextureR* renderTex,
|
||||||
|
const hecl::Runtime::FileStoreManager& storeMgr,
|
||||||
|
boo::IAudioVoiceEngine* voiceEngine)
|
||||||
{
|
{
|
||||||
|
CGraphics::InitializeBoo(factory, cc, renderTex);
|
||||||
|
CModelShaders::Initialize(storeMgr, factory);
|
||||||
|
CMoviePlayer::Initialize();
|
||||||
|
CLineRenderer::Initialize();
|
||||||
CElementGen::Initialize();
|
CElementGen::Initialize();
|
||||||
CAnimData::InitializeCache();
|
CAnimData::InitializeCache();
|
||||||
CDecalManager::Initialize();
|
CDecalManager::Initialize();
|
||||||
}
|
}
|
||||||
void CMain::AddWorldPaks()
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
u32 i = 0;
|
|
||||||
while (i <= 255)
|
|
||||||
{
|
|
||||||
std::string pakName = CBasics::Stringize("%s%i.pak", g_tweakGame->GetWorldPrefix().c_str(), i);
|
|
||||||
if (CDvdFile::FileExists(pakName.c_str()))
|
|
||||||
g_ResFactory->GetLoader().AddPakFile(pakName, false);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMain::FillInAssetIDs()
|
void CMain::FillInAssetIDs()
|
||||||
{
|
{
|
||||||
|
@ -218,6 +44,31 @@ void CMain::LoadAudio()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMain::Init(boo::IGraphicsDataFactory* factory,
|
||||||
|
boo::IGraphicsCommandQueue* cc,
|
||||||
|
boo::ITextureR* renderTex,
|
||||||
|
const hecl::Runtime::FileStoreManager& storeMgr,
|
||||||
|
boo::IAudioVoiceEngine* voiceEngine)
|
||||||
|
{
|
||||||
|
InitializeSubsystems(factory, cc, renderTex, storeMgr, voiceEngine);
|
||||||
|
m_globalObjects.PostInitialize();
|
||||||
|
x70_tweaks.RegisterTweaks();
|
||||||
|
//g_TweakManager->ReadFromMemoryCard("AudioTweaks");
|
||||||
|
FillInAssetIDs();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CMain::Proc()
|
||||||
|
{
|
||||||
|
xe8_b24_finished = m_archSupport.Update();
|
||||||
|
return xe8_b24_finished;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMain::Shutdown()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#if MP1_USE_BOO
|
||||||
|
|
||||||
int CMain::appMain(boo::IApplication* app)
|
int CMain::appMain(boo::IApplication* app)
|
||||||
{
|
{
|
||||||
zeus::detectCPU();
|
zeus::detectCPU();
|
||||||
|
@ -225,7 +76,7 @@ int CMain::appMain(boo::IApplication* app)
|
||||||
mainWindow->showWindow();
|
mainWindow->showWindow();
|
||||||
TOneStatic<CGameGlobalObjects> globalObjs;
|
TOneStatic<CGameGlobalObjects> globalObjs;
|
||||||
InitializeSubsystems();
|
InitializeSubsystems();
|
||||||
globalObjs->PostInitialize(x6c_memSys);
|
globalObjs->PostInitialize();
|
||||||
x70_tweaks.RegisterTweaks();
|
x70_tweaks.RegisterTweaks();
|
||||||
AddWorldPaks();
|
AddWorldPaks();
|
||||||
g_TweakManager->ReadFromMemoryCard("AudioTweaks");
|
g_TweakManager->ReadFromMemoryCard("AudioTweaks");
|
||||||
|
@ -266,5 +117,7 @@ int CMain::appMain(boo::IApplication* app)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,51 @@
|
||||||
#ifndef __URDE_MP1_HPP__
|
#ifndef __URDE_MP1_HPP__
|
||||||
#define __URDE_MP1_HPP__
|
#define __URDE_MP1_HPP__
|
||||||
|
|
||||||
|
#define MP1_USE_BOO 0
|
||||||
|
|
||||||
#include <boo/boo.hpp>
|
#include <boo/boo.hpp>
|
||||||
|
#include <boo/graphicsdev/GL.hpp>
|
||||||
|
#include <boo/audiodev/IAudioVoiceEngine.hpp>
|
||||||
#include "CMemory.hpp"
|
#include "CMemory.hpp"
|
||||||
#include "CTweaks.hpp"
|
#include "CTweaks.hpp"
|
||||||
#include "CPlayMovie.hpp"
|
#include "CPlayMovie.hpp"
|
||||||
#include "IOStreams.hpp"
|
#include "IOStreams.hpp"
|
||||||
|
#include "CBasics.hpp"
|
||||||
|
#include "CMemoryCardSys.hpp"
|
||||||
|
#include "CResFactory.hpp"
|
||||||
|
#include "CSimplePool.hpp"
|
||||||
|
#include "Character/CAssetFactory.hpp"
|
||||||
|
#include "CAi.hpp"
|
||||||
|
#include "CGameState.hpp"
|
||||||
|
#include "CInGameTweakManager.hpp"
|
||||||
|
#include "Particle/CElementGen.hpp"
|
||||||
|
#include "Character/CAnimData.hpp"
|
||||||
|
#include "Particle/CDecalManager.hpp"
|
||||||
|
#include "Particle/CGenDescription.hpp"
|
||||||
|
#include "Graphics/CBooRenderer.hpp"
|
||||||
|
#include "Audio/CAudioSys.hpp"
|
||||||
|
#include "Input/CInputGenerator.hpp"
|
||||||
|
#include "GuiSys/CGuiSys.hpp"
|
||||||
|
#include "CIOWinManager.hpp"
|
||||||
|
#include "GuiSys/CSplashScreen.hpp"
|
||||||
|
#include "CMainFlow.hpp"
|
||||||
|
#include "GuiSys/CConsoleOutputWindow.hpp"
|
||||||
|
#include "GuiSys/CTextParser.hpp"
|
||||||
|
#include "Audio/CAudioStateWin.hpp"
|
||||||
|
#include "GameGlobalObjects.hpp"
|
||||||
|
#include "CArchitectureQueue.hpp"
|
||||||
|
#include "MP1.hpp"
|
||||||
|
#include "CTimeProvider.hpp"
|
||||||
|
#include "GuiSys/CTextExecuteBuffer.hpp"
|
||||||
|
|
||||||
|
#include "DataSpec/DNAMP1/Tweaks/CTweakPlayer.hpp"
|
||||||
|
#include "DataSpec/DNAMP1/Tweaks/CTweakGame.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
class CStopwatch;
|
class CStopwatch;
|
||||||
|
class IFactory;
|
||||||
|
class IObjectStore;
|
||||||
|
|
||||||
namespace MP1
|
namespace MP1
|
||||||
{
|
{
|
||||||
|
@ -22,12 +58,143 @@ enum class EGameplayResult
|
||||||
Playing
|
Playing
|
||||||
};
|
};
|
||||||
|
|
||||||
class WindowCallback : public boo::IWindowCallback
|
class CGameGlobalObjects
|
||||||
{
|
{
|
||||||
|
CMemoryCardSys x0_memoryCardSys;
|
||||||
|
IFactory& x20_resFactory;
|
||||||
|
CSimplePool& x114_simplePool;
|
||||||
|
CCharacterFactoryBuilder x14c_charFactoryBuilder;
|
||||||
|
CAiFuncMap x188_aiFuncMap;
|
||||||
|
CGameState x1a8_gameState;
|
||||||
|
CInGameTweakManager x1c0_tweakManager;
|
||||||
|
std::unique_ptr<CBooRenderer> m_renderer;
|
||||||
|
|
||||||
|
void LoadStringTable()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
static CBooRenderer*
|
||||||
|
AllocateRenderer(IObjectStore& store, IFactory& resFactory)
|
||||||
|
{
|
||||||
|
g_Renderer = new CBooRenderer(store, resFactory);
|
||||||
|
return g_Renderer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
CGameGlobalObjects(IFactory& resFactory, CSimplePool& objStore)
|
||||||
|
: x20_resFactory(resFactory), x114_simplePool(objStore)
|
||||||
|
{
|
||||||
|
g_MemoryCardSys = &x0_memoryCardSys;
|
||||||
|
g_ResFactory = &x20_resFactory;
|
||||||
|
g_SimplePool = &x114_simplePool;
|
||||||
|
g_CharFactoryBuilder = &x14c_charFactoryBuilder;
|
||||||
|
g_AiFuncMap = &x188_aiFuncMap;
|
||||||
|
g_GameState = &x1a8_gameState;
|
||||||
|
g_TweakManager = &x1c0_tweakManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PostInitialize()
|
||||||
|
{
|
||||||
|
LoadStringTable();
|
||||||
|
m_renderer.reset(AllocateRenderer(x114_simplePool, x20_resFactory));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CMain : public boo::IApplicationCallback
|
#if MP1_USE_BOO
|
||||||
|
class CGameArchitectureSupport : public boo::IWindowCallback
|
||||||
|
#else
|
||||||
|
class CGameArchitectureSupport
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
CArchitectureQueue m_archQueue;
|
||||||
|
CAudioSys m_audioSys;
|
||||||
|
CInputGenerator m_inputGenerator;
|
||||||
|
CGuiSys m_guiSys;
|
||||||
|
CIOWinManager m_ioWinManager;
|
||||||
|
CSplashScreen m_splashScreen;
|
||||||
|
CMainFlow m_mainFlow;
|
||||||
|
CConsoleOutputWindow m_consoleWindow;
|
||||||
|
CAudioStateWin m_audioStateWin;
|
||||||
|
boo::SWindowRect m_windowRect;
|
||||||
|
bool m_rectIsDirty;
|
||||||
|
|
||||||
|
void mouseDown(const boo::SWindowCoord &coord, boo::EMouseButton button, boo::EModifierKey mods)
|
||||||
|
{ m_inputGenerator.mouseDown(coord, button, mods); }
|
||||||
|
void mouseUp(const boo::SWindowCoord &coord, boo::EMouseButton button, boo::EModifierKey mods)
|
||||||
|
{ m_inputGenerator.mouseUp(coord, button, mods); }
|
||||||
|
void mouseMove(const boo::SWindowCoord &coord)
|
||||||
|
{ m_inputGenerator.mouseMove(coord); }
|
||||||
|
void scroll(const boo::SWindowCoord &coord, const boo::SScrollDelta &scroll)
|
||||||
|
{ m_inputGenerator.scroll(coord, scroll); }
|
||||||
|
void charKeyDown(unsigned long charCode, boo::EModifierKey mods, bool isRepeat)
|
||||||
|
{ m_inputGenerator.charKeyDown(charCode, mods, isRepeat); }
|
||||||
|
void charKeyUp(unsigned long charCode, boo::EModifierKey mods)
|
||||||
|
{ m_inputGenerator.charKeyUp(charCode, mods); }
|
||||||
|
void specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat)
|
||||||
|
{ m_inputGenerator.specialKeyDown(key, mods, isRepeat); }
|
||||||
|
void specialKeyUp(boo::ESpecialKey key, boo::EModifierKey mods)
|
||||||
|
{ m_inputGenerator.specialKeyUp(key, mods); }
|
||||||
|
void modKeyDown(boo::EModifierKey mod, bool isRepeat)
|
||||||
|
{ m_inputGenerator.modKeyDown(mod, isRepeat);}
|
||||||
|
void modKeyUp(boo::EModifierKey mod)
|
||||||
|
{ m_inputGenerator.modKeyUp(mod); }
|
||||||
|
|
||||||
|
void destroyed() { m_archQueue.Push(std::move(MakeMsg::CreateApplicationExit(EArchMsgTarget::ArchitectureSupport))); }
|
||||||
|
|
||||||
|
void resized(const boo::SWindowRect &rect)
|
||||||
|
{
|
||||||
|
m_windowRect = rect;
|
||||||
|
m_rectIsDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
CGameArchitectureSupport()
|
||||||
|
: m_audioSys(0,0,0,0,0),
|
||||||
|
m_inputGenerator(0.0f /*g_tweakPlayer->GetLeftLogicalThreshold()*/,
|
||||||
|
0.0f /*g_tweakPlayer->GetRightLogicalThreshold()*/),
|
||||||
|
m_guiSys(*g_ResFactory, *g_SimplePool, CGuiSys::EUsageMode::Zero)
|
||||||
|
{
|
||||||
|
g_GuiSys = &m_guiSys;
|
||||||
|
m_inputGenerator.startScanning();
|
||||||
|
}
|
||||||
|
bool Update()
|
||||||
|
{
|
||||||
|
bool finished = false;
|
||||||
|
m_inputGenerator.Update(1.0 / 60.0, m_archQueue);
|
||||||
|
|
||||||
|
while(m_archQueue)
|
||||||
|
{
|
||||||
|
CArchitectureMessage msg = m_archQueue.Pop();
|
||||||
|
if (msg.GetTarget() == EArchMsgTarget::ArchitectureSupport)
|
||||||
|
{
|
||||||
|
if (msg.GetType() == EArchMsgType::ApplicationExit)
|
||||||
|
finished = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.GetTarget() == EArchMsgTarget::Game && msg.GetType() == EArchMsgType::UserInput)
|
||||||
|
{
|
||||||
|
const CArchMsgParmUserInput* input = msg.GetParm<CArchMsgParmUserInput>();
|
||||||
|
if (input->x4_parm.DStart())
|
||||||
|
m_archQueue.Push(std::move(MakeMsg::CreateApplicationExit(EArchMsgTarget::ArchitectureSupport)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return finished;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isRectDirty() { return m_rectIsDirty; }
|
||||||
|
const boo::SWindowRect& getWindowRect()
|
||||||
|
{
|
||||||
|
m_rectIsDirty = false;
|
||||||
|
return m_windowRect;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#if MP1_USE_BOO
|
||||||
|
class CMain : public boo::IApplicationCallback
|
||||||
|
#else
|
||||||
|
class CMain
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#if MP1_USE_BOO
|
||||||
boo::IWindow* mainWindow;
|
boo::IWindow* mainWindow;
|
||||||
int appMain(boo::IApplication* app);
|
int appMain(boo::IApplication* app);
|
||||||
void appQuitting(boo::IApplication*)
|
void appQuitting(boo::IApplication*)
|
||||||
|
@ -39,20 +206,39 @@ class CMain : public boo::IApplicationCallback
|
||||||
fprintf(stderr, "%s ", path.c_str());
|
fprintf(stderr, "%s ", path.c_str());
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
CMemorySys x6c_memSys;
|
//CMemorySys x6c_memSys;
|
||||||
CTweaks x70_tweaks;
|
CTweaks x70_tweaks;
|
||||||
EGameplayResult xe4_gameplayResult;
|
EGameplayResult xe4_gameplayResult;
|
||||||
bool xe8_b24_finished = false;
|
bool xe8_b24_finished = false;
|
||||||
|
|
||||||
|
/* urde addition: these are simply initialized along with everything else */
|
||||||
|
CGameGlobalObjects m_globalObjects;
|
||||||
|
CGameArchitectureSupport m_archSupport;
|
||||||
|
|
||||||
|
void InitializeSubsystems(boo::IGraphicsDataFactory* factory,
|
||||||
|
boo::IGraphicsCommandQueue* cc,
|
||||||
|
boo::ITextureR* renderTex,
|
||||||
|
const hecl::Runtime::FileStoreManager& storeMgr,
|
||||||
|
boo::IAudioVoiceEngine* voiceEngine);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CMain();
|
CMain(IFactory& resFactory, CSimplePool& resStore);
|
||||||
void RegisterResourceTweaks();
|
void RegisterResourceTweaks();
|
||||||
void ResetGameState();
|
void ResetGameState();
|
||||||
void StreamNewGameState(CInputStream&);
|
void StreamNewGameState(CInputStream&);
|
||||||
void CheckTweakManagerDebugOptions() {}
|
void CheckTweakManagerDebugOptions() {}
|
||||||
void AddWorldPaks();
|
|
||||||
int RsMain(int argc, const boo::SystemChar* argv[]);
|
//int RsMain(int argc, const boo::SystemChar* argv[]);
|
||||||
|
void Init(boo::IGraphicsDataFactory* factory,
|
||||||
|
boo::IGraphicsCommandQueue* cc,
|
||||||
|
boo::ITextureR* renderTex,
|
||||||
|
const hecl::Runtime::FileStoreManager& storeMgr,
|
||||||
|
boo::IAudioVoiceEngine* voiceEngine);
|
||||||
|
bool Proc();
|
||||||
|
void Shutdown();
|
||||||
|
|
||||||
bool CheckReset();
|
bool CheckReset();
|
||||||
bool CheckTerminate() {return false;}
|
bool CheckTerminate() {return false;}
|
||||||
void DrawDebugMetrics(double, CStopwatch&) {}
|
void DrawDebugMetrics(double, CStopwatch&) {}
|
||||||
|
@ -60,7 +246,6 @@ public:
|
||||||
void FillInAssetIDs();
|
void FillInAssetIDs();
|
||||||
void LoadAudio();
|
void LoadAudio();
|
||||||
void ShutdownSubsystems();
|
void ShutdownSubsystems();
|
||||||
void InitializeSubsystems();
|
|
||||||
EGameplayResult GetGameplayResult() const {return xe4_gameplayResult;}
|
EGameplayResult GetGameplayResult() const {return xe4_gameplayResult;}
|
||||||
void SetGameplayResult(EGameplayResult wl) {xe4_gameplayResult = wl;}
|
void SetGameplayResult(EGameplayResult wl) {xe4_gameplayResult = wl;}
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,6 +8,8 @@ s32 CDecalManager::m_FreeIndex = 63;
|
||||||
float CDecalManager::m_DeltaTimeSinceLastDecalCreation = 0.f;
|
float CDecalManager::m_DeltaTimeSinceLastDecalCreation = 0.f;
|
||||||
s32 CDecalManager::m_LastDecalCreatedIndex = -1;
|
s32 CDecalManager::m_LastDecalCreatedIndex = -1;
|
||||||
ResId CDecalManager::m_LastDecalCreatedAssetId = -1;
|
ResId CDecalManager::m_LastDecalCreatedAssetId = -1;
|
||||||
|
rstl::reserved_vector<CDecalManager::SDecal, 64> CDecalManager::m_DecalPool;
|
||||||
|
rstl::reserved_vector<s32, 64> CDecalManager::m_ActiveIndexList;
|
||||||
|
|
||||||
void CDecalManager::Initialize()
|
void CDecalManager::Initialize()
|
||||||
{
|
{
|
||||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
||||||
Subproject commit 3a48b3b05afacbf61cb5801fa1aa96567aa42a35
|
Subproject commit 7393a88a0d2e79586ae9ae097c9c8fb2b68105da
|
Loading…
Reference in New Issue