[Scummvm-cvs-logs] SF.net SVN: scummvm:[35591] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Sun Dec 28 19:00:19 CET 2008


Revision: 35591
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35591&view=rev
Author:   drmccoy
Date:     2008-12-28 18:00:19 +0000 (Sun, 28 Dec 2008)

Log Message:
-----------
Fixing the save/load list box's width

Modified Paths:
--------------
    scummvm/trunk/engines/gob/inter.cpp
    scummvm/trunk/engines/gob/inter.h
    scummvm/trunk/engines/gob/inter_v5.cpp
    scummvm/trunk/engines/gob/saveload.h
    scummvm/trunk/engines/gob/saveload_v6.cpp

Modified: scummvm/trunk/engines/gob/inter.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter.cpp	2008-12-28 17:43:52 UTC (rev 35590)
+++ scummvm/trunk/engines/gob/inter.cpp	2008-12-28 18:00:19 UTC (rev 35591)
@@ -184,6 +184,25 @@
 		_vm->_util->clearKeyBuf();
 }
 
+void Inter::writeVar(uint32 offset, uint16 type, uint32 value) {
+	switch (type) {
+	case 16:
+	case 18:
+		WRITE_VARO_UINT8(offset, value);
+		break;
+
+	case 17:
+	case 24:
+	case 27:
+		WRITE_VARO_UINT16(offset, value);
+		break;
+
+	default:
+		WRITE_VAR_OFFSET(offset, value);
+		break;
+	}
+}
+
 void Inter::funcBlock(int16 retFlag) {
 	OpFuncParams params;
 	byte cmd;

Modified: scummvm/trunk/engines/gob/inter.h
===================================================================
--- scummvm/trunk/engines/gob/inter.h	2008-12-28 17:43:52 UTC (rev 35590)
+++ scummvm/trunk/engines/gob/inter.h	2008-12-28 18:00:19 UTC (rev 35591)
@@ -59,6 +59,8 @@
 	void storeMouse();
 	void storeKey(int16 key);
 
+	void writeVar(uint32 offset, uint16 type, uint32 value);
+
 	void funcBlock(int16 retFlag);
 	void callSub(int16 retFlag);
 

Modified: scummvm/trunk/engines/gob/inter_v5.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v5.cpp	2008-12-28 17:43:52 UTC (rev 35590)
+++ scummvm/trunk/engines/gob/inter_v5.cpp	2008-12-28 18:00:19 UTC (rev 35591)
@@ -782,19 +782,20 @@
 bool Inter_v5::o5_istrlen(OpFuncParams &params) {
 	int16 strVar1, strVar2;
 	int16 len;
+	uint16 type;
 
 	if (*_vm->_global->_inter_execPtr == 0x80) {
 		_vm->_global->_inter_execPtr++;
 
 		strVar1 = _vm->_parse->parseVarIndex();
-		strVar2 = _vm->_parse->parseVarIndex();
+		strVar2 = _vm->_parse->parseVarIndex(0, &type);
 
 		len = _vm->_draw->stringLength(GET_VARO_STR(strVar1), READ_VARO_UINT16(strVar2));
 
 	} else {
 
 		strVar1 = _vm->_parse->parseVarIndex();
-		strVar2 = _vm->_parse->parseVarIndex();
+		strVar2 = _vm->_parse->parseVarIndex(0, &type);
 
 		if (_vm->_global->_language == 10) {
 			// Extra handling for Japanese strings
@@ -807,7 +808,8 @@
 			len = strlen(GET_VARO_STR(strVar1));
 	}
 
-	WRITE_VAR_OFFSET(strVar2, len);
+	writeVar(strVar2, type, (int32) len);
+
 	return false;
 }
 

Modified: scummvm/trunk/engines/gob/saveload.h
===================================================================
--- scummvm/trunk/engines/gob/saveload.h	2008-12-28 17:43:52 UTC (rev 35590)
+++ scummvm/trunk/engines/gob/saveload.h	2008-12-28 18:00:19 UTC (rev 35591)
@@ -438,7 +438,6 @@
 	StagedSave *_save;
 
 	byte _indexBuffer[2900];
-	bool _hasIndex;
 
 	virtual int getSaveType(const char *fileName);
 

Modified: scummvm/trunk/engines/gob/saveload_v6.cpp
===================================================================
--- scummvm/trunk/engines/gob/saveload_v6.cpp	2008-12-28 17:43:52 UTC (rev 35590)
+++ scummvm/trunk/engines/gob/saveload_v6.cpp	2008-12-28 18:00:19 UTC (rev 35591)
@@ -50,7 +50,6 @@
 	sprintf(_saveFiles[0].destName, "%s.s00", targetName);
 
 	_varSize = 0;
-	_hasIndex = false;
 }
 
 SaveLoad_v6::~SaveLoad_v6() {
@@ -145,8 +144,7 @@
 }
 
 int32 SaveLoad_v6::getSizeGame(SaveFile &saveFile) {
-	if (!_hasIndex)
-		return -1;
+	refreshIndex();
 
 	Common::SaveFileManager *saveMan = g_system->getSavefileManager();
 	Common::InSaveFile *in;
@@ -178,11 +176,6 @@
 			return false;
 		}
 
-		if (!_hasIndex) {
-			warning("No index written yet");
-			return false;
-		}
-
 		refreshIndex();
 
 		byte *sizes = new byte[size];
@@ -234,7 +227,6 @@
 		}
 
 		_vm->_inter->_variables->copyTo(dataVar, _indexBuffer + offset, 0, size);
-		_hasIndex = true;
 
 	} else {
 		int slot = getSlot(offset);
@@ -248,11 +240,6 @@
 			return false;
 		}
 
-		if (!_hasIndex) {
-			warning("No index written yet");
-			return false;
-		}
-
 		SaveLoad::setCurrentSlot(saveFile.destName, slot);
 
 		byte sizes[40];
@@ -295,7 +282,9 @@
 			memset(names, 0, 40);
 	}
 
-	WRITE_LE_UINT32(_indexBuffer + 160, max + 1);
+	memset(_indexBuffer + 40, 0xFF, 40);          // Joker
+	_indexBuffer[159] = 0x03;                     // # of joker unused
+	WRITE_LE_UINT32(_indexBuffer + 160, max + 1); // # of saves
 }
 
 } // End of namespace Gob


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list