From 643abe64abde5fa29a92256c3154f073423aee5f Mon Sep 17 00:00:00 2001 From: altalk23 <45172705+altalk23@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:47:09 +0300 Subject: [PATCH] seperate setup of mod --- loader/include/Geode/loader/Mod.hpp | 3 +++ loader/src/internal/InternalMod.cpp | 1 + loader/src/loader/LoaderImpl.cpp | 2 ++ loader/src/loader/Mod.cpp | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/loader/include/Geode/loader/Mod.hpp b/loader/include/Geode/loader/Mod.hpp index dc30466b..eb9ce974 100644 --- a/loader/include/Geode/loader/Mod.hpp +++ b/loader/include/Geode/loader/Mod.hpp @@ -129,6 +129,9 @@ namespace geode { friend void GEODE_CALL ::geode_implicit_load(Mod*); public: + // TODO: impl pimpl + Result<> setup(); + std::string getID() const; std::string getName() const; std::string getDeveloper() const; diff --git a/loader/src/internal/InternalMod.cpp b/loader/src/internal/InternalMod.cpp index 544cd1fb..12cf139a 100644 --- a/loader/src/internal/InternalMod.cpp +++ b/loader/src/internal/InternalMod.cpp @@ -54,5 +54,6 @@ InternalMod::~InternalMod() {} InternalMod* InternalMod::get() { static auto g_mod = new InternalMod; + g_mod->setup(); return g_mod; } diff --git a/loader/src/loader/LoaderImpl.cpp b/loader/src/loader/LoaderImpl.cpp index d92e9523..0a6a2f6f 100644 --- a/loader/src/loader/LoaderImpl.cpp +++ b/loader/src/loader/LoaderImpl.cpp @@ -190,6 +190,8 @@ Result Loader::Impl::loadModFromInfo(ModInfo const& info) { // create Mod instance auto mod = new Mod(info); + mod->setup(); + m_mods.insert({ info.id, mod }); mod->m_enabled = InternalMod::get()->getSavedValue( "should-load-" + info.id, true diff --git a/loader/src/loader/Mod.cpp b/loader/src/loader/Mod.cpp index 408fb8ec..e376c3ac 100644 --- a/loader/src/loader/Mod.cpp +++ b/loader/src/loader/Mod.cpp @@ -17,6 +17,9 @@ Mod::Mod(ModInfo const& info) { m_info = info; m_saveDirPath = dirs::getModsSaveDir() / info.id; ghc::filesystem::create_directories(m_saveDirPath); +} + +Result<> Mod::setup() { this->setupSettings(); auto loadRes = this->loadData(); if (!loadRes) { @@ -25,6 +28,7 @@ Mod::Mod(ModInfo const& info) { info.id, loadRes.unwrapErr() ); } + return Ok(); } Mod::~Mod() {