[Scummvm-git-logs] scummvm master -> 59d4f63537eef0c019fc6353f06fdbea37a3b0ba

aquadran aquadran at gmail.com
Sun Feb 28 16:34:17 UTC 2021


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:
59d4f63537 ICB: Reworked game config file support for reading game defaults


Commit: 59d4f63537eef0c019fc6353f06fdbea37a3b0ba
    https://github.com/scummvm/scummvm/commit/59d4f63537eef0c019fc6353f06fdbea37a3b0ba
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2021-02-28T17:34:08+01:00

Commit Message:
ICB: Reworked game config file support for reading game defaults

Changed paths:
    engines/icb/configfile.cpp
    engines/icb/configfile.h
    engines/icb/p4_pc.cpp


diff --git a/engines/icb/configfile.cpp b/engines/icb/configfile.cpp
index 88552b1733..7cc404b62f 100644
--- a/engines/icb/configfile.cpp
+++ b/engines/icb/configfile.cpp
@@ -31,16 +31,28 @@
 
 #include "engines/icb/configfile.h"
 
-// TODO: Complete refactor
-
 #include "common/textconsole.h"
-#include "common/config-manager.h"
+#include "common/ini-file.h"
 
 namespace ICB {
 
 ConfigFile::ConfigFile() {}
 
-void ConfigFile::writeSetting(const Common::String &section, const Common::String &key, const Common::String &value) { _dataSet[section][key] = value; }
+void ConfigFile::readFile(const Common::String &filename) {
+	Common::INIFile file;
+	if (!file.loadFromFile(filename)) {
+		error("Opening file '%s' failed'", filename.c_str());
+		return;
+	}
+
+	Common::INIFile::SectionList sections = file.getSections();
+	for (Common::INIFile::SectionList::const_iterator i = sections.begin(); i != sections.end(); i++) {
+		Common::INIFile::SectionKeyList kList = i->getKeys();
+		for (Common::INIFile::SectionKeyList::const_iterator j = kList.begin(); j != kList.end(); j++) {
+			_dataSet[i->name][j->key] = j->value;
+		}
+	}
+}
 
 Common::String ConfigFile::readSetting(const Common::String &section, const Common::String &key, const Common::String &defaultValue) const {
 	Common::HashMap<Common::String, Common::HashMap<Common::String, Common::String> >::const_iterator sectionIt;
@@ -54,60 +66,8 @@ Common::String ConfigFile::readSetting(const Common::String &section, const Comm
 	return defaultValue;
 }
 
-void ConfigFile::readFile(const Common::String &filename) {
-	Common::String path = ConfMan.get("path") + "/" + filename;
-	std::string currentSection = "";
-	std::ifstream file(path.c_str());
-	if (!file.is_open() || file.fail()) {
-		assert(0);
-	}
-
-	std::string line;
-	while (getline(file, line)) {
-		size_t start = line.find_first_of("[");
-		size_t end = line.find_first_of("]");
-		// Section start
-		if (start == 0 && start != std::string::npos && end != std::string::npos) {
-			currentSection = line.substr(1, end - 1);
-			//std::cout << "Section: " << currentSection << std::endl;
-			continue;
-		}
-		size_t split = line.find_first_of("=");
-		if (split == std::string::npos) {
-			continue;
-		} else {
-			std::string key = line.substr(0, split);
-			std::string value = line.substr(split + 1);
-			//std::cout << "Key: " << key << " Value: " << value << std::endl;
-			writeSetting(currentSection.c_str(), key.c_str(), value.c_str());
-		}
-	}
-	file.close();
-}
-
 int ConfigFile::readIntSetting(const Common::String &section, const Common::String &key, int defaultValue) const {
-	char buff[32];
-	sprintf(buff, "%d", defaultValue);
-	return atoi(readSetting(section, key, buff).c_str());
-}
-
-void ConfigFile::writeFile(const Common::String &filename) const {
-	warning("TODO: Fix ConfMan-writing");
-	return;
-	std::ofstream file(filename.c_str());
-	if (!file.is_open() || file.fail()) {
-		assert(0);
-	}
-
-	Common::HashMap<Common::String, Common::HashMap<Common::String, Common::String> >::const_iterator sectionIt;
-	for (sectionIt = _dataSet.begin(); sectionIt != _dataSet.end(); ++sectionIt) {
-		file << "[" << sectionIt->_key.c_str() << "]\n";
-		Common::HashMap<Common::String, Common::String>::const_iterator keyIt;
-		for (keyIt = sectionIt->_value.begin(); keyIt != sectionIt->_value.end(); ++keyIt) {
-			file << keyIt->_key.c_str() << "=" << keyIt->_value.c_str() << "\n";
-		}
-	}
-	file.close();
+	return atoi(readSetting(section, key, Common::String().format("%d", defaultValue)).c_str());
 }
 
 } // End of namespace ICB
diff --git a/engines/icb/configfile.h b/engines/icb/configfile.h
index eca63ad14a..50fcce6784 100644
--- a/engines/icb/configfile.h
+++ b/engines/icb/configfile.h
@@ -38,12 +38,11 @@ class ConfigFile {
 
 public:
 	ConfigFile();
-	void writeSetting(const Common::String &section, const Common::String &key, const Common::String &value);
+	void writeSetting(const Common::String &section, const Common::String &key, const Common::String &value) {}
 	Common::String readSetting(const Common::String &section, const Common::String &key, const Common::String &defaultValue) const;
 	int readIntSetting(const Common::String &section, const Common::String &key, int defaultValue) const;
 
 	void readFile(const Common::String &filename);
-	void writeFile(const Common::String &filename) const;
 };
 
 } // End of namespace ICB
diff --git a/engines/icb/p4_pc.cpp b/engines/icb/p4_pc.cpp
index 854b70dc95..e888fbbde3 100644
--- a/engines/icb/p4_pc.cpp
+++ b/engines/icb/p4_pc.cpp
@@ -274,9 +274,7 @@ void Save_config_file() {
 			config.writeSetting("Movie Library", temp, tempBuff);
 		}
 	}
-	pxString filename = configFile;
-	filename.ConvertPath();
-	config.writeFile(filename.c_str());
+	// TODO: implement handling config manager
 }
 
 void InitEngine(const char *lpCmdLine) {




More information about the Scummvm-git-logs mailing list