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

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Fri Feb 4 16:55:21 CET 2011


Revision: 55769
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55769&view=rev
Author:   drmccoy
Date:     2011-02-04 15:55:20 +0000 (Fri, 04 Feb 2011)

Log Message:
-----------
GOB: Add oPlaytoons_loadMultObject

Modified Paths:
--------------
    scummvm/trunk/engines/gob/inter.h
    scummvm/trunk/engines/gob/inter_playtoons.cpp
    scummvm/trunk/engines/gob/inter_v2.cpp

Modified: scummvm/trunk/engines/gob/inter.h
===================================================================
--- scummvm/trunk/engines/gob/inter.h	2011-02-04 15:54:52 UTC (rev 55768)
+++ scummvm/trunk/engines/gob/inter.h	2011-02-04 15:55:20 UTC (rev 55769)
@@ -587,6 +587,7 @@
 	void oPlaytoons_checkData(OpFuncParams &params);
 	void oPlaytoons_readData(OpFuncParams &params);
 
+	void oPlaytoons_loadMultObject();
 	void oPlaytoons_getObjAnimSize();
 	void oPlaytoons_CD_20_23();
 	void oPlaytoons_CD_25();

Modified: scummvm/trunk/engines/gob/inter_playtoons.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_playtoons.cpp	2011-02-04 15:54:52 UTC (rev 55768)
+++ scummvm/trunk/engines/gob/inter_playtoons.cpp	2011-02-04 15:55:20 UTC (rev 55769)
@@ -73,6 +73,7 @@
 	CLEAROPCODEDRAW(0x22);
 	CLEAROPCODEDRAW(0x24);
 
+	OPCODEDRAW(0x17, oPlaytoons_loadMultObject);
 	OPCODEDRAW(0x19, oPlaytoons_getObjAnimSize);
 	OPCODEDRAW(0x20, oPlaytoons_CD_20_23);
 	OPCODEDRAW(0x23, oPlaytoons_CD_20_23);
@@ -313,6 +314,33 @@
 	delete stream;
 }
 
+void Inter_Playtoons::oPlaytoons_loadMultObject() {
+	assert(_vm->_mult->_objects);
+
+	uint16 objIndex = _vm->_game->_script->readValExpr();
+
+	debugC(4, kDebugGameFlow, "Loading mult object %d", objIndex);
+
+	Mult::Mult_Object &obj = _vm->_mult->_objects[objIndex];
+	Mult::Mult_AnimData &objAnim = *(obj.pAnimData);
+
+	*obj.pPosX = _vm->_game->_script->readValExpr();
+	*obj.pPosY = _vm->_game->_script->readValExpr();
+
+	byte *multData = (byte *) &objAnim;
+	for (int i = 0; i < 11; i++) {
+		if (_vm->_game->_script->peekByte() != 99)
+			multData[i] = _vm->_game->_script->readValExpr();
+		else
+			_vm->_game->_script->skip(1);
+	}
+
+	if (((int32)*obj.pPosX != -1234) || ((int32)*obj.pPosY == -4321))
+		return;
+
+	warning("Stub: oPlaytoons_loadMultObject: pPosX == -1234, pPosY == -4321");
+}
+
 void Inter_Playtoons::oPlaytoons_getObjAnimSize() {
 	int16 objIndex;
 	uint16 readVar[4];

Modified: scummvm/trunk/engines/gob/inter_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v2.cpp	2011-02-04 15:54:52 UTC (rev 55768)
+++ scummvm/trunk/engines/gob/inter_v2.cpp	2011-02-04 15:55:20 UTC (rev 55769)
@@ -397,21 +397,17 @@
 void Inter_v2::o2_loadMultObject() {
 	assert(_vm->_mult->_objects);
 
-	int16 val;
-	int16 objIndex;
-	int16 animation;
-	int16 layer;
-	byte *multData;
+	uint16 objIndex = _vm->_game->_script->readValExpr();
 
-	objIndex = _vm->_game->_script->readValExpr();
-	val = _vm->_game->_script->readValExpr();
-	*_vm->_mult->_objects[objIndex].pPosX = val;
-	val = _vm->_game->_script->readValExpr();
-	*_vm->_mult->_objects[objIndex].pPosY = val;
-
 	debugC(4, kDebugGameFlow, "Loading mult object %d", objIndex);
 
-	multData = (byte *)_vm->_mult->_objects[objIndex].pAnimData;
+	Mult::Mult_Object &obj = _vm->_mult->_objects[objIndex];
+	Mult::Mult_AnimData &objAnim = *(obj.pAnimData);
+
+	*obj.pPosX = _vm->_game->_script->readValExpr();
+	*obj.pPosY = _vm->_game->_script->readValExpr();
+
+	byte *multData = (byte *) &objAnim;
 	for (int i = 0; i < 11; i++) {
 		if (_vm->_game->_script->peekByte() != 99)
 			multData[i] = _vm->_game->_script->readValExpr();
@@ -419,33 +415,32 @@
 			_vm->_game->_script->skip(1);
 	}
 
-	Mult::Mult_Object &obj = _vm->_mult->_objects[objIndex];
-	Mult::Mult_AnimData &objAnim = *(obj.pAnimData);
-
 	if ((objAnim.animType == 100) && (objIndex < _vm->_goblin->_gobsCount)) {
 
-		val = *(obj.pPosX) % 256;
-		obj.destX = val;
-		obj.gobDestX = val;
-		obj.goblinX = val;
+		uint8 posX   = *(obj.pPosX) % 256;
+		obj.destX    = posX;
+		obj.gobDestX = posX;
+		obj.goblinX  = posX;
 
-		val = *(obj.pPosY) % 256;
-		obj.destY = val;
-		obj.gobDestY = val;
-		obj.goblinY = val;
+		uint8 posY   = *(obj.pPosY) % 256;
+		obj.destY    = posY;
+		obj.gobDestY = posY;
+		obj.goblinY  = posY;
 
 		*(obj.pPosX) *= _vm->_map->getTilesWidth();
 
-		layer = objAnim.layer;
-		animation = obj.goblinStates[layer][0].animation;
-		objAnim.framesLeft = objAnim.maxFrame;
-		objAnim.nextState = -1;
-		objAnim.newState = -1;
+		int16 layer     = objAnim.layer;
+		int16 animation = obj.goblinStates[layer][0].animation;
+
+		objAnim.framesLeft    = objAnim.maxFrame;
+		objAnim.nextState     = -1;
+		objAnim.newState      = -1;
 		objAnim.pathExistence = 0;
-		objAnim.isBusy = 0;
-		objAnim.state = layer;
-		objAnim.layer = obj.goblinStates[objAnim.state][0].layer;
-		objAnim.animation = animation;
+		objAnim.isBusy        = 0;
+		objAnim.state         = layer;
+		objAnim.layer         = obj.goblinStates[objAnim.state][0].layer;
+		objAnim.animation     = animation;
+
 		_vm->_scenery->updateAnim(layer, 0, animation, 0,
 				*(obj.pPosX), *(obj.pPosY), 0);
 
@@ -460,12 +455,13 @@
 
 	} else if ((objAnim.animType == 101) && (objIndex < _vm->_goblin->_gobsCount)) {
 
-		layer = objAnim.layer;
-		animation = obj.goblinStates[layer][0].animation;
+		int16 layer = objAnim.layer;
+		int16 animation = obj.goblinStates[layer][0].animation;
+
 		objAnim.nextState = -1;
-		objAnim.newState = -1;
-		objAnim.state = layer;
-		objAnim.layer = obj.goblinStates[objAnim.state][0].layer;
+		objAnim.newState  = -1;
+		objAnim.state     = layer;
+		objAnim.layer     = obj.goblinStates[objAnim.state][0].layer;
 		objAnim.animation = animation;
 
 		if ((*(obj.pPosX) == 1000) && (*(obj.pPosY) == 1000)) {
@@ -485,11 +481,11 @@
 			if (obj.videoSlot > 0)
 				_vm->_vidPlayer->closeVideo(obj.videoSlot - 1);
 
-			obj.videoSlot = 0;
-			obj.lastLeft = -1;
-			obj.lastTop = -1;
+			obj.videoSlot  = 0;
+			obj.lastLeft   = -1;
+			obj.lastTop    = -1;
 			obj.lastBottom = -1;
-			obj.lastRight = -1;
+			obj.lastRight  = -1;
 		}
 
 	}


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