[Scummvm-cvs-logs] CVS: scummvm/kyra kyra.cpp,1.86,1.87 script_v1.cpp,1.39,1.40

Johannes Schickel lordhoto at users.sourceforge.net
Tue Dec 13 05:30:22 CET 2005


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

Modified Files:
	kyra.cpp script_v1.cpp 
Log Message:
Fixed a bug with transcendScenes in CD version there the old file
is still loaded then.
Also implemented:
cmd_changeCharactersXAndY
cmd_setCharactersLocation
cmd_setCharactersCurrentFrame


Index: kyra.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.cpp,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- kyra.cpp	12 Dec 2005 19:22:49 -0000	1.86
+++ kyra.cpp	13 Dec 2005 13:27:58 -0000	1.87
@@ -1327,6 +1327,15 @@
 void KyraEngine::transcendScenes(int roomIndex, int roomName) {
 	debug(9, "transcendScenes(%d, %d, %d, %d)", roomIndex, roomName);
 	assert(roomIndex < _roomTableSize);
+	if (_features & GF_TALKIE) {
+		char file[32];
+		assert(roomIndex < _roomTableSize);
+		int tableId = _roomTable[roomIndex].nameIndex;
+		assert(tableId < _roomFilenameTableSize);
+		strcpy(file, _roomFilenameTable[tableId]);
+		strcat(file, ".VRM");
+		_res->unloadPakFile(file);
+	}
 	_roomTable[roomIndex].nameIndex = roomName;
 	// _game_unkScreenVar2 = 1;
 	// _game_unkScreenVar3 = 1;

Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/script_v1.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- script_v1.cpp	12 Dec 2005 20:30:23 -0000	1.39
+++ script_v1.cpp	13 Dec 2005 13:27:58 -0000	1.40
@@ -948,7 +948,18 @@
 }
 
 int KyraEngine::cmd_changeCharactersXAndY(ScriptState *script) {
-	warning("STUB: cmd_changeCharactersXAndY");
+	debug(3, "cmd_changeCharactersXAndY(0x%X) (%d, %d, %d)", script, stackPos(0), stackPos(1), stackPos(2));
+	Character *ch = &_characterList[stackPos(0)];
+	int16 x = stackPos(1);
+	int16 y = stackPos(2);
+	if (x != -1 && y != -1) {
+		x &= 0xFFFC;
+		y &= 0xFFFE;
+	}
+	restoreAllObjectBackgrounds();
+	ch->x1 = ch->x2 = x;
+	ch->y1 = ch->y2 = y;
+	preserveAllBackgrounds();
 	return 0;
 }
 
@@ -1060,7 +1071,19 @@
 }
 
 int KyraEngine::cmd_setCharactersLocation(ScriptState *script) {
-	warning("STUB: cmd_setCharactersLocation");
+	debug(3, "cmd_setCharactersLocation(0x%X) (%d, %d)", script, stackPos(0), stackPos(1));
+	Character *ch = &_characterList[stackPos(0)];
+	AnimObject *animObj = &_charactersAnimState[stackPos(0)];
+	int newScene = stackPos(1);
+	if (_currentCharacter->sceneId == ch->sceneId) {
+		if (_currentCharacter->sceneId != newScene)
+			animObj->active = 0;
+	} else if (_currentCharacter->sceneId == newScene) {
+		if (_currentCharacter->sceneId != ch->sceneId)
+			animObj->active = 1;
+	}
+	
+	ch->sceneId = stackPos(1);
 	return 0;
 }
 
@@ -1274,7 +1297,8 @@
 }
 
 int KyraEngine::cmd_setCharactersCurrentFrame(ScriptState *script) {
-	warning("STUB: cmd_setCharactersCurrentFrame");
+	debug(3, "cmd_setCharactersCurrentFrame(0x%X) (%d, %d)", script, stackPos(0), stackPos(1));
+	_characterList[stackPos(0)].currentAnimFrame = stackPos(1);
 	return 0;
 }
 





More information about the Scummvm-git-logs mailing list