aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2008-09-07 22:10:58 +0000
committerMax Horn2008-09-07 22:10:58 +0000
commit2bc093828f0c626c7dd57f9cb300284b8563e411 (patch)
treedb05cf763dd73e0f413648e7b62863b104af220b
parent3c48fb7eaec11a81ee90577ee2e94bfa209aee69 (diff)
downloadscummvm-rg350-2bc093828f0c626c7dd57f9cb300284b8563e411.tar.gz
scummvm-rg350-2bc093828f0c626c7dd57f9cb300284b8563e411.tar.bz2
scummvm-rg350-2bc093828f0c626c7dd57f9cb300284b8563e411.zip
Replaced Engine::_gameDataPath (a String) by Engine::_gameDataDir (an FSNode); adapted code to that (by using getChild() to get subdirs, not string concatenation
svn-id: r34434
-rw-r--r--engines/agos/agos.cpp24
-rw-r--r--engines/engine.cpp14
-rw-r--r--engines/engine.h4
-rw-r--r--engines/m4/m4.cpp2
-rw-r--r--engines/parallaction/parallaction.cpp2
-rw-r--r--engines/saga/saga.cpp12
-rw-r--r--engines/scumm/resource.cpp2
-rw-r--r--engines/scumm/scumm.cpp24
-rw-r--r--engines/sword1/sword1.cpp16
-rw-r--r--engines/sword2/sword2.cpp12
10 files changed, 53 insertions, 59 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index ec496fd285..97d84e036c 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -506,24 +506,24 @@ AGOSEngine::AGOSEngine(OSystem *syst)
// Add default file directories for Acorn version of
// Simon the Sorcerer 1
- File::addDefaultDirectory(_gameDataPath + "execute");
- File::addDefaultDirectory(_gameDataPath + "EXECUTE");
+ File::addDefaultDirectory(_gameDataDir.getChild("execute"));
+ File::addDefaultDirectory(_gameDataDir.getChild("EXECUTE"));
// Add default file directories for Amiga/Macintosh
// verisons of Simon the Sorcerer 2
- File::addDefaultDirectory(_gameDataPath + "voices");
- File::addDefaultDirectory(_gameDataPath + "VOICES");
+ File::addDefaultDirectory(_gameDataDir.getChild("voices"));
+ File::addDefaultDirectory(_gameDataDir.getChild("VOICES"));
// Add default file directories for Amiga & Macintosh
// versions of The Feeble Files
- File::addDefaultDirectory(_gameDataPath + "gfx");
- File::addDefaultDirectory(_gameDataPath + "GFX");
- File::addDefaultDirectory(_gameDataPath + "movies");
- File::addDefaultDirectory(_gameDataPath + "MOVIES");
- File::addDefaultDirectory(_gameDataPath + "sfx");
- File::addDefaultDirectory(_gameDataPath + "SFX");
- File::addDefaultDirectory(_gameDataPath + "speech");
- File::addDefaultDirectory(_gameDataPath + "SPEECH");
+ File::addDefaultDirectory(_gameDataDir.getChild("gfx"));
+ File::addDefaultDirectory(_gameDataDir.getChild("GFX"));
+ File::addDefaultDirectory(_gameDataDir.getChild("movies"));
+ File::addDefaultDirectory(_gameDataDir.getChild("MOVIES"));
+ File::addDefaultDirectory(_gameDataDir.getChild("sfx"));
+ File::addDefaultDirectory(_gameDataDir.getChild("SFX"));
+ File::addDefaultDirectory(_gameDataDir.getChild("speech"));
+ File::addDefaultDirectory(_gameDataDir.getChild("SPEECH"));
syst->getEventManager()->registerRandomSource(_rnd, "agos");
}
diff --git a/engines/engine.cpp b/engines/engine.cpp
index 2c6df225e5..1d3368b10d 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -56,15 +56,7 @@ Engine::Engine(OSystem *syst)
_eventMan(_system->getEventManager()),
_saveFileMan(_system->getSavefileManager()),
_targetName(ConfMan.getActiveDomainName()),
-
- // FIXME: Temporary workaround for "missing" slashes at the end
- // of _gameDataPath. This can go once we completed the transition
- // to the new Archive/SearchPath system. See also bug #2098279.
-#ifdef __SYMBIAN32__
- _gameDataPath(ConfMan.get("path")),
-#else
- _gameDataPath(ConfMan.get("path") + '/'),
-#endif
+ _gameDataDir(ConfMan.get("path")),
_pauseLevel(0),
_mainMenuDialog(NULL) {
@@ -158,12 +150,12 @@ void Engine::checkCD() {
char buffer[MAXPATHLEN];
int i;
- if (strlen(_gameDataPath.c_str()) == 0) {
+ if (_gameDataDir.getPath().empty()) {
// That's it! I give up!
if (getcwd(buffer, MAXPATHLEN) == NULL)
return;
} else
- strncpy(buffer, _gameDataPath.c_str(), MAXPATHLEN);
+ strncpy(buffer, _gameDataDir.getPath().c_str(), MAXPATHLEN);
for (i = 0; i < MAXPATHLEN - 1; i++) {
if (buffer[i] == '\\')
diff --git a/engines/engine.h b/engines/engine.h
index a8e759e274..81e4e6187c 100644
--- a/engines/engine.h
+++ b/engines/engine.h
@@ -26,6 +26,7 @@
#define ENGINES_ENGINE_H
#include "common/events.h"
+#include "common/fs.h"
#include "common/scummsys.h"
#include "common/str.h"
@@ -60,7 +61,8 @@ protected:
virtual int runDialog(Dialog &dialog);
const Common::String _targetName; // target name for saves
- const Common::String _gameDataPath;
+
+ const Common::FilesystemNode _gameDataDir;
private:
/**
diff --git a/engines/m4/m4.cpp b/engines/m4/m4.cpp
index e49d33acb0..44d7f653d1 100644
--- a/engines/m4/m4.cpp
+++ b/engines/m4/m4.cpp
@@ -107,7 +107,7 @@ M4Engine::M4Engine(OSystem *syst, const M4GameDescription *gameDesc) :
// FIXME
_vm = this;
- Common::File::addDefaultDirectory(_gameDataPath);
+ Common::File::addDefaultDirectory(_gameDataDir);
Common::File::addDefaultDirectory("goodstuf"); // FIXME: This is nonsense
Common::File::addDefaultDirectory("resource"); // FIXME: This is nonsense
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index 03464d8a7e..828cb4d021 100644
--- a/engines/parallaction/parallaction.cpp
+++ b/engines/parallaction/parallaction.cpp
@@ -66,7 +66,7 @@ Parallaction::Parallaction(OSystem *syst, const PARALLACTIONGameDescription *gam
// FIXME
_vm = this;
- Common::File::addDefaultDirectory( _gameDataPath );
+ Common::File::addDefaultDirectory(_gameDataDir);
Common::addSpecialDebugLevel(kDebugDialogue, "dialogue", "Dialogues debug level");
Common::addSpecialDebugLevel(kDebugParser, "parser", "Parser debug level");
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index 79e2fd9ac6..5ce5d6ab93 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -92,20 +92,20 @@ SagaEngine::SagaEngine(OSystem *syst, const SAGAGameDescription *gameDesc)
// The Linux version of Inherit the Earth puts all data files in an
// 'itedata' sub-directory, except for voices.rsc
- Common::File::addDefaultDirectory(_gameDataPath + "itedata/");
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("itedata"));
// The Windows version of Inherit the Earth puts various data files in
// other subdirectories.
- Common::File::addDefaultDirectory(_gameDataPath + "graphics/");
- Common::File::addDefaultDirectory(_gameDataPath + "music/");
- Common::File::addDefaultDirectory(_gameDataPath + "sound/");
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("graphics"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("music"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("sound"));
// The Multi-OS version puts the voices file in the root directory of
// the CD. The rest of the data files are in game/itedata
- Common::File::addDefaultDirectory(_gameDataPath + "game/itedata/");
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("game").getChild("itedata"));
// Mac CD Wyrmkeep
- Common::File::addDefaultDirectory(_gameDataPath + "patch/");
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("patch"));
_displayClip.left = _displayClip.top = 0;
syst->getEventManager()->registerRandomSource(_rnd, "saga");
diff --git a/engines/scumm/resource.cpp b/engines/scumm/resource.cpp
index 5160dd09e9..50e0d221ca 100644
--- a/engines/scumm/resource.cpp
+++ b/engines/scumm/resource.cpp
@@ -226,7 +226,7 @@ void ScummEngine::askForDisk(const char *filename, int disknum) {
#ifdef MACOSX
sprintf(buf, "Cannot find file: '%s'\nPlease insert disc %d.\nPress OK to retry, Quit to exit", filename, disknum);
#else
- sprintf(buf, "Cannot find file: '%s'\nInsert disc %d into drive %s\nPress OK to retry, Quit to exit", filename, disknum, _gameDataPath.c_str());
+ sprintf(buf, "Cannot find file: '%s'\nInsert disc %d into drive %s\nPress OK to retry, Quit to exit", filename, disknum, _gameDataDir.getPath().c_str());
#endif
result = displayMessage("Quit", buf);
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index e4a6859e21..40a6136628 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -913,20 +913,20 @@ int ScummEngine::init() {
// Add default file directories.
if (((_game.platform == Common::kPlatformAmiga) || (_game.platform == Common::kPlatformAtariST)) && (_game.version <= 4)) {
// This is for the Amiga version of Indy3/Loom/Maniac/Zak
- File::addDefaultDirectory(_gameDataPath + "ROOMS/");
- File::addDefaultDirectory(_gameDataPath + "rooms/");
+ File::addDefaultDirectory(_gameDataDir.getChild("ROOMS"));
+ File::addDefaultDirectory(_gameDataDir.getChild("rooms"));
}
if ((_game.platform == Common::kPlatformMacintosh) && (_game.version == 3)) {
// This is for the Mac version of Indy3/Loom
- File::addDefaultDirectory(_gameDataPath + "Rooms 1/");
- File::addDefaultDirectory(_gameDataPath + "Rooms 2/");
- File::addDefaultDirectory(_gameDataPath + "Rooms 3/");
+ File::addDefaultDirectory(_gameDataDir.getChild("Rooms 1"));
+ File::addDefaultDirectory(_gameDataDir.getChild("Rooms 2"));
+ File::addDefaultDirectory(_gameDataDir.getChild("Rooms 3"));
}
#ifdef ENABLE_SCUMM_7_8
#ifdef MACOSX
- if (_game.version == 8 && !memcmp(_gameDataPath.c_str(), "/Volumes/MONKEY3_", 17)) {
+ if (_game.version == 8 && !memcmp(_gameDataDir.getPath().c_str(), "/Volumes/MONKEY3_", 17)) {
// Special case for COMI on Mac OS X. The mount points on OS X depend
// on the volume name. Hence if playing from CD, we'd get a problem.
// So if loading of a resource file fails, we fall back to the (fixed)
@@ -943,16 +943,16 @@ int ScummEngine::init() {
#endif
if (_game.version == 8) {
// This is for COMI
- File::addDefaultDirectory(_gameDataPath + "RESOURCE/");
- File::addDefaultDirectory(_gameDataPath + "resource/");
+ File::addDefaultDirectory(_gameDataDir.getChild("RESOURCE"));
+ File::addDefaultDirectory(_gameDataDir.getChild("resource"));
}
if (_game.version == 7) {
// This is for Full Throttle & The Dig
- File::addDefaultDirectory(_gameDataPath + "VIDEO/");
- File::addDefaultDirectory(_gameDataPath + "video/");
- File::addDefaultDirectory(_gameDataPath + "DATA/");
- File::addDefaultDirectory(_gameDataPath + "data/");
+ File::addDefaultDirectory(_gameDataDir.getChild("VIDEO"));
+ File::addDefaultDirectory(_gameDataDir.getChild("video"));
+ File::addDefaultDirectory(_gameDataDir.getChild("DATA"));
+ File::addDefaultDirectory(_gameDataDir.getChild("data"));
}
#endif
diff --git a/engines/sword1/sword1.cpp b/engines/sword1/sword1.cpp
index ab6430d6fc..9b79f59a32 100644
--- a/engines/sword1/sword1.cpp
+++ b/engines/sword1/sword1.cpp
@@ -257,14 +257,14 @@ SwordEngine::SwordEngine(OSystem *syst)
_features = 0;
// Add default file directories
- Common::File::addDefaultDirectory(_gameDataPath + "CLUSTERS/");
- Common::File::addDefaultDirectory(_gameDataPath + "MUSIC/");
- Common::File::addDefaultDirectory(_gameDataPath + "SPEECH/");
- Common::File::addDefaultDirectory(_gameDataPath + "VIDEO/");
- Common::File::addDefaultDirectory(_gameDataPath + "clusters/");
- Common::File::addDefaultDirectory(_gameDataPath + "music/");
- Common::File::addDefaultDirectory(_gameDataPath + "speech/");
- Common::File::addDefaultDirectory(_gameDataPath + "video/");
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("CLUSTERS"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("MUSIC"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("SPEECH"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("VIDEO"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("clusters"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("music"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("speech"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("video"));
}
SwordEngine::~SwordEngine() {
diff --git a/engines/sword2/sword2.cpp b/engines/sword2/sword2.cpp
index a171cc0c41..390db0d275 100644
--- a/engines/sword2/sword2.cpp
+++ b/engines/sword2/sword2.cpp
@@ -230,12 +230,12 @@ namespace Sword2 {
Sword2Engine::Sword2Engine(OSystem *syst) : Engine(syst) {
// Add default file directories
- Common::File::addDefaultDirectory(_gameDataPath + "CLUSTERS/");
- Common::File::addDefaultDirectory(_gameDataPath + "SWORD2/");
- Common::File::addDefaultDirectory(_gameDataPath + "VIDEO/");
- Common::File::addDefaultDirectory(_gameDataPath + "clusters/");
- Common::File::addDefaultDirectory(_gameDataPath + "sword2/");
- Common::File::addDefaultDirectory(_gameDataPath + "video/");
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("CLUSTERS"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("SWORD2"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("VIDEO"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("clusters"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("sword2"));
+ Common::File::addDefaultDirectory(_gameDataDir.getChild("video"));
if (0 == scumm_stricmp(ConfMan.get("gameid").c_str(), "sword2demo"))
_features = GF_DEMO;