[Scummvm-git-logs] scummvm master -> 9b34a5dc48a8280c2ad8a5c29022582310ef57ac
dreammaster
paulfgilbert at gmail.com
Wed Sep 2 03:56:23 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:
9b34a5dc48 NUVIE: Fix loading settings from scummvm.ini
Commit: 9b34a5dc48a8280c2ad8a5c29022582310ef57ac
https://github.com/scummvm/scummvm/commit/9b34a5dc48a8280c2ad8a5c29022582310ef57ac
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-01T20:56:13-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 bc51cfb5f0..bbaa5e9fed 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