diff options
author | Filippos Karapetis | 2012-04-19 01:03:09 -0700 |
---|---|---|
committer | Filippos Karapetis | 2012-04-19 01:03:09 -0700 |
commit | 0a51667e424df073a56810f7f0c225dd922e5142 (patch) | |
tree | 98018e9491ce1b36a7a0fe5fd20f4526da715c9c | |
parent | 6544a05bf83ceea3dbde9bfa2bfdd1e8f001d25d (diff) | |
parent | 8d274f5006cd55f9cb635172c715fdff1bcd0063 (diff) | |
download | scummvm-rg350-0a51667e424df073a56810f7f0c225dd922e5142.tar.gz scummvm-rg350-0a51667e424df073a56810f7f0c225dd922e5142.tar.bz2 scummvm-rg350-0a51667e424df073a56810f7f0c225dd922e5142.zip |
Merge pull request #229 from criezy/dreamweb-fr
Support for Dreamweb fr/es
-rw-r--r-- | engines/dreamweb/dreamweb.cpp | 58 | ||||
-rw-r--r-- | engines/dreamweb/dreamweb.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 8 |
3 files changed, 63 insertions, 4 deletions
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp index a846579e46..2e9c7bb2b8 100644 --- a/engines/dreamweb/dreamweb.cpp +++ b/engines/dreamweb/dreamweb.cpp @@ -63,6 +63,20 @@ DreamWebEngine::DreamWebEngine(OSystem *syst, const DreamWebGameDescription *gam _channel1 = 0; _datafilePrefix = "DREAMWEB."; + // ES and FR CD release use a different data file prefix + if (isCD()) { + switch(getLanguage()) { + case Common::ES_ESP: + _datafilePrefix = "DREAMWSP."; + break; + case Common::FR_FRA: + _datafilePrefix = "DREAMWFR."; + break; + default: + // Nothing to do + break; + } + } _openChangeSize = kInventx+(4*kItempicsize); _quitRequested = false; @@ -526,10 +540,54 @@ uint8 DreamWebEngine::modifyChar(uint8 c) const { default: return c; } + case Common::FR_FRA: + switch(c) { + case 133: + return 'Z' + 1; + case 130: + return 'Z' + 2; + case 138: + return 'Z' + 3; + case 136: + return 'Z' + 4; + case 140: + return 'Z' + 5; + case 135: + return 'Z' + 6; + case 149: + return ',' - 1; + case 131: + return ',' - 2; + case 141: + return ',' - 3; + case 139: + return ',' - 4; + case 151: + return 'A' - 1; + case 147: + return 'A' - 3; + case 150: + return 'A' - 4; + default: + return c; + } default: return c; } } + +Common::String DreamWebEngine::modifyFileName(const char *name) { + Common::String fileName(name); + + // Sanity check + if (!fileName.hasPrefix("DREAMWEB.")) + return fileName; + + // Make sure we use the correct file name as it differs depending on the game variant + fileName = _datafilePrefix; + fileName += name + 9; + return fileName; +} bool DreamWebEngine::hasSpeech() { return isCD() && _hasSpeech; diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index 13a27449dc..4065e5a860 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -149,6 +149,7 @@ public: Common::Language getLanguage() const; uint8 modifyChar(uint8 c) const; + Common::String modifyFileName(const char *); void stopSound(uint8 channel); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 8226982db7..5a53b82510 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -2090,8 +2090,8 @@ void DreamWebEngine::getRidOfAll() { void DreamWebEngine::loadRoomData(const Room &room, bool skipDat) { processEvents(); Common::File file; - if (!file.open(room.name)) - error("cannot open file %s", room.name); + if (!file.open(modifyFileName(room.name))) + error("cannot open file %s", modifyFileName(room.name).c_str()); FileHeader header; file.read((uint8 *)&header, sizeof(FileHeader)); @@ -2176,8 +2176,8 @@ void DreamWebEngine::restoreReels() { processEvents(); Common::File file; - if (!file.open(room.name)) - error("cannot open file %s", room.name); + if (!file.open(modifyFileName(room.name))) + error("cannot open file %s", modifyFileName(room.name).c_str()); FileHeader header; file.read((uint8 *)&header, sizeof(FileHeader)); |