From 01c92cf6f5efbfe36c48f9d00122c93cc4f5d2cd Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Tue, 2 May 2006 03:23:03 +0000 Subject: Add support for reading/writing config files through saveGameManager and use for config files in HE games svn-id: r22273 --- engines/scumm/he/intern_he.h | 2 +- engines/scumm/he/script_v60he.cpp | 18 +++--------------- engines/scumm/he/script_v80he.cpp | 20 ++++++++++++-------- 3 files changed, 16 insertions(+), 24 deletions(-) (limited to 'engines') diff --git a/engines/scumm/he/intern_he.h b/engines/scumm/he/intern_he.h index 47cb1cd374..ad67e47032 100644 --- a/engines/scumm/he/intern_he.h +++ b/engines/scumm/he/intern_he.h @@ -83,7 +83,7 @@ protected: int virtScreenSave(byte *dst, int x1, int y1, int x2, int y2); void virtScreenLoad(int resIdx, int x1, int y1, int x2, int y2); - int convertFilePath(byte *dst, bool setFilePath = false); + int convertFilePath(byte *dst); virtual void decodeParseString(int a, int b); void swapObjects(int object1, int object2); diff --git a/engines/scumm/he/script_v60he.cpp b/engines/scumm/he/script_v60he.cpp index da8f8fbad6..614a337fc4 100644 --- a/engines/scumm/he/script_v60he.cpp +++ b/engines/scumm/he/script_v60he.cpp @@ -399,10 +399,10 @@ const char *ScummEngine_v60he::getOpcodeDesc(byte i) { return _opcodesv60he[i].desc; } -int ScummEngine_v60he::convertFilePath(byte *dst, bool setFilePath) { +int ScummEngine_v60he::convertFilePath(byte *dst) { debug(1, "convertFilePath: original filePath is %s", dst); - int len = resStrLen(dst) + 1; + int len = resStrLen(dst); if (dst[0] == ':') { // Switch all : to / for portablity int j = 0; @@ -431,19 +431,7 @@ int ScummEngine_v60he::convertFilePath(byte *dst, bool setFilePath) { } } - if (setFilePath) { - char filePath[256]; - strncpy(filePath, (char *)dst + r, sizeof(filePath)); - if (!Common::File::exists(filePath)) { - // FIXME: Using getSavePath() to generate filepaths used with - // File::open is not portable! - strncpy(filePath, _saveFileMan->getSavePath(), sizeof(filePath)); - strncat(filePath, (char *)dst + r, sizeof(filePath)); - } - strcpy((char *)dst, filePath); - debug(1, "convertFilePath: filePath is %s", dst); - } - + debug(1, "convertFilePath: converted filePath is %s", dst + r); return r; } diff --git a/engines/scumm/he/script_v80he.cpp b/engines/scumm/he/script_v80he.cpp index 8735e920c7..b7d689c069 100644 --- a/engines/scumm/he/script_v80he.cpp +++ b/engines/scumm/he/script_v80he.cpp @@ -449,15 +449,18 @@ void ScummEngine_v80he::o80_readConfigFile() { byte option[128], section[128], filename[256]; ArrayHeader *ah; Common::String entry; - int len; + int len, r; copyScriptString(option, sizeof(option)); copyScriptString(section, sizeof(section)); copyScriptString(filename, sizeof(filename)); - convertFilePath(filename, true); + r = convertFilePath(filename); Common::ConfigFile ConfFile; - ConfFile.loadFromFile((const char *)filename); + if (!strcmp((char *)filename + r, "map.ini")) + ConfFile.loadFromFile((const char *)filename + r); + else + ConfFile.loadFromSaveFile((const char *)filename + r); byte subOp = fetchScriptByte(); @@ -487,7 +490,7 @@ void ScummEngine_v80he::o80_readConfigFile() { void ScummEngine_v80he::o80_writeConfigFile() { byte filename[256], section[256], option[256], string[1024]; - int value; + int r, value; byte subOp = fetchScriptByte(); @@ -499,7 +502,6 @@ void ScummEngine_v80he::o80_writeConfigFile() { copyScriptString(option, sizeof(option)); copyScriptString(section, sizeof(section)); copyScriptString(filename, sizeof(filename)); - convertFilePath(filename, true); break; case 77: // HE 100 case 7: // string @@ -507,16 +509,18 @@ void ScummEngine_v80he::o80_writeConfigFile() { copyScriptString(option, sizeof(option)); copyScriptString(section, sizeof(section)); copyScriptString(filename, sizeof(filename)); - convertFilePath(filename, true); break; default: error("o80_writeConfigFile: default type %d", subOp); } + r = convertFilePath(filename); + Common::ConfigFile ConfFile; - ConfFile.loadFromFile((const char *)filename); + ConfFile.loadFromSaveFile((const char *)filename + r); ConfFile.setKey((char *)option, (char *)section, (char *)string); - ConfFile.saveToFile((const char *)filename); + ConfFile.saveToSaveFile((const char *)filename + r); + debug(1,"o80_writeConfigFile: Filename %s Section %s Option %s String %s", filename, section, option, string); } -- cgit v1.2.3