[Scummvm-git-logs] scummvm branch-2-2 -> c83b98722de0b5bd6c9c028656fe8e827c2a7c0d

dreammaster paulfgilbert at gmail.com
Wed Sep 2 04:00:30 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c83b98722d NUVIE: Fix loading settings from scummvm.ini


Commit: c83b98722de0b5bd6c9c028656fe8e827c2a7c0d
    https://github.com/scummvm/scummvm/commit/c83b98722de0b5bd6c9c028656fe8e827c2a7c0d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-01T21:00:16-07:00

Commit Message:
NUVIE: Fix loading settings from scummvm.ini

Changed paths:
    engines/ultima/nuvie/conf/configuration.cpp
    engines/ultima/nuvie/conf/configuration.h
    engines/ultima/nuvie/nuvie.cpp


diff --git a/engines/ultima/nuvie/conf/configuration.cpp b/engines/ultima/nuvie/conf/configuration.cpp
index a5917f0be6..6a7dc23bcf 100644
--- a/engines/ultima/nuvie/conf/configuration.cpp
+++ b/engines/ultima/nuvie/conf/configuration.cpp
@@ -26,6 +26,7 @@
 #include "ultima/nuvie/conf/config_node.h"
 #include "ultima/shared/conf/xml_tree.h"
 #include "common/config-manager.h"
+#include "common/file.h"
 
 namespace Ultima {
 namespace Nuvie {
@@ -101,8 +102,8 @@ void Configuration::value(const Std::string &key, Std::string &ret,
 	}
 
 	// Check for ScummVM entry
-	if (ConfMan.hasKey(k)) {
-		ret = ConfMan.get(k);
+	if (_settings.contains(k)) {
+		ret = _settings[k];
 		return;
 	}
 
@@ -129,8 +130,8 @@ void Configuration::value(const Std::string &key, int &ret, int defaultvalue) {
 	}
 
 	// Check for ScummVM key
-	if (ConfMan.hasKey(k)) {
-		ret = ConfMan.getInt(k);
+	if (_settings.contains(k)) {
+		ret = atoi(_settings[k].c_str());
 		return;
 	}
 
@@ -157,8 +158,8 @@ void Configuration::value(const Std::string &key, bool &ret, bool defaultvalue)
 	}
 
 	// Check for ScummVM key
-	if (ConfMan.hasKey(k)) {
-		ret = ConfMan.getBool(k);
+	if (_settings.contains(k)) {
+		ret = _settings[k].hasPrefixIgnoreCase("t");
 		return;
 	}
 
@@ -197,6 +198,7 @@ bool Configuration::set(const Std::string &key, const Std::string &value) {
 		return true;
 	}
 
+	_settings[k] = value;
 	ConfMan.set(k, value);
 	_configChanged = true;
 
@@ -229,6 +231,7 @@ bool Configuration::set(const Std::string &key, int value) {
 		return true;
 	}
 
+	_settings[k] = Common::String::format("%d", value);
 	ConfMan.setInt(k, value);
 	_configChanged = true;
 
@@ -250,10 +253,12 @@ bool Configuration::set(const Std::string &key, bool value) {
 
 	assert(key.hasPrefix("config/"));
 	Std::string k = key.substr(7);
+	Common::String strValue = value ? "true" : "false";
 
 	if (_localKeys.contains(k)) {
-		_localKeys[k] = value ? "true" : "false";
+		_localKeys[k] = strValue;
 	} else {
+		_settings[k] = strValue;
 		ConfMan.setBool(k, value);
 		_configChanged = true;
 	}
@@ -307,38 +312,57 @@ bool Configuration::isDefaultsSet() const {
 	return ConfMan.hasKey("config/video/screen_width");
 }
 
+void Configuration::load(GameId gameId, bool isEnhanced) {
+	// Load basic defaults for enhanced vs unehanced
+	if (isEnhanced)
+		setEnhancedDefaults(gameId);
+	else
+		setUnenhancedDefaults(gameId);
+
+	// nuvie.cfg in the game folder can supercede any ScummVM settings
+	if (Common::File::exists("nuvie.cfg"))
+		(void)readConfigFile("nuvie.cfg", "config");
+
+	// Load any further settings from scummvm.ini
+	const Common::ConfigManager::Domain &domain = *ConfMan.getActiveDomain();
+	Common::ConfigManager::Domain::const_iterator it;
+	for (it = domain.begin(); it != domain.end(); ++it) {
+		_settings[(*it)._key] = (*it)._value;
+	}
+}
+
 void Configuration::setCommonDefaults(GameId gameType) {
-	set("config/video/non_square_pixels", "no");
+	_settings["video/non_square_pixels"] = "no";
 
 #ifdef TODO
-	set("config/audio/enabled", true);
-	set("config/audio/enable_music", true);
-	set("config/audio/enable_sfx", true);
-	set("config/audio/music_volume", 100);
-	set("config/audio/sfx_volume", 255);
+	_settings["audio/enabled"] = true;
+	_settings["audio/enable_music"] = true;
+	_settings["audio/enable_sfx"] = true;
+	_settings["audio/music_volume"] = 100;
+	_settings["audio/sfx_volume"] = 255;
 #endif
-	set("config/audio/combat_changes_music", true);
-	set("config/audio/vehicles_change_music", true);
-	set("config/audio/conversations_stop_music", false); // original stopped music - maybe due to memory and disk swapping
-	set("config/audio/stop_music_on_group_change", true);
+	_settings["audio/combat_changes_music"] = "true";
+	_settings["audio/vehicles_change_music"] = "true";
+	_settings["audio/conversations_stop_music"] = "false"; // original stopped music - maybe due to memory and disk swapping
+	_settings["audio/stop_music_on_group_change"] = "true";
 
-	set("config/input/enable_doubleclick", true);
-	set("config/input/enabled_dragging", true);
-	set("config/input/look_on_left_click", true);
-	set("config/input/walk_with_left_button", true);
-	set("config/input/direction_selects_target", true);
+	_settings["input/enable_doubleclick"] = "true";
+	_settings["input/enabled_dragging"] = "true";
+	_settings["input/look_on_left_click"] = "true";
+	_settings["input/walk_with_left_button"] = "true";
+	_settings["input/direction_selects_target"] = "true";
 
-	set("config/general/dither_mode", "none");
-	set("config/general/enable_cursors", true);
-	set("config/general/party_formation", "standard");
+	_settings["general/dither_mode"] = "none";
+	_settings["general/enable_cursors"] = "true";
+	_settings["general/party_formation"] = "standard";
 
 	// Only show the startup console if in ScummVM debug mode
-	set("config/general/show_console", gDebugLevel > 0);
+	_settings["general/show_console"] = gDebugLevel > 0 ? "true" : "false";
 
-	set("config/cheats/enabled", false);
-	set("config/cheats/enable_hackmove", false);
-	set("config/cheats/min_brightness", 0);
-	set("config/cheats/party_all_the_time", false);
+	_settings["cheats/enabled"] = "false";
+	_settings["cheats/enable_hackmove"] = "false";
+	_settings["cheats/min_brightness"] = "0";
+	_settings["cheats/party_all_the_time"] = "false";
 
 	// game specific settings
 	uint8 bg_color[] = { 218, 136, 216 }; // U6, MD, SE
@@ -351,87 +375,90 @@ void Configuration::setCommonDefaults(GameId gameType) {
 		i = 2;
 
 #ifdef TODO
-	set("config/language", "en");
-	set("config/music", "native");
-	set("config/sfx", "native");
+	_settings["language", "en";
+	_settings["music", "native";
+	_settings["sfx", "native";
 
 	if (i == 0) // U6
-		set("config/enable_speech", "yes");
+		_settings["enable_speech", "yes";
 #endif
-	set("config/skip_intro", false);
-	set("config/show_eggs", false);
+	_settings["skip_intro"] = "false";
+	_settings["show_eggs"] = "false";
 	if (i == 0) { // U6
-		set("config/show_stealing", false);
-		set("config/roof_mode", false);
+		_settings["show_stealing"] = "false";
+		_settings["roof_mode"] = "false";
 	}
-	set("config/use_new_dolls", false);
-	set("config/cb_position", "default");
-	set("config/show_orig_style_cb", "default");
+	_settings["use_new_dolls"] = "false";
+	_settings["cb_position"] = "default";
+	_settings["show_orig_style_cb"] = "default";
 	if (i == 0) // U6
-		set("config/cb_text_color", 115);
-	set("config/map_tile_lighting", i == 1 ? false : true); // MD has canals lit up so disable
-	set("config/custom_actor_tiles", "default");
-	set("config/converse_solid_bg", false);
-	set("config/converse_bg_color", bg_color[i]);
-	set("config/converse_width", "default");
-	set("config/converse_height", "default");
+		_settings["cb_text_color"] = "115";
+	_settings["map_tile_lighting"] = i == 1 ? "false": "true"; // MD has canals lit up so disable
+	_settings["custom_actor_tiles"] = "default";
+	_settings["converse_solid_bg"] = "false";
+	_settings["converse_bg_color"] =
+		Common::String::format("%d", bg_color[i]);
+	_settings["converse_width"] = "default";
+	_settings["converse_height"] = "default";
 	if (i == 0) { // U6
-		set("config/displayed_wind_dir", "from");
-		set("config/free_balloon_movement", false);
+		_settings["displayed_wind_dir"] = "from";
+		_settings["free_balloon_movement"] = "false";
 	}
-	set("config/game_specific_keys", "(default)");
-	set("config/newscroll/width", 30);
-	set("config/newscroll/height", 19);
-	set("config/newscroll/solid_bg", false);
-	set("config/newscroll/bg_color", bg_color[i]);
-	set("config/newscroll/border_color", border_color[i]);
-
-	//	set("config/newgamedata/name", "Avatar");
-	//	set("config/newgamedata/gender", 0);
-	//	set("config/newgamedata/portrait", 0);
-	//	set("config/newgamedata/str", 0xf);
-	//	set("config/newgamedata/dex", 0xf);
-	//	set("config/newgamedata/int", 0xf);
+	_settings["game_specific_keys"] = "(default)";
+	_settings["newscroll/width"] = "30";
+	_settings["newscroll/height"] = "19";
+	_settings["newscroll/solid_bg"] = "false";
+	_settings["newscroll/bg_color"] =
+		Common::String::format("%d", bg_color[i]);
+	_settings["newscroll/border_color"] =
+		Common::String::format("%d", border_color[i]);
+
+	//	_settings["newgamedata/name"] = "Avatar";
+	//	_settings["newgamedata/gender"] = "0";
+	//	_settings["newgamedata/portrait"] = "0";
+	//	_settings["newgamedata/str"] = "15";
+	//	_settings["newgamedata/dex"] = "15";
+	//	_settings["newgamedata/int"] = "15";
 }
 
 void Configuration::setUnenhancedDefaults(GameId gameType) {
 	setCommonDefaults(gameType);
 
-	set("config/video/screen_width", 320);
-	set("config/video/screen_height", 200);
-	set("config/video/game_width", 320);
-	set("config/video/game_height", 200);
-	set("config/video/game_style", "original");
-	set("config/video/game_position", "center");
-
-	set("config/general/converse_gump", "default");
-	set("config/general/lighting", "original");
-	set("config/general/use_text_gumps", false);
-
-	set("config/input/doubleclick_opens_containers", false);
-	set("config/input/party_view_targeting", false);
-	set("config/input/new_command_bar", false);
-	set("config/input/interface", "normal");
+	_settings["video/screen_width"] = "320";
+	_settings["video/screen_height"] = "200";
+	_settings["video/game_width"] = "320";
+	_settings["video/game_height"] = "200";
+	_settings["video/game_style"] = "original";
+	_settings["video/game_position"] = "center";
+
+	_settings["general/converse_gump"] = "default";
+	_settings["general/lighting"] = "original";
+	_settings["general/use_text_gumps"] = "false";
+
+	_settings["input/doubleclick_opens_containers"] = "false";
+	_settings["input/party_view_targeting"] = "false";
+	_settings["input/new_command_bar"] = "false";
+	_settings["input/interface"] = "normal";
 }
 
 void Configuration::setEnhancedDefaults(GameId gameType) {
 	setCommonDefaults(gameType);
 
-	set("config/video/screen_width", 640);
-	set("config/video/screen_height", 400);
-	set("config/video/game_width", 640);
-	set("config/video/game_height", 400);
-	set("config/video/game_style", "original+_full_map");
-	set("config/video/game_position", "center");
-
-	set("config/general/converse_gump", "yes");
-	set("config/general/lighting", "smooth");
-	set("config/general/use_text_gumps", true);
-
-	set("config/input/doubleclick_opens_containers", true);
-	set("config/input/party_view_targeting", true);
-	set("config/input/new_command_bar", true);
-	set("config/input/interface", "fullscreen");
+	_settings["video/screen_width"] = "640";
+	_settings["video/screen_height"] = "400";
+	_settings["video/game_width"] = "640";
+	_settings["video/game_height"] = "400";
+	_settings["video/game_style"] = "original+_full_map";
+	_settings["video/game_position"] = "center";
+
+	_settings["general/converse_gump"] = "yes";
+	_settings["general/lighting"] = "smooth";
+	_settings["general/use_text_gumps"] = "true";
+
+	_settings["input/doubleclick_opens_containers"] = "true";
+	_settings["input/party_view_targeting"] = "true";
+	_settings["input/new_command_bar"] = "true";
+	_settings["input/interface"] = "fullscreen";
 }
 
 } // End of namespace Nuvie
diff --git a/engines/ultima/nuvie/conf/configuration.h b/engines/ultima/nuvie/conf/configuration.h
index e7c1baa9ce..9cca4e1c04 100644
--- a/engines/ultima/nuvie/conf/configuration.h
+++ b/engines/ultima/nuvie/conf/configuration.h
@@ -65,11 +65,19 @@ private:
 	Std::vector<Shared::XMLTree*> _trees;
     Common::HashMap<Common::String, Common::String, Common::IgnoreCase_Hash,
         Common::IgnoreCase_EqualTo> _localKeys;
+	Common::HashMap<Common::String, Common::String, Common::IgnoreCase_Hash,
+		Common::IgnoreCase_EqualTo> _settings;
 	Std::string _configFilename;
     bool _configChanged;
 
     // Sets default configurations common to both enhanced and unhenaced
     void setCommonDefaults(GameId gameType);
+
+	// sets up unenhanced version defaults
+	void setUnenhancedDefaults(GameId gameType);
+
+	// sets up enhanced version defaults
+	void setEnhancedDefaults(GameId gameType);
 public:
 	Configuration();
 	~Configuration();
@@ -80,14 +88,12 @@ public:
     // Returns true if default settings for game have previously been set
     bool isDefaultsSet() const;
 
-    // sets up unenhanced version defaults
-    void setUnenhancedDefaults(GameId gameType);
-
-    // sets up enhanced version defaults
-    void setEnhancedDefaults(GameId gameType);
+	// Loads up the configuration settings
+	void load(GameId gameId, bool isEnhanced);
 
 	// write all (writable) config files
 	void write();
+
 	// clear everything
 	void clear();
 
diff --git a/engines/ultima/nuvie/nuvie.cpp b/engines/ultima/nuvie/nuvie.cpp
index ff4776f63b..0b07bd3752 100644
--- a/engines/ultima/nuvie/nuvie.cpp
+++ b/engines/ultima/nuvie/nuvie.cpp
@@ -184,18 +184,7 @@ Common::Error NuvieEngine::run() {
 
 void NuvieEngine::initConfig() {
 	_config = new Configuration();
-
-	// nuvie.cfg in the game folder can supercede any ScummVM settings
-	if (Common::File::exists("nuvie.cfg"))
-		(void)_config->readConfigFile("nuvie.cfg", "config");
-
-	if (!_config->isDefaultsSet()) {
-		if (isEnhanced())
-			_config->setEnhancedDefaults(_gameDescription->gameId);
-		else
-			_config->setUnenhancedDefaults(_gameDescription->gameId);
-	}
-
+	_config->load(_gameDescription->gameId, isEnhanced());
 }
 
 void NuvieEngine::assignGameConfigValues(uint8 gameType) {




More information about the Scummvm-git-logs mailing list