diff options
author | Alexander Baldeck <alexander@archlinux.org> | 2004-12-26 11:39:53 +0000 |
---|---|---|
committer | Alexander Baldeck <alexander@archlinux.org> | 2004-12-26 11:39:53 +0000 |
commit | 72a1107e594b1745026241d323f9fc44813bd91d (patch) | |
tree | 3c9760598495c373582659a18df322ab01a94778 | |
parent | 0c9ef7743aab89249f8fafdb44e362178fba988f (diff) | |
download | mana-72a1107e594b1745026241d323f9fc44813bd91d.tar.gz mana-72a1107e594b1745026241d323f9fc44813bd91d.tar.bz2 mana-72a1107e594b1745026241d323f9fc44813bd91d.tar.xz mana-72a1107e594b1745026241d323f9fc44813bd91d.zip |
- replaced default ini creation routine with new system
- testing version of write support for config system
-rw-r--r-- | src/configuration.cpp | 55 | ||||
-rw-r--r-- | src/configuration.h | 6 | ||||
-rw-r--r-- | src/main.cpp | 31 |
3 files changed, 74 insertions, 18 deletions
diff --git a/src/configuration.cpp b/src/configuration.cpp index 07e6005f..0b1f24a7 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -54,17 +54,64 @@ void Configuration::Init(std::string filename) { #ifdef __DEBUG for (iter = iniOptions.begin(); iter != iniOptions.end(); iter++) { optionTmp = *iter; - std::cout << "key=(" << optionTmp.key << ") stringValue=(" << optionTmp.stringValue << ") numericValue=(" << optionTmp.numericValue << ")\n"; + std::cout << "Configuration::Init(" << optionTmp.key << ", \"" << optionTmp.stringValue << "\" / " << optionTmp.numericValue << ")\n"; } #endif } -bool Configuration::Write() { +bool Configuration::Write(std::string filename) { + std::ofstream out(filename.c_str(), std::ofstream::out | std::ofstream::trunc); + char tmp[20]; + + INI_OPTION optionTmp; + for (iter = iniOptions.begin(); iter != iniOptions.end(); iter++) { + optionTmp = *iter; + out.write(optionTmp.key.c_str(), optionTmp.key.length()); + out.write("=", 1); + + if(optionTmp.numericValue == 0) { + out.write(optionTmp.stringValue.c_str(), optionTmp.stringValue.length()); + }else{ + sprintf(tmp, "%19f", optionTmp.numericValue); + out.write(tmp, strlen(tmp)); + strcpy(tmp, ""); + } + + out.write("\n", 1); + } + + out.close(); return true; } -bool Configuration::setValue(std::string, std::string) { - return true; +void Configuration::setValue(std::string key, std::string value) { + if(getValue(key, value) == value) { + #ifdef __DEBUG + std::cout << "Configuration::setValue(" << key << ", \"" << value << "\")\n"; + #endif + INI_OPTION optionTmp; + + optionTmp.key = key; + optionTmp.stringValue = value; + optionTmp.numericValue = 0; + + iniOptions.push_back(optionTmp); + } +} + +void Configuration::setValue(std::string key, float value) { + if(getValue(key, value) == value) { + #ifdef __DEBUG + std::cout << "Configuration::setValue(" << key << ", " << value << ")\n"; + #endif + + INI_OPTION optionTmp; + + optionTmp.key = key; + optionTmp.numericValue = value; + + iniOptions.push_back(optionTmp); + } } /** diff --git a/src/configuration.h b/src/configuration.h index e3e5b9aa..2bd8f83b 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -39,9 +39,11 @@ class Configuration { public: void Init(std::string); - bool Write(); + bool Write(std::string); + + void setValue(std::string, std::string); + void setValue(std::string, float); - bool setValue(std::string, std::string); std::string getValue(std::string, std::string); float getValue(std::string, float); private: diff --git a/src/main.cpp b/src/main.cpp index 120fb881..68f5cb2a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -173,25 +173,32 @@ void init_engine() { if ( tmwFile == NULL ) { printf("Can't create %s file. Using Defaults.\n", dir); } else { + fclose(tmwFile); // tmw.ini creation - fprintf(tmwFile, "system=\nkeyboard=en\nlanguage=\ncore_version=" CORE_VERSION "\n\n"); - fprintf(tmwFile, "host=animesites.de\nport=6901\n\n"); - fprintf(tmwFile, "#=Screen mode:\n# = 1 Fullscreen\n# = 2 Windowed\nscreen=2\n"); - fprintf(tmwFile, "# = Sound:\n#=1 enabled\n# = 0 disabled\nsound=0\n"); + config.setValue("system", ""); + config.setValue("keyboard", "en"); + config.setValue("language", ""); + config.setValue("core_version", CORE_VERSION); + + + config.setValue("host", "animesites.de"); + config.setValue("port", 6901); + config.setValue("screen", 1); + config.setValue("sound", 1); + - char * chatlogFilename = new char [400]; #ifdef __USE_UNIX98 + char * chatlogFilename = new char [400]; sprintf(chatlogFilename, "%s/.manaworld/chatlog.txt", userHome); + config.setValue("chatlog", chatlogFilename); + delete chatlogFilename; #else - strcpy(chatlogFilename, "chatlog.txt"); + config.setValue("chatlog", "chatlog.txt"); #endif - fprintf(tmwFile, "# = Chat logfile location:\nchatlog=%s\n", chatlogFilename); - delete chatlogFilename; chatlogFilename = 0; - fprintf(tmwFile, "#= Display strecth mode:\n# = 0 Disabled (Test only)\n# = 1 Normal\n# = 2 SuperEagle\n"); - fprintf(tmwFile, "stretch=1\n\n"); - fprintf(tmwFile, "[login]\nremember=1\nusername=Player\n"); - fclose(tmwFile); + config.setValue("stretch", 1); + config.setValue("remember", 1); + config.setValue("username", "Player"); } } |