diff --git a/librecomp/include/librecomp/mods.hpp b/librecomp/include/librecomp/mods.hpp index c7da477..6a73839 100644 --- a/librecomp/include/librecomp/mods.hpp +++ b/librecomp/include/librecomp/mods.hpp @@ -308,6 +308,7 @@ namespace recomp { std::string get_mod_id(size_t mod_index); void set_mod_index(const std::string &mod_game_id, const std::string &mod_id, size_t index); const config::ConfigSchema &get_mod_config_schema(const std::string &mod_id) const; + config::Config *get_mod_config(const std::string &mod_id); const std::vector &get_mod_thumbnail(const std::string &mod_id) const; void set_mod_config_value(size_t mod_index, const std::string &option_id, const config::ConfigValueVariant &value); void set_mod_config_value(const std::string &mod_id, const std::string &option_id, const config::ConfigValueVariant &value); @@ -560,6 +561,7 @@ namespace recomp { bool is_mod_enabled(const std::string& mod_id); bool is_mod_auto_enabled(const std::string& mod_id); const config::ConfigSchema &get_mod_config_schema(const std::string &mod_id); + config::Config *get_mod_config(const std::string &mod_id); const std::vector &get_mod_thumbnail(const std::string &mod_id); void set_mod_config_value(size_t mod_index, const std::string &option_id, const config::ConfigValueVariant &value); void set_mod_config_value(const std::string &mod_id, const std::string &option_id, const config::ConfigValueVariant &value); diff --git a/librecomp/src/mods.cpp b/librecomp/src/mods.cpp index 075b49e..9cd52ef 100644 --- a/librecomp/src/mods.cpp +++ b/librecomp/src/mods.cpp @@ -1335,6 +1335,17 @@ const recomp::config::ConfigSchema &recomp::mods::ModContext::get_mod_config_sch return mod.config.get_config_schema(); } +recomp::config::Config *recomp::mods::ModContext::get_mod_config(const std::string &mod_id) { + // Check that the mod exists. + auto find_it = opened_mods_by_id.find(mod_id); + if (find_it == opened_mods_by_id.end()) { + return nullptr; + } + + ModHandle &mod = opened_mods[find_it->second]; + return &mod.config; +} + const std::vector &recomp::mods::ModContext::get_mod_thumbnail(const std::string &mod_id) const { // Check that the mod exists. auto find_it = opened_mods_by_id.find(mod_id); diff --git a/librecomp/src/recomp.cpp b/librecomp/src/recomp.cpp index 2763718..66b853a 100644 --- a/librecomp/src/recomp.cpp +++ b/librecomp/src/recomp.cpp @@ -549,6 +549,11 @@ const recomp::config::ConfigSchema &recomp::mods::get_mod_config_schema(const st return mod_context->get_mod_config_schema(mod_id); } +recomp::config::Config *recomp::mods::get_mod_config(const std::string &mod_id) { + std::lock_guard lock{ mod_context_mutex }; + return mod_context->get_mod_config(mod_id); +} + const std::vector &recomp::mods::get_mod_thumbnail(const std::string &mod_id) { std::lock_guard lock{ mod_context_mutex }; return mod_context->get_mod_thumbnail(mod_id);