aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/sci.cpp')
-rw-r--r--engines/sci/sci.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index 812a230bb8..33e7e4b994 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -280,12 +280,29 @@ Common::String SciEngine::getSavegamePattern() const {
return _targetName + ".???";
}
+Common::String SciEngine::getFilePrefix() const {
+ const char* gameID = getGameID();
+ if (!strcmp(gameID, "qfg2")) {
+ // Quest for Glory 2 wants to read files from Quest for Glory 1 (EGA/VGA) to import character data
+ if (_gamestate->currentRoomNumber() == 805)
+ return "qfg1";
+ // TODO: Include import-room for qfg1vga
+ }
+ if (!strcmp(gameID, "qfg3")) {
+ // Quest for Glory 3 wants to read files from Quest for Glory 2 to import character data
+ if (_gamestate->currentRoomNumber() == 54)
+ return "qfg2";
+ }
+ // TODO: Implement the same for qfg4, when sci32 is good enough
+ return _targetName;
+}
+
Common::String SciEngine::wrapFilename(const Common::String &name) const {
- return _targetName + "-" + name;
+ return getFilePrefix() + "-" + name;
}
Common::String SciEngine::unwrapFilename(const Common::String &name) const {
- Common::String prefix = _targetName + "-";
+ Common::String prefix = getFilePrefix() + "-";
if (name.hasPrefix(prefix.c_str()))
return Common::String(name.c_str() + prefix.size());
return name;