From 40bdce61902e19052d3d3a9e5c43933169f4efd4 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 14 Dec 2019 22:49:36 -0800 Subject: [PATCH] ULTIMA8: Adding area to pass through ScummVM configuration settings to the engine --- engines/ultima/ultima8/conf/setting_manager.cpp | 14 ++++++++++++++ engines/ultima/ultima8/conf/setting_manager.h | 6 ++++-- engines/ultima/ultima8/kernel/core_app.cpp | 1 - 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/engines/ultima/ultima8/conf/setting_manager.cpp b/engines/ultima/ultima8/conf/setting_manager.cpp index bce22a29f72..38a5ef2b419 100644 --- a/engines/ultima/ultima8/conf/setting_manager.cpp +++ b/engines/ultima/ultima8/conf/setting_manager.cpp @@ -19,6 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "ultima/ultima8/misc/pent_include.h" #include "ultima/ultima8/conf/setting_manager.h" #include "ultima/ultima8/conf/config_file_manager.h" +#include "common/config-manager.h" namespace Ultima8 { @@ -36,6 +37,17 @@ SettingManager::SettingManager() { conffileman = ConfigFileManager::get_instance(); conffileman->readConfigString("", "defaultsettings", false); + + // Setup ScummVM configuration settings + setupScummVMSettings(); +} + +void SettingManager::setupScummVMSettings() { + conffileman->readConfigString("", "ScummVM", false); + + int saveSlot = ConfMan.hasKey("save_slot") ? ConfMan.getInt("save_slot") : -1; + if (saveSlot != -1) + set("lastSave", std::string::format("@save/%d", saveSlot), DOM_SCUMMVM); } SettingManager::~SettingManager() { @@ -217,6 +229,8 @@ istring SettingManager::getConfigKey(istring key, Domain dom) { if (dom == DOM_DEFAULTS) { ckey = "defaultsettings/"; + } else if (dom == DOM_SCUMMVM) { + ckey = "ScummVM/"; } else { ckey = "settings/" + domains[dom]; } diff --git a/engines/ultima/ultima8/conf/setting_manager.h b/engines/ultima/ultima8/conf/setting_manager.h index 9e51480e957..0681e192cb5 100644 --- a/engines/ultima/ultima8/conf/setting_manager.h +++ b/engines/ultima/ultima8/conf/setting_manager.h @@ -44,8 +44,9 @@ public: enum Domain { DOM_DEFAULTS = 0, - DOM_GLOBAL = 1, - DOM_GAME = 2, + DOM_SCUMMVM = 1, + DOM_GLOBAL = 2, + DOM_GAME = 3, DOM_CURRENT = 100 }; @@ -120,6 +121,7 @@ private: bool findKeyDomain(Pentagram::istring key, Domain dom, Domain &keydom); Pentagram::istring getConfigKey(Pentagram::istring key, Domain dom); void callCallbacks(Pentagram::istring key); + void setupScummVMSettings(); Callbacks callbacks; std::vector domains; diff --git a/engines/ultima/ultima8/kernel/core_app.cpp b/engines/ultima/ultima8/kernel/core_app.cpp index 02f7d829ec2..ec225733df1 100644 --- a/engines/ultima/ultima8/kernel/core_app.cpp +++ b/engines/ultima/ultima8/kernel/core_app.cpp @@ -107,7 +107,6 @@ void CoreApp::sysInit() { settingman = new SettingManager(); settingman->setDomainName(SettingManager::DOM_GLOBAL, "pentagram"); settingman->setCurrentDomain(SettingManager::DOM_GLOBAL); - } // load configuration files