aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2005-04-09 11:59:43 +0000
committerMax Horn2005-04-09 11:59:43 +0000
commit34098ae3c738b553c4b12377ba74b1d80072e41b (patch)
treeda42f614fdce06e856fcfdd7c8afaebbc35f3830
parentdb43946f05b299bfc480bca391106e9750f04c6a (diff)
downloadscummvm-rg350-34098ae3c738b553c4b12377ba74b1d80072e41b.tar.gz
scummvm-rg350-34098ae3c738b553c4b12377ba74b1d80072e41b.tar.bz2
scummvm-rg350-34098ae3c738b553c4b12377ba74b1d80072e41b.zip
Simplify the substResFileName system a bit
svn-id: r17475
-rw-r--r--scumm/resource.cpp4
-rw-r--r--scumm/resource_v7he.cpp4
-rw-r--r--scumm/script_v72he.cpp2
-rw-r--r--scumm/scumm.cpp33
-rw-r--r--scumm/scumm.h2
-rw-r--r--scumm/sound.cpp4
6 files changed, 18 insertions, 31 deletions
diff --git a/scumm/resource.cpp b/scumm/resource.cpp
index a31676e536..0cedc49686 100644
--- a/scumm/resource.cpp
+++ b/scumm/resource.cpp
@@ -134,9 +134,9 @@ void ScummEngine::openRoom(int room) {
if (_substResFileNameIndex > 0 && !(_features & GF_NES)) {
char tmpBuf[128];
- generateSubstResFileName(buf, tmpBuf, 128, 0, _substResFileNameIndex);
+ generateSubstResFileName(buf, tmpBuf, sizeof(tmpBuf));
strcpy(buf, tmpBuf);
- generateSubstResFileName(buf2, tmpBuf, 128, 0, _substResFileNameIndex);
+ generateSubstResFileName(buf2, tmpBuf, sizeof(tmpBuf));
strcpy(buf2, tmpBuf);
}
diff --git a/scumm/resource_v7he.cpp b/scumm/resource_v7he.cpp
index 11eed18fda..8580920dba 100644
--- a/scumm/resource_v7he.cpp
+++ b/scumm/resource_v7he.cpp
@@ -146,7 +146,7 @@ int Win32ResExtractor::extractResource(const char *resType, char *resName, byte
if (_vm->_substResFileNameIndex > 0) {
char buf1[128];
- _vm->generateSubstResFileName(_fileName, buf1, 128, 0, _vm->_substResFileNameIndex);
+ _vm->generateSubstResFileName(_fileName, buf1, sizeof(buf1));
strcpy(_fileName, buf1);
}
}
@@ -1282,7 +1282,7 @@ void MacResExtractor::setCursor(int id) {
char buf1[128];
snprintf(buf1, 128, "%s.he3", _vm->getGameName());
- _vm->generateSubstResFileName(buf1, _fileName, 128, 0, _vm->_substResFileNameIndex);
+ _vm->generateSubstResFileName(buf1, _fileName, sizeof(buf1));
// Some programs write it as .bin. Try that too
if (!f.exists(_fileName)) {
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp
index 9b3b014080..c48b407d43 100644
--- a/scumm/script_v72he.cpp
+++ b/scumm/script_v72he.cpp
@@ -1679,7 +1679,7 @@ void ScummEngine_v72he::o72_openFile() {
if (_substResFileNameIndex > 0) {
char buf1[128];
- generateSubstResFileName((char *)filename, buf1, 256, 0, _substResFileNameIndex);
+ generateSubstResFileName((char *)filename, buf1, sizeof(buf1));
strcpy((char *)filename, buf1);
}
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 43adf669d2..e5cdb9856e 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -74,7 +74,7 @@
extern bool isSmartphone(void);
#endif
-static int generateSubstResFileName_(const char *filename, char *buf, int bufsize, int cont = 0, int index = 0);
+static int generateSubstResFileName_(const char *filename, char *buf, int bufsize, int index);
namespace Scumm {
@@ -2958,8 +2958,8 @@ void ScummEngine::errorString(const char *buf1, char *buf2) {
}
}
-int ScummEngine::generateSubstResFileName(const char *filename, char *buf, int bufsize, int cont, int index) {
- return generateSubstResFileName_(filename, buf, bufsize, cont, index);
+int ScummEngine::generateSubstResFileName(const char *filename, char *buf, int bufsize) {
+ return generateSubstResFileName_(filename, buf, bufsize, _substResFileNameIndex);
}
@@ -2982,7 +2982,6 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
const ScummGameSettings *g;
char detectName[128];
char tempName[128];
- bool substIsOver;
int substLastIndex = 0;
typedef Common::Map<Common::String, bool> StringSet;
@@ -3015,10 +3014,9 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
}
strcpy(tempName, detectName);
- substIsOver = false;
substLastIndex = 0;
- while (!substIsOver) {
+ while (substLastIndex != -1) {
// Iterate over all files in the given directory
for (FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
if (!file->isDirectory()) {
@@ -3042,9 +3040,7 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
}
}
- if ((substLastIndex = generateSubstResFileName_(tempName, detectName, 128,
- substLastIndex)) == -1)
- substIsOver = true;
+ substLastIndex = generateSubstResFileName_(tempName, detectName, sizeof(detectName), substLastIndex+1);
}
}
@@ -3101,13 +3097,10 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
return detectedGames;
}
-static int generateSubstResFileName_(const char *filename, char *buf, int bufsize, int cont, int index) {
- if (cont == -1)
+static int generateSubstResFileName_(const char *filename, char *buf, int bufsize, int index) {
+ if (index <= 0)
return -1;
- if (cont >= 0)
- cont++;
-
char num = filename[strlen(filename) - 1];
// In some cases we have .(a) and .(b) extensions
@@ -3117,10 +3110,7 @@ static int generateSubstResFileName_(const char *filename, char *buf, int bufsiz
const char *ext = strrchr(filename, '.');
int len = ext - filename;
- if (index > 0)
- cont = index;
-
- for (int i = cont; i < ARRAYSIZE(substResFileNameTable); i++) {
+ for (int i = index; i < ARRAYSIZE(substResFileNameTable); i++) {
if (!scumm_strnicmp(filename, substResFileNameTable[i].winName, len)) {
switch (substResFileNameTable[i].genMethod) {
case kGenMac:
@@ -3194,16 +3184,13 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
}
strcpy(tempName, detectName);
- bool substIsOver = false;
File f;
- while (!substIsOver) {
+ while (substLastIndex != -1) {
if (f.exists(detectName, ConfMan.get("path").c_str()))
break;
- if ((substLastIndex = generateSubstResFileName_(tempName, detectName, 256,
- substLastIndex)) == -1)
- substIsOver = true;
+ substLastIndex = generateSubstResFileName_(tempName, detectName, sizeof(detectName), substLastIndex + 1);
}
// Force game to have Mac platform if needed
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 0c7482fbf4..55c3d5868a 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -551,7 +551,7 @@ public:
int _roomResource; // FIXME - should be protected but Sound::pauseSounds uses it
bool _egoPositioned; // Used by Actor::putActor, hence public
- int generateSubstResFileName(const char *filename, char *buf, int bufsize, int cont = 0, int index = 0);
+ int generateSubstResFileName(const char *filename, char *buf, int bufsize);
int _substResFileNameIndex;
protected:
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index 60d183bf47..263d6ed6cb 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -183,7 +183,7 @@ void Sound::playSound(int soundID, int heOffset, int heChannel, int heFlags) {
sprintf(buf, "%s.he4", _vm->getGameName());
if (_vm->_substResFileNameIndex > 0) {
- _vm->generateSubstResFileName(buf, buf1, 128, 0, _vm->_substResFileNameIndex);
+ _vm->generateSubstResFileName(buf, buf1, sizeof(buf1));
strcpy(buf, buf1);
}
if (musicFile.open(buf) == false) {
@@ -1121,7 +1121,7 @@ ScummFile *Sound::openSfxFile() {
if (_vm->_substResFileNameIndex > 0) {
char buf1[128];
- _vm->generateSubstResFileName(buf, buf1, 128, 0, _vm->_substResFileNameIndex);
+ _vm->generateSubstResFileName(buf, buf1, sizeof(buf1));
strcpy(buf, buf1);
}
if (file->open(buf) && _vm->_heversion <= 72)