[Scummvm-cvs-logs] CVS: scummvm/scumm script_v72he.cpp,2.215,2.216 scumm.cpp,1.352,1.353

kirben kirben at users.sourceforge.net
Wed Mar 9 16:46:55 CET 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5090/scumm

Modified Files:
	script_v72he.cpp scumm.cpp 
Log Message:

Change o72_openFile to always use saved game path for writing.


Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.215
retrieving revision 2.216
diff -u -d -r2.215 -r2.216
--- script_v72he.cpp	8 Mar 2005 03:52:02 -0000	2.215
+++ script_v72he.cpp	10 Mar 2005 00:46:26 -0000	2.216
@@ -32,6 +32,7 @@
 #include "scumm/object.h"
 #include "scumm/resource.h"
 #include "scumm/resource_v7he.h"
+#include "common/savefile.h"
 #include "scumm/scumm.h"
 #include "scumm/sound.h"
 #include "scumm/verbs.h"
@@ -1554,7 +1555,7 @@
 }
 
 void ScummEngine_v72he::o72_openFile() {
-	int mode, slot, l;
+	int mode, slot, len, i, j;
 	byte filename[256];
 
 	mode = pop();
@@ -1562,6 +1563,20 @@
 
 	debug(0,"Original filename %s", filename);
 
+	// HACK: Convert paths in lost/smaller
+	if (filename[0] == ':') {
+		len = resStrLen(filename) + 1;
+		j = 0;
+		for (i = 1; i < len; i++) {
+			if (filename[i] == ':')
+				filename[j++] = '/';
+			else
+				filename[j++] = filename[i];
+		}
+		filename[j] = 0;
+		debug(0,"Converted filename to %s", filename);
+	}
+
 	// Original games read path & filenames from INI file
 	// We only need to add the required game name
 	if (!strcmp((char *)filename,".he3")) {
@@ -1591,37 +1606,44 @@
 		strcpy((char *)filename, buf1);
 	}
 
-	// HACK: Convert paths
-	if (filename[0] == ':') {
-		int len = resStrLen(filename);
-		int i = 1, j = 0;
-		while(len--) {
-			if (filename[i] == ':')
-				filename[j] = '/';
-			else
-				filename[j] = filename[i];
-
-			i++;
-			j++;
+	int r = 0;
+	if (filename[0] == 'c' && filename[1] == ':') {
+		// Strip path
+		for (r = strlen((char*)filename); r != 0; r--) {
+			if (filename[r - 1] == '\\')
+				break;
+		}
+	} else {
+		// Switch all \ to / for portablity
+		len = resStrLen(_scriptPointer) + 1;
+		for (i = 0; i < len; i++) {
+			if (filename[i] == '\\')
+				filename[i] = '/';
 		}
-		debug(0,"Converted filename to %s", filename);
 	}
+	debug(0,"Final filename to %s", filename + r);
 
 	slot = -1;
-	for (l = 0; l < 17; l++) {
-		if (_hFileTable[l].isOpen() == false) {
-			slot = l;
+	for (i = 0; i < 17; i++) {
+		if (_hFileTable[i].isOpen() == false) {
+			slot = i;
 			break;
 		}
 	}
 
 	if (slot != -1) {
-		if (mode == 1)
-			_hFileTable[slot].open((char*)filename, File::kFileReadMode);
-		else if (mode == 2)
-			_hFileTable[slot].open((char*)filename, File::kFileWriteMode);
-		else
+		switch(mode) {
+		case 1:
+			_hFileTable[slot].open((char*)filename + r, File::kFileReadMode, _saveFileMan->getSavePath());
+			if (_hFileTable[slot].isOpen() == false)
+				_hFileTable[slot].open((char*)filename + r, File::kFileReadMode);
+			break;
+		case 2:
+			_hFileTable[slot].open((char*)filename + r, File::kFileWriteMode, _saveFileMan->getSavePath());
+			break;
+		default:
 			error("o72_openFile(): wrong open file mode %d", mode);
+		}
 
 		if (_hFileTable[slot].isOpen() == false)
 			slot = -1;

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.352
retrieving revision 1.353
diff -u -d -r1.352 -r1.353
--- scumm.cpp	9 Mar 2005 23:07:32 -0000	1.352
+++ scumm.cpp	10 Mar 2005 00:46:26 -0000	1.353
@@ -286,7 +286,7 @@
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
 	{"1grademo", "Big Thinkers First Grade (Demo)", GID_HEGAME, 6, 90, 61, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
-	{"freddi3", "Freddi Fish 3: The Case of the Stolen Conch Shell", GID_HEGAME, 6, 90, 61, MDT_NONE,
+	{"freddi3", "Freddi Fish 3: The Case of the Stolen Conch Shell", GID_HEGAME, 6, 90, 62, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_MULTIPLE_VERSIONS, 0, 0},
 	{"f3-mdemo", "Freddi Fish 3: The Case of the Stolen Conch Shell (Demo)", GID_HEGAME, 6, 90, 30, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},





More information about the Scummvm-git-logs mailing list