mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-13 07:14:59 +00:00
Move convertFilePath() to ScummEngine_v60he, to allow use by earlier HE games
svn-id: r21450
This commit is contained in:
parent
a98aea6efd
commit
ef6baca2ac
@ -66,8 +66,11 @@ protected:
|
||||
void redimArray(int arrayId, int newX, int newY, int d);
|
||||
int readFileToArray(int slot, int32 size);
|
||||
void writeFileFromArray(int slot, int resID);
|
||||
|
||||
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);
|
||||
virtual void decodeParseString(int a, int b);
|
||||
void swapObjects(int object1, int object2);
|
||||
|
||||
@ -267,7 +270,6 @@ protected:
|
||||
virtual void decodeParseString(int a, int b);
|
||||
void decodeScriptString(byte *dst, bool scriptString = false);
|
||||
void copyScriptString(byte *dst, int dstSize);
|
||||
int convertFilePath(byte *dst, bool setFilePath = false);
|
||||
|
||||
int findObject(int x, int y, int num, int *args);
|
||||
int getSoundResourceSize(int id);
|
||||
|
@ -399,6 +399,51 @@ const char *ScummEngine_v60he::getOpcodeDesc(byte i) {
|
||||
return _opcodesv60he[i].desc;
|
||||
}
|
||||
|
||||
int ScummEngine_v60he::convertFilePath(byte *dst, bool setFilePath) {
|
||||
debug(1, "convertFilePath: original filePath is %s", dst);
|
||||
|
||||
int len = resStrLen(dst) + 1;
|
||||
if (dst[0] == ':') {
|
||||
// Switch all : to / for portablity
|
||||
int j = 0;
|
||||
for (int i = 1; i < len; i++) {
|
||||
if (dst[i] == ':')
|
||||
dst[j++] = '/';
|
||||
else
|
||||
dst[j++] = dst[i];
|
||||
}
|
||||
} else {
|
||||
// Switch all \ to / for portablity
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (dst[i] == '\\')
|
||||
dst[i] = '/';
|
||||
}
|
||||
}
|
||||
|
||||
// Strip path
|
||||
int r = 0;
|
||||
if (dst[0] == '.' && dst[1] == '/') {
|
||||
r = 2;
|
||||
} else if (dst[0] == 'c' && dst[1] == ':') {
|
||||
for (r = len; r != 0; r--) {
|
||||
if (dst[r - 1] == '/')
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (setFilePath) {
|
||||
char filePath[256];
|
||||
sprintf(filePath, "%s", dst + r);
|
||||
if (!Common::File::exists(filePath)) {
|
||||
sprintf(filePath, "%s%s", _saveFileMan->getSavePath(), dst + r);
|
||||
}
|
||||
strcpy((char *)dst, filePath);
|
||||
debug(1, "convertFilePath: filePath is %s", dst);
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
void ScummEngine_v60he::o60_setState() {
|
||||
int state = pop();
|
||||
int obj = pop();
|
||||
|
@ -526,51 +526,6 @@ void ScummEngine_v72he::readArrayFromIndexFile() {
|
||||
}
|
||||
}
|
||||
|
||||
int ScummEngine_v72he::convertFilePath(byte *dst, bool setFilePath) {
|
||||
debug(1, "convertFilePath: original filePath is %s", dst);
|
||||
|
||||
int len = resStrLen(dst) + 1;
|
||||
if (dst[0] == ':') {
|
||||
// Switch all : to / for portablity
|
||||
int j = 0;
|
||||
for (int i = 1; i < len; i++) {
|
||||
if (dst[i] == ':')
|
||||
dst[j++] = '/';
|
||||
else
|
||||
dst[j++] = dst[i];
|
||||
}
|
||||
} else {
|
||||
// Switch all \ to / for portablity
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (dst[i] == '\\')
|
||||
dst[i] = '/';
|
||||
}
|
||||
}
|
||||
|
||||
// Strip path
|
||||
int r = 0;
|
||||
if (dst[0] == '.' && dst[1] == '/') {
|
||||
r = 2;
|
||||
} else if (dst[0] == 'c' && dst[1] == ':') {
|
||||
for (r = len; r != 0; r--) {
|
||||
if (dst[r - 1] == '/')
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (setFilePath) {
|
||||
char filePath[256];
|
||||
sprintf(filePath, "%s", dst + r);
|
||||
if (!Common::File::exists(filePath)) {
|
||||
sprintf(filePath, "%s%s", _saveFileMan->getSavePath(), dst + r);
|
||||
}
|
||||
strcpy((char *)dst, filePath);
|
||||
debug(1, "convertFilePath: filePath is %s", dst);
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
void ScummEngine_v72he::copyScriptString(byte *dst, int dstSize) {
|
||||
byte string[1024];
|
||||
byte chr;
|
||||
|
@ -1873,8 +1873,7 @@ void Wiz::remapWizImagePal(const WizParameters *params) {
|
||||
}
|
||||
|
||||
void Wiz::processWizImage(const WizParameters *params) {
|
||||
char buf[512];
|
||||
unsigned int i;
|
||||
byte filename[260];
|
||||
|
||||
debug(2, "processWizImage: processMode %d", params->processMode);
|
||||
switch (params->processMode) {
|
||||
@ -1891,14 +1890,10 @@ void Wiz::processWizImage(const WizParameters *params) {
|
||||
if (params->processFlags & kWPFUseFile) {
|
||||
Common::File f;
|
||||
|
||||
// Convert Windows path separators to something more portable
|
||||
strncpy(buf, (const char *)params->filename, 512);
|
||||
for (i = 0; i < strlen(buf); i++) {
|
||||
if (buf[i] == '\\')
|
||||
buf[i] = '/';
|
||||
}
|
||||
memcpy(filename, params->filename, 260);
|
||||
_vm->convertFilePath(filename);
|
||||
|
||||
if (f.open((const char *)buf, Common::File::kFileReadMode)) {
|
||||
if (f.open((const char *)filename, Common::File::kFileReadMode)) {
|
||||
uint32 id = f.readUint32BE();
|
||||
if (id == MKID_BE('AWIZ') || id == MKID_BE('MULT')) {
|
||||
uint32 size = f.readUint32BE();
|
||||
@ -1906,7 +1901,7 @@ void Wiz::processWizImage(const WizParameters *params) {
|
||||
byte *p = _vm->res.createResource(rtImage, params->img.resNum, size);
|
||||
if (f.read(p, size) != size) {
|
||||
_vm->res.nukeResource(rtImage, params->img.resNum);
|
||||
error("i/o error when reading '%s'", buf);
|
||||
error("i/o error when reading '%s'", filename);
|
||||
_vm->VAR(_vm->VAR_GAME_LOADED) = -2;
|
||||
_vm->VAR(119) = -2;
|
||||
} else {
|
||||
@ -1922,7 +1917,7 @@ void Wiz::processWizImage(const WizParameters *params) {
|
||||
} else {
|
||||
_vm->VAR(_vm->VAR_GAME_LOADED) = -3;
|
||||
_vm->VAR(119) = -3;
|
||||
debug(0, "Unable to open for read '%s'", buf);
|
||||
debug(0, "Unable to open for read '%s'", filename);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1938,15 +1933,11 @@ void Wiz::processWizImage(const WizParameters *params) {
|
||||
// TODO Write image to file
|
||||
break;
|
||||
case 0:
|
||||
// Convert Windows path separators to something more portable
|
||||
strncpy(buf, (const char *)params->filename, 512);
|
||||
for (i = 0; i < strlen(buf); i++) {
|
||||
if (buf[i] == '\\')
|
||||
buf[i] = '/';
|
||||
}
|
||||
memcpy(filename, params->filename, 260);
|
||||
_vm->convertFilePath(filename);
|
||||
|
||||
if (!f.open((const char *)buf, Common::File::kFileWriteMode)) {
|
||||
debug(0, "Unable to open for write '%s'", buf);
|
||||
if (!f.open((const char *)filename, Common::File::kFileWriteMode)) {
|
||||
debug(0, "Unable to open for write '%s'", filename);
|
||||
_vm->VAR(119) = -3;
|
||||
} else {
|
||||
byte *p = _vm->getResourceAddress(rtImage, params->img.resNum);
|
||||
|
Loading…
x
Reference in New Issue
Block a user