1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-05 00:49:09 +02:00

Simplify library initialization

This commit is contained in:
Ivan Savenko
2025-03-03 17:20:34 +00:00
parent f7305fd1c2
commit 222b73bbcd
8 changed files with 65 additions and 83 deletions

View File

@ -46,20 +46,7 @@ VCMI_LIB_NAMESPACE_BEGIN
GameLibrary * LIBRARY = nullptr;
DLL_LINKAGE void preinitDLL(bool extractArchives)
{
LIBRARY = new GameLibrary();
LIBRARY->loadFilesystem(extractArchives);
settings.init("config/settings.json", "vcmi:settings");
persistentStorage.init("config/persistentStorage.json", "");
LIBRARY->loadModFilesystem();
}
DLL_LINKAGE void loadDLLClasses(bool onlyEssential)
{
LIBRARY->init(onlyEssential);
}
const ArtifactService * GameLibrary::artifacts() const
{
@ -160,12 +147,21 @@ void GameLibrary::loadModFilesystem()
logGlobal->info("\tMod filesystems: %d ms", loadTime.getDiff());
}
template <class Handler> void createHandler(std::shared_ptr<Handler> & handler)
template <class Handler>
void createHandler(std::unique_ptr<Handler> & handler)
{
handler = std::make_shared<Handler>();
handler = std::make_unique<Handler>();
}
void GameLibrary::init(bool onlyEssential)
void GameLibrary::initializeFilesystem(bool extractArchives)
{
loadFilesystem(extractArchives);
settings.init("config/settings.json", "vcmi:settings");
persistentStorage.init("config/persistentStorage.json", "");
loadModFilesystem();
}
void GameLibrary::initializeLibrary()
{
createHandler(settingsHandler);
modh->initializeConfig();
@ -194,7 +190,7 @@ void GameLibrary::init(bool onlyEssential)
createHandler(obstacleHandler);
modh->load();
modh->afterLoad(onlyEssential);
modh->afterLoad();
}
#if SCRIPTING_ENABLED
@ -207,14 +203,4 @@ void GameLibrary::scriptsLoaded()
GameLibrary::GameLibrary() = default;
GameLibrary::~GameLibrary() = default;
std::shared_ptr<CContentHandler> GameLibrary::getContent() const
{
return modh->content;
}
void GameLibrary::setContent(std::shared_ptr<CContentHandler> content)
{
modh->content = std::move(content);
}
VCMI_LIB_NAMESPACE_END