[Scummvm-cvs-logs] SF.net SVN: scummvm:[55768] scummvm/trunk/engines/gob/inter_playtoons.cpp
drmccoy at users.sourceforge.net
drmccoy at users.sourceforge.net
Fri Feb 4 16:54:52 CET 2011
Revision: 55768
http://scummvm.svn.sourceforge.net/scummvm/?rev=55768&view=rev
Author: drmccoy
Date: 2011-02-04 15:54:52 +0000 (Fri, 04 Feb 2011)
Log Message:
-----------
GOB: Implement case -2 for oPlaytoons_getObjAnimSize
Modified Paths:
--------------
scummvm/trunk/engines/gob/inter_playtoons.cpp
Modified: scummvm/trunk/engines/gob/inter_playtoons.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_playtoons.cpp 2011-02-04 15:54:21 UTC (rev 55767)
+++ scummvm/trunk/engines/gob/inter_playtoons.cpp 2011-02-04 15:54:52 UTC (rev 55768)
@@ -316,20 +316,54 @@
void Inter_Playtoons::oPlaytoons_getObjAnimSize() {
int16 objIndex;
uint16 readVar[4];
- uint8 i;
+ uint16 types[4];
Mult::Mult_AnimData animData;
_vm->_game->_script->evalExpr(&objIndex);
- for (i = 0; i < 4; i++)
- readVar[i] = _vm->_game->_script->readVarIndex();
+ for (int i = 0; i < 4; i++)
+ readVar[i] = _vm->_game->_script->readVarIndex(0, &types[0]);
if (objIndex == -1) {
warning("oPlaytoons_getObjAnimSize case -1 not implemented");
return;
}
+
if (objIndex == -2) {
- warning("oPlaytoons_getObjAnimSize case -2 not implemented");
+ bool doBreak = false;
+ for (int i = 0; i < 3; i++)
+ storeValue(readVar[i], types[i], -1);
+
+ for (int i = readValue(readVar[3], types[3]); i < _vm->_mult->_objCount; i++) {
+ if (_vm->_mult->_objects[i].pAnimData->isStatic != 0)
+ continue;
+
+ byte *data = (byte *)_vm->_mult->_objects[i].pAnimData;
+
+ for (int j = 1; j < 39; j += 2) {
+ int32 value1 = READ_VARO_UINT32(readVar[3] + j * 4);
+ int32 value2 = READ_VARO_UINT32(readVar[3] + (j + 1) * 4);
+ if (value1 == -1) {
+ doBreak = true;
+ break;
+ }
+
+ if (value1 >= 0) {
+ if ((int8)data[value1] != value2)
+ break;
+ } else {
+ if ((int8)data[-value1] == value2)
+ break;
+ }
+
+ }
+
+ if (doBreak) {
+ storeValue(readVar[0], types[0], i);
+ break;
+ }
+ }
+
return;
}
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