[Scummvm-cvs-logs] SF.net SVN: scummvm: [23088] scummvm/branches/branch-0-9-0/engines/gob
drmccoy at users.sourceforge.net
drmccoy at users.sourceforge.net
Tue Jun 13 19:03:02 CEST 2006
Revision: 23088
Author: drmccoy
Date: 2006-06-13 10:02:53 -0700 (Tue, 13 Jun 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=23088&view=rev
Log Message:
-----------
More READ_LE_* -> MemoryReadStream conversion + minor cleanup
Modified Paths:
--------------
scummvm/branches/branch-0-9-0/engines/gob/mult.cpp
scummvm/branches/branch-0-9-0/engines/gob/mult.h
scummvm/branches/branch-0-9-0/engines/gob/mult_v1.cpp
scummvm/branches/branch-0-9-0/engines/gob/mult_v2.cpp
scummvm/branches/branch-0-9-0/engines/gob/scenery.cpp
Modified: scummvm/branches/branch-0-9-0/engines/gob/mult.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/gob/mult.cpp 2006-06-13 12:19:10 UTC (rev 23087)
+++ scummvm/branches/branch-0-9-0/engines/gob/mult.cpp 2006-06-13 17:02:53 UTC (rev 23088)
@@ -102,7 +102,6 @@
_animDataAllocated = 0;
- _dataPtr = 0;
for (i = 0; i < 10; i++) {
_staticLoaded[i] = 0;
_animLoaded[i] = 0;
Modified: scummvm/branches/branch-0-9-0/engines/gob/mult.h
===================================================================
--- scummvm/branches/branch-0-9-0/engines/gob/mult.h 2006-06-13 12:19:10 UTC (rev 23087)
+++ scummvm/branches/branch-0-9-0/engines/gob/mult.h 2006-06-13 17:02:53 UTC (rev 23088)
@@ -217,7 +217,6 @@
char _animDataAllocated;
- char *_dataPtr;
int16 _staticLoaded[10];
int16 _animLoaded[10];
int16 _sndSlotsCount;
@@ -227,6 +226,8 @@
Mult_SndKey *_sndKeys;
int8 *_orderArray;
+ int8 _staticCount;
+ int8 _animCount;
void zeroMultData(void);
void checkFreeMult(void);
@@ -308,8 +309,8 @@
int8 animCount;
int16 animIndices[10];
int16 animLoaded[10];
- int16 animKeysIndices1[4]; // Not sure with these
- int16 animKeysIndices2[4]; // "
+ int16 animKeysFrames[4];
+ int16 someKeysFrames[4];
int16 textKeysCount;
Mult_TextKey *textKeys;
Modified: scummvm/branches/branch-0-9-0/engines/gob/mult_v1.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/gob/mult_v1.cpp 2006-06-13 12:19:10 UTC (rev 23087)
+++ scummvm/branches/branch-0-9-0/engines/gob/mult_v1.cpp 2006-06-13 17:02:53 UTC (rev 23088)
@@ -23,6 +23,7 @@
#include "common/stdafx.h"
#include "common/endian.h"
+#include "common/stream.h"
#include "gob/gob.h"
#include "gob/mult.h"
@@ -40,23 +41,18 @@
}
void Mult_v1::loadMult(int16 resId) {
- char animCount;
- char staticCount;
int16 palIndex;
int16 i, j;
_sndSlotsCount = 0;
_frameStart = 0;
_multData = _vm->_game->loadExtData(resId, 0, 0);
- _dataPtr = _multData;
+ Common::MemoryReadStream data((byte *) _multData, 4294967295U);
- staticCount = _dataPtr[0];
- animCount = _dataPtr[1];
- _dataPtr += 2;
- staticCount++;
- animCount++;
+ _staticCount = data.readSByte() + 1;
+ _animCount = data.readSByte() + 1;
- for (i = 0; i < staticCount; i++, _dataPtr += 14) {
+ for (i = 0; i < _staticCount; i++, data.seek(14, SEEK_CUR)) {
_staticIndices[i] = _vm->_scenery->loadStatic(1);
if (_staticIndices[i] >= 100) {
@@ -67,7 +63,7 @@
}
}
- for (i = 0; i < animCount; i++, _dataPtr += 14) {
+ for (i = 0; i < _animCount; i++, data.seek(14, SEEK_CUR)) {
_animIndices[i] = _vm->_scenery->loadAnim(1);
if (_animIndices[i] >= 100) {
@@ -78,98 +74,80 @@
}
}
- _frameRate = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
- _staticKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _frameRate = data.readSint16LE();
+ _staticKeysCount = data.readSint16LE();
_staticKeys = new Mult_StaticKey[_staticKeysCount];
- for (i = 0; i < _staticKeysCount; i++, _dataPtr += 4) {
- _staticKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _staticKeys[i].layer = (int16)READ_LE_UINT16(_dataPtr + 2);
+ for (i = 0; i < _staticKeysCount; i++) {
+ _staticKeys[i].frame = data.readSint16LE();
+ _staticKeys[i].layer = data.readSint16LE();
}
for (j = 0; j < 4; j++) {
- _animKeysCount[j] = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _animKeysCount[j] = data.readSint16LE();
_animKeys[j] = new Mult_AnimKey[_animKeysCount[j]];
- for (i = 0; i < _animKeysCount[j]; i++, _dataPtr += 10) {
- _animKeys[j][i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _animKeys[j][i].layer = (int16)READ_LE_UINT16(_dataPtr + 2);
- _animKeys[j][i].posX = (int16)READ_LE_UINT16(_dataPtr + 4);
- _animKeys[j][i].posY = (int16)READ_LE_UINT16(_dataPtr + 6);
- _animKeys[j][i].order = (int16)READ_LE_UINT16(_dataPtr + 8);
+ for (i = 0; i < _animKeysCount[j]; i++) {
+ _animKeys[j][i].frame = data.readSint16LE();
+ _animKeys[j][i].layer = data.readSint16LE();
+ _animKeys[j][i].posX = data.readSint16LE();
+ _animKeys[j][i].posY = data.readSint16LE();
+ _animKeys[j][i].order = data.readSint16LE();
}
}
for (palIndex = 0; palIndex < 5; palIndex++) {
for (i = 0; i < 16; i++) {
- _fadePal[palIndex][i].red = _dataPtr[0];
- _fadePal[palIndex][i].green = _dataPtr[1];
- _fadePal[palIndex][i].blue = _dataPtr[2];
- _dataPtr += 3;
+ _fadePal[palIndex][i].red = data.readByte();
+ _fadePal[palIndex][i].green = data.readByte();
+ _fadePal[palIndex][i].blue = data.readByte();
}
}
- _palFadeKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
+ _palFadeKeysCount = data.readSint16LE();
_palFadeKeys = new Mult_PalFadeKey[_palFadeKeysCount];
-
- for (i = 0; i < _palFadeKeysCount; i++, _dataPtr += 7) {
- _palFadeKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _palFadeKeys[i].fade = (int16)READ_LE_UINT16(_dataPtr + 2);
- _palFadeKeys[i].palIndex = (int16)READ_LE_UINT16(_dataPtr + 4);
- _palFadeKeys[i].flag = *(_dataPtr + 6);
+ for (i = 0; i < _palFadeKeysCount; i++) {
+ _palFadeKeys[i].frame = data.readSint16LE();
+ _palFadeKeys[i].fade = data.readSint16LE();
+ _palFadeKeys[i].palIndex = data.readSint16LE();
+ _palFadeKeys[i].flag = data.readSByte();
}
- _palKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _palKeysCount = data.readSint16LE();
_palKeys = new Mult_PalKey[_palKeysCount];
- for (i = 0; i < _palKeysCount; i++, _dataPtr += 80) {
- _palKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _palKeys[i].cmd = (int16)READ_LE_UINT16(_dataPtr + 2);
- _palKeys[i].rates[0] = (int16)READ_LE_UINT16(_dataPtr + 4);
- _palKeys[i].rates[1] = (int16)READ_LE_UINT16(_dataPtr + 6);
- _palKeys[i].rates[2] = (int16)READ_LE_UINT16(_dataPtr + 8);
- _palKeys[i].rates[3] = (int16)READ_LE_UINT16(_dataPtr + 10);
- _palKeys[i].unknown0 = (int16)READ_LE_UINT16(_dataPtr + 12);
- _palKeys[i].unknown1 = (int16)READ_LE_UINT16(_dataPtr + 14);
- memcpy(_palKeys[i].subst, _dataPtr + 16, 64);
+ for (i = 0; i < _palKeysCount; i++) {
+ _palKeys[i].frame = data.readSint16LE();
+ _palKeys[i].cmd = data.readSint16LE();
+ _palKeys[i].rates[0] = data.readSint16LE();
+ _palKeys[i].rates[1] = data.readSint16LE();
+ _palKeys[i].rates[2] = data.readSint16LE();
+ _palKeys[i].rates[3] = data.readSint16LE();
+ _palKeys[i].unknown0 = data.readSint16LE();
+ _palKeys[i].unknown1 = data.readSint16LE();
+ data.read(_palKeys[i].subst, 64);
}
- _textKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
+ _textKeysCount = data.readSint16LE();
_textKeys = new Mult_TextKey[_textKeysCount];
-
- for (i = 0; i < _textKeysCount; i++, _dataPtr += 28) {
- _textKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _textKeys[i].cmd = (int16)READ_LE_UINT16(_dataPtr + 2);
+ for (i = 0; i < _textKeysCount; i++) {
+ _textKeys[i].frame = data.readSint16LE();
+ _textKeys[i].cmd = data.readSint16LE();
for (int k = 0; k < 9; ++k)
- _textKeys[i].unknown0[k] = (int16)READ_LE_UINT16(_dataPtr + 4 + (k * 2));
- _textKeys[i].index = (int16)READ_LE_UINT16(_dataPtr + 22);
- _textKeys[i].unknown1[0] = (int16)READ_LE_UINT16(_dataPtr + 24);
- _textKeys[i].unknown1[1] = (int16)READ_LE_UINT16(_dataPtr + 26);
+ _textKeys[i].unknown0[k] = data.readSint16LE();
+ _textKeys[i].index = data.readSint16LE();
+ _textKeys[i].unknown1[0] = data.readSint16LE();
+ _textKeys[i].unknown1[1] = data.readSint16LE();
}
- _sndKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _sndKeysCount = data.readSint16LE();
_sndKeys = new Mult_SndKey[_sndKeysCount];
for (i = 0; i < _sndKeysCount; i++) {
- _sndKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _sndKeys[i].cmd = (int16)READ_LE_UINT16(_dataPtr + 2);
- _sndKeys[i].freq = (int16)READ_LE_UINT16(_dataPtr + 4);
- _sndKeys[i].channel = (int16)READ_LE_UINT16(_dataPtr + 6);
- _sndKeys[i].repCount = (int16)READ_LE_UINT16(_dataPtr + 8);
- _sndKeys[i].resId = (int16)READ_LE_UINT16(_dataPtr + 10);
- _sndKeys[i].soundIndex = (int16)READ_LE_UINT16(_dataPtr + 12);
-
+ _sndKeys[i].frame = data.readSint16LE();
+ _sndKeys[i].cmd = data.readSint16LE();
+ _sndKeys[i].freq = data.readSint16LE();
+ _sndKeys[i].channel = data.readSint16LE();
+ _sndKeys[i].repCount = data.readSint16LE();
_sndKeys[i].soundIndex = -1;
_sndKeys[i].resId = -1;
- _dataPtr += 36;
+ data.seek(26, SEEK_CUR);
switch (_sndKeys[i].cmd) {
case 1:
case 4:
@@ -933,24 +911,16 @@
void Mult_v1::freeMultKeys(void) {
int i;
- char animCount;
- char staticCount;
- _dataPtr = _multData;
- staticCount = _dataPtr[0];
- animCount = _dataPtr[1];
+ delete[] _multData;
- delete[] _dataPtr;
+ for (i = 0; i < _staticCount; i++) {
- staticCount++;
- animCount++;
- for (i = 0; i < staticCount; i++) {
-
if (_staticLoaded[i] != 0)
_vm->_scenery->freeStatic(_staticIndices[i]);
}
- for (i = 0; i < animCount; i++) {
+ for (i = 0; i < _animCount; i++) {
if (_animLoaded[i] != 0)
_vm->_scenery->freeAnim(_animIndices[i]);
}
Modified: scummvm/branches/branch-0-9-0/engines/gob/mult_v2.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/gob/mult_v2.cpp 2006-06-13 12:19:10 UTC (rev 23087)
+++ scummvm/branches/branch-0-9-0/engines/gob/mult_v2.cpp 2006-06-13 17:02:53 UTC (rev 23088)
@@ -23,6 +23,7 @@
#include "common/stdafx.h"
#include "common/endian.h"
+#include "common/stream.h"
#include "gob/gob.h"
#include "gob/mult.h"
@@ -77,16 +78,6 @@
_multData2 = new Mult_Data;
memset(_multData2, 0, sizeof(Mult_Data));
- // ---.
- for (i = 0; i < 4; i++) {
- _multData2->field_157[i] = 0;
- for (j = 0; j < 4; j++) {
- _multData2->field_15F[i][j] = 0;
- _multData2->field_17F[i][j] = 0;
- }
- }
- // ---'
-
_multDatas[index] = _multData2;
for (i = 0; i < 10; i++) {
@@ -101,11 +92,10 @@
_multData2->frameStart = 0;
extData = _vm->_game->loadExtData(resId, 0, 0);
- _dataPtr = extData;
+ Common::MemoryReadStream data((byte *) extData, 4294967295U);
- _multData2->staticCount = staticCount = _dataPtr[0];
- _multData2->animCount = animCount = _dataPtr[1];
- _dataPtr += 2;
+ _multData2->staticCount = staticCount = data.readSByte();
+ _multData2->animCount = animCount = data.readSByte();
staticCount++;
animCount++;
@@ -113,38 +103,32 @@
staticCount &= 0x7F;
debugC(7, DEBUG_GRAPHICS, "statics: %u, anims: %u, hb: %u", staticCount, animCount, hbstaticCount);
- for (i = 0; i < staticCount; i++, _dataPtr += 14) {
+ for (i = 0; i < staticCount; i++, data.seek(14, SEEK_CUR)) {
_multData2->staticIndices[i] = _vm->_scenery->loadStatic(1);
if (_multData2->staticIndices[i] >= 100) {
_multData2->staticIndices[i] -= 100;
_multData2->staticLoaded[i] = 1;
- } else {
+ } else
_multData2->staticLoaded[i] = 0;
- }
}
- for (i = 0; i < animCount; i++, _dataPtr += 14) {
+ for (i = 0; i < animCount; i++, data.seek(14, SEEK_CUR)) {
_multData2->animIndices[i] = _vm->_scenery->loadAnim(1);
if (_multData2->animIndices[i] >= 100) {
_multData2->animIndices[i] -= 100;
_multData2->animLoaded[i] = 1;
- } else {
+ } else
_multData2->animLoaded[i] = 0;
- }
}
- _multData2->frameRate = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
- _multData2->staticKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _multData2->frameRate = data.readSint16LE();
+ _multData2->staticKeysCount = data.readSint16LE();
_multData2->staticKeys = new Mult_StaticKey[_multData2->staticKeysCount];
- for (i = 0; i < _multData2->staticKeysCount; i++, _dataPtr += 4) {
- _multData2->staticKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->staticKeys[i].layer = (int16)READ_LE_UINT16(_dataPtr + 2);
+ for (i = 0; i < _multData2->staticKeysCount; i++) {
+ _multData2->staticKeys[i].frame = data.readSint16LE();
+ _multData2->staticKeys[i].layer = data.readSint16LE();
}
for (i = 0; i < 4; i++) {
@@ -157,90 +141,72 @@
_multData2->field_17F[i][j] = 0;
}
- _multData2->animKeysIndices1[i] = -1;
- _multData2->animKeysCount[i] = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _multData2->animKeysFrames[i] = -1;
+ _multData2->animKeysCount[i] = data.readSint16LE();
_multData2->animKeys[i] = new Mult_AnimKey[_multData2->animKeysCount[i]];
- for (j = 0; j < _multData2->animKeysCount[i]; j++, _dataPtr += 10) {
- _multData2->animKeys[i][j].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->animKeys[i][j].layer = (int16)READ_LE_UINT16(_dataPtr + 2);
- _multData2->animKeys[i][j].posX = (int16)READ_LE_UINT16(_dataPtr + 4);
- _multData2->animKeys[i][j].posY = (int16)READ_LE_UINT16(_dataPtr + 6);
- _multData2->animKeys[i][j].order = (int16)READ_LE_UINT16(_dataPtr + 8);
+ for (j = 0; j < _multData2->animKeysCount[i]; j++) {
+ _multData2->animKeys[i][j].frame = data.readSint16LE();
+ _multData2->animKeys[i][j].layer = data.readSint16LE();
+ _multData2->animKeys[i][j].posX = data.readSint16LE();
+ _multData2->animKeys[i][j].posY = data.readSint16LE();
+ _multData2->animKeys[i][j].order = data.readSint16LE();
}
}
for (palIndex = 0; palIndex < 5; palIndex++) {
for (i = 0; i < 16; i++) {
- _multData2->fadePal[palIndex][i].red = _dataPtr[0];
- _multData2->fadePal[palIndex][i].green = _dataPtr[1];
- _multData2->fadePal[palIndex][i].blue = _dataPtr[2];
- _dataPtr += 3;
+ _multData2->fadePal[palIndex][i].red = data.readByte();
+ _multData2->fadePal[palIndex][i].green = data.readByte();
+ _multData2->fadePal[palIndex][i].blue = data.readByte();
}
}
- _multData2->palFadeKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _multData2->palFadeKeysCount = data.readSint16LE();
_multData2->palFadeKeys = new Mult_PalFadeKey[_multData2->palFadeKeysCount];
-
- for (i = 0; i < _multData2->palFadeKeysCount; i++, _dataPtr += 7) {
- _multData2->palFadeKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->palFadeKeys[i].fade = (int16)READ_LE_UINT16(_dataPtr + 2);
- _multData2->palFadeKeys[i].palIndex = (int16)READ_LE_UINT16(_dataPtr + 4);
- _multData2->palFadeKeys[i].flag = *(_dataPtr + 6);
+ for (i = 0; i < _multData2->palFadeKeysCount; i++) {
+ _multData2->palFadeKeys[i].frame = data.readSint16LE();
+ _multData2->palFadeKeys[i].fade = data.readSint16LE();
+ _multData2->palFadeKeys[i].palIndex = data.readSint16LE();
+ _multData2->palFadeKeys[i].flag = data.readSByte();
}
- _multData2->palKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
+ _multData2->palKeysCount = data.readSint16LE();
_multData2->palKeys = new Mult_PalKey[_multData2->palKeysCount];
-
- for (i = 0; i < _multData2->palKeysCount; i++, _dataPtr += 80) {
- _multData2->palKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->palKeys[i].cmd = (int16)READ_LE_UINT16(_dataPtr + 2);
- _multData2->palKeys[i].rates[0] = (int16)READ_LE_UINT16(_dataPtr + 4);
- _multData2->palKeys[i].rates[1] = (int16)READ_LE_UINT16(_dataPtr + 6);
- _multData2->palKeys[i].rates[2] = (int16)READ_LE_UINT16(_dataPtr + 8);
- _multData2->palKeys[i].rates[3] = (int16)READ_LE_UINT16(_dataPtr + 10);
- _multData2->palKeys[i].unknown0 = (int16)READ_LE_UINT16(_dataPtr + 12);
- _multData2->palKeys[i].unknown1 = (int16)READ_LE_UINT16(_dataPtr + 14);
- memcpy(_multData2->palKeys[i].subst, _dataPtr + 16, 64);
+ for (i = 0; i < _multData2->palKeysCount; i++) {
+ _multData2->palKeys[i].frame = data.readSint16LE();
+ _multData2->palKeys[i].cmd = data.readSint16LE();
+ _multData2->palKeys[i].rates[0] = data.readSint16LE();
+ _multData2->palKeys[i].rates[1] = data.readSint16LE();
+ _multData2->palKeys[i].rates[2] = data.readSint16LE();
+ _multData2->palKeys[i].rates[3] = data.readSint16LE();
+ _multData2->palKeys[i].unknown0 = data.readSint16LE();
+ _multData2->palKeys[i].unknown1 = data.readSint16LE();
+ data.read(_multData2->palKeys[i].subst, 64);
}
- _multData2->textKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
+ _multData2->textKeysCount = data.readSint16LE();
_multData2->textKeys = new Mult_TextKey[_multData2->textKeysCount];
-
- for (i = 0; i < _multData2->textKeysCount; i++, _dataPtr += 4) {
- _multData2->textKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->textKeys[i].cmd = (int16)READ_LE_UINT16(_dataPtr + 2);
+ for (i = 0; i < _multData2->textKeysCount; i++) {
+ _multData2->textKeys[i].frame = data.readSint16LE();
+ _multData2->textKeys[i].cmd = data.readSint16LE();
if (!hbstaticCount)
- _dataPtr += 24;
+ data.seek(24, SEEK_CUR);
}
- _multData2->sndKeysCount = READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
-
- _multData2->sndKeys = new Mult_SndKey[_multData2->sndKeysCount];
-
+ _multData2->sndKeysCount = data.readSint16LE();
warning("SoundKeyCount: %d", _multData2->sndKeysCount);
-
+ _multData2->sndKeys = new Mult_SndKey[_multData2->sndKeysCount];
for (i = 0; i < _multData2->sndKeysCount; i++) {
- _multData2->sndKeys[i].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->sndKeys[i].cmd = (int16)READ_LE_UINT16(_dataPtr + 2);
- _multData2->sndKeys[i].freq = (int16)READ_LE_UINT16(_dataPtr + 4);
- _multData2->sndKeys[i].channel = (int16)READ_LE_UINT16(_dataPtr + 6);
- _multData2->sndKeys[i].repCount = (int16)READ_LE_UINT16(_dataPtr + 8);
-/* _multData2->sndKeys[i].resId = (int16)READ_LE_UINT16(_dataPtr + 10);
- _multData2->sndKeys[i].soundIndex = (int16)READ_LE_UINT16(_dataPtr + 12);*/
-
+ _multData2->sndKeys[i].frame = data.readSint16LE();
+ _multData2->sndKeys[i].cmd = data.readSint16LE();
+ _multData2->sndKeys[i].freq = data.readSint16LE();
+ _multData2->sndKeys[i].channel = data.readSint16LE();
+ _multData2->sndKeys[i].repCount = data.readSint16LE();
_multData2->sndKeys[i].soundIndex = -1;
_multData2->sndKeys[i].resId = -1;
- _dataPtr += 12;
+ data.seek(2, SEEK_CUR);
if (!hbstaticCount)
- _dataPtr += 24;
+ data.seek(24, SEEK_CUR);
switch (_multData2->sndKeys[i].cmd) {
case 1:
@@ -274,30 +240,28 @@
_multData2->execPtr = _vm->_global->_inter_execPtr;
_vm->_global->_inter_execPtr += size * 2;
if (_vm->_game->_totFileData[0x29] >= 51) {
- size = (int16)READ_LE_UINT16(_dataPtr);
+ size = data.readSint16LE();
_multData2->somepointer10 = new char[size * 20];
- memcpy(_multData2->somepointer09 /*???*/, _dataPtr+2, size * 20);
- _dataPtr += size * 20 + 2;
+// data.read(_multData2->somepointer09 /*???*/, size * 20);
+ data.read(_multData2->somepointer10, size * 20);
size = _vm->_inter->load16();
if (size > 0) {
_multData2->somepointer09 = new char[size * 14];
memcpy(_multData2->somepointer09, _vm->_global->_inter_execPtr, size * 14);
_vm->_global->_inter_execPtr += size * 14;
- _dataPtr += 2;
+ data.seek(2, SEEK_CUR);
for (i = 0; i < 4; i++) {
- _multData2->someKeysCount[i] = (int16)READ_LE_UINT16(_dataPtr);
- _dataPtr += 2;
+ _multData2->someKeysCount[i] = data.readSint16LE();
_multData2->someKeys[i] = new Mult_SomeKey[_multData2->someKeysCount[i]];
for (j = 0; j < _multData2->someKeysCount[i]; j++) {
- _multData2->someKeys[i][j].frame = (int16)READ_LE_UINT16(_dataPtr);
- _multData2->someKeys[i][j].field_2 = (int16)READ_LE_UINT16(_dataPtr + 2);
- _multData2->someKeys[i][j].field_4 = (int16)READ_LE_UINT16(_dataPtr + 4);
- _multData2->someKeys[i][j].field_6 = (int16)READ_LE_UINT16(_dataPtr + 6);
- _multData2->someKeys[i][j].field_8 = (int16)READ_LE_UINT16(_dataPtr + 8);
- _multData2->someKeys[i][j].field_A = (int16)READ_LE_UINT16(_dataPtr + 10);
- _multData2->someKeys[i][j].field_C = (int16)READ_LE_UINT16(_dataPtr + 12);
- _multData2->someKeys[i][j].field_E = (int16)READ_LE_UINT16(_dataPtr + 14);
- _dataPtr += 16;
+ _multData2->someKeys[i][j].frame = data.readSint16LE();
+ _multData2->someKeys[i][j].field_2 = data.readSint16LE();
+ _multData2->someKeys[i][j].field_4 = data.readSint16LE();
+ _multData2->someKeys[i][j].field_6 = data.readSint16LE();
+ _multData2->someKeys[i][j].field_8 = data.readSint16LE();
+ _multData2->someKeys[i][j].field_A = data.readSint16LE();
+ _multData2->someKeys[i][j].field_C = data.readSint16LE();
+ _multData2->someKeys[i][j].field_E = data.readSint16LE();
}
}
}
@@ -362,8 +326,8 @@
_multData2->field_124[index][i] = _vm->_parse->parseValExpr();
}
expr = _vm->_parse->parseValExpr();
- _multData2->animKeysIndices1[index] = expr;
- _multData2->animKeysIndices2[index] = expr;
+ _multData2->animKeysFrames[index] = expr;
+ _multData2->someKeysFrames[index] = expr;
WRITE_VAR(18 + index, expr);
if (expr == -1) {
@@ -377,7 +341,7 @@
_multData2->field_157[index] = 32000;
for (i = 0; i < _multData2->textKeysCount; i++) {
textFrame = _multData2->textKeys[i].frame;
- if ((textFrame > _multData2->animKeysIndices2[index]) &&
+ if ((textFrame > _multData2->someKeysFrames[index]) &&
(textFrame < _multData2->field_157[index])) {
_multData2->field_157[index] = textFrame;
}
@@ -386,7 +350,7 @@
_multData2->field_157[index] = 0;
for (i = 0; i < _multData2->textKeysCount; i++) {
textFrame = _multData2->textKeys[i].frame;
- if ((textFrame < _multData2->animKeysIndices2[index]) &&
+ if ((textFrame < _multData2->someKeysFrames[index]) &&
(textFrame > _multData2->field_157[index])) {
_multData2->field_157[index] = textFrame;
}
@@ -403,7 +367,7 @@
for (i = 0; i < 4; i++) {
_multData2->field_15F[index][i] = 0;
for (j = 0; j < _multData2->animKeysCount[i]; j++) {
- if (_multData2->animKeys[i][j].frame >= _multData2->animKeysIndices2[index])
+ if (_multData2->animKeys[i][j].frame >= _multData2->someKeysFrames[index])
_multData2->field_15F[index][i] = j;
}
}
@@ -416,7 +380,7 @@
_multData2->field_17F[index][i] = 0;
for (j = 0; j < _multData2->someKeysCount[i]; j++) {
if (_multData2->field_156 == 1) {
- if (_multData2->someKeys[i][j].frame >= _multData2->animKeysIndices2[index]) {
+ if (_multData2->someKeys[i][j].frame >= _multData2->someKeysFrames[index]) {
_multData2->field_17F[index][i] = j;
break;
}
@@ -927,11 +891,10 @@
int16 frame;
int16 layer;
int16 layers;
- int16 curanim;
+ int16 curAnim;
int i, j;
- // I really doubt animKeysIndices1 is a correct name for that field...
- frame = _multData2->animKeysIndices1[index];
+ frame = _multData2->animKeysFrames[index];
if (frame == -1)
return;
@@ -941,9 +904,7 @@
if ((i >= 4) || (j >= _multData2->animKeysCount[i]))
continue;
animKey = &_multData2->animKeys[i][j];
- if (animKey->frame > frame)
- break;
- else if (animKey->frame == frame) {
+ if (animKey->frame == frame) {
animObj = &_objects[_multData2->field_124[index][i]];
if (animKey->layer > -1) {
_multData2->field_15F[index][i] = j;
@@ -956,39 +917,32 @@
animObj->pAnimData->maxTick = 0;
animObj->pAnimData->animation = 0;
animObj->tick = 0;
- curanim = _multData2->animIndices[0];
+ curAnim = _multData2->animIndices[0];
layer = animKey->layer;
- layers = _vm->_scenery->_animations[curanim].layersCount;
+ layers = _vm->_scenery->_animations[curAnim].layersCount;
while (layer >= layers) {
layer -= layers;
animObj->pAnimData->animation++;
- curanim = _multData2->animIndices[animObj->pAnimData->animation];
- layers = _vm->_scenery->_animations[curanim].layersCount;
+ curAnim = _multData2->animIndices[animObj->pAnimData->animation];
+ layers = _vm->_scenery->_animations[curAnim].layersCount;
}
- animObj->pAnimData->layer = 2;
+ animObj->pAnimData->layer = layer;
animObj->pAnimData->animation =
_multData2->animIndices[animObj->pAnimData->animation];
break;
- }
- else {
+ } else
animObj->pAnimData->isStatic = 1;
- continue;
- }
- }
+ } else if (animKey->frame > frame)
+ break;
}
}
+
if (_multData2->field_124[index][i] != -1) {
-// warning("GOB2 Stub! Messing about with _multData2->someKeys, %d, %d", _multData2->field_17F[index][i], _multData2->someKeysCount[i]);
for (j = _multData2->field_17F[index][i]; j < _multData2->someKeysCount[i]; j++) {
-
someKey1 = &_multData2->someKeys[i][j];
someKey2 = &_multData2->someKeys[i][j-1];
- if (someKey1->frame > frame)
- break;
- else if (someKey1->frame == frame) {
- if (someKey1->field_2 == -1)
- _multData2->someKeysIndices[i] = -1;
- else {
+ if (someKey1->frame == frame) {
+ if (someKey1->field_2 != -1) {
_multData2->someKeysIndices[0] = -1;
_multData2->someKeysIndices[1] = -1;
_multData2->someKeysIndices[2] = -1;
@@ -999,9 +953,10 @@
_multData2->someKeysIndices[i] = -1;
else
_multData2->someKeysIndices[i] = j - 1;
- }
- }
-
+ } else
+ _multData2->someKeysIndices[i] = -1;
+ } else if(someKey1->frame > frame)
+ break;
}
}
if (_multData2->someKeysIndices[i] != -1) {
@@ -1019,40 +974,25 @@
}
doSoundAnim(0, frame);
+ WRITE_VAR(22, frame);
- if (_multData2->field_156 == 1) { // loc_6809
- frame++;
- if (_multData2->field_157[index] == (frame-1)) {
- _multData2->someKeysIndices[0] = -1;
- _multData2->someKeysIndices[1] = -1;
- _multData2->someKeysIndices[2] = -1;
- _multData2->someKeysIndices[3] = -1;
- frame = -1;
- for (i = 0; i < 4; i++) {
- if ((_multData2->field_124[index][i] == -1) || (_multData2->field_124[index][i] == 1024))
- continue;
+ if (_multData2->field_157[index] == frame) {
+ _multData2->someKeysIndices[0] = -1;
+ _multData2->someKeysIndices[1] = -1;
+ _multData2->someKeysIndices[2] = -1;
+ _multData2->someKeysIndices[3] = -1;
+ frame = -1;
+ for (i = 0; i < 4; i++)
+ if ((_multData2->field_124[index][i] != -1) && (_multData2->field_124[index][i] != 1024))
_objects[_multData2->field_124[index][i]].pAnimData->animType =
_objects[_multData2->field_124[index][i]].pAnimData->field_17;
- }
- }
- } else { // loc_68F3
+ } else if(_multData2->field_156 == 1)
+ frame++;
+ else
frame--;
- if (_multData2->field_157[index] == (frame+1)) {
- _multData2->someKeysIndices[0] = -1;
- _multData2->someKeysIndices[1] = -1;
- _multData2->someKeysIndices[2] = -1;
- _multData2->someKeysIndices[3] = -1;
- frame = -1;
- for (i = 0; i < 4; i++) {
- if ((_multData2->field_124[index][i] == -1) || (_multData2->field_124[index][i] == 1024))
- continue;
- _objects[_multData2->field_124[index][i]].pAnimData->animType =
- _objects[_multData2->field_124[index][i]].pAnimData->field_17;
- }
- }
- }
+
// loc_6A06
- _multData2->animKeysIndices1[index] = frame;
+ _multData2->animKeysFrames[index] = frame;
WRITE_VAR(18 + index, frame);
}
@@ -1080,9 +1020,6 @@
int orderArrayPos = 0;
int8 animIndices[150];
int numAnims = 0; // di
- // .-----
- int off_2CE67 = 1000;
- // '-----
if (_objects == 0)
return;
@@ -1112,66 +1049,70 @@
animObj1 = _renderData2[i];
animObj1->someFlag = 0;
- // TODO: the region around off_2CE67 is messed up
- // Should be some high value so that MIN() works
- animObj1->somethingTop = off_2CE67; // seg011:0AA7
- animObj1->somethingLeft = off_2CE67;
+ animObj1->somethingTop = 1000;
+ animObj1->somethingLeft = 1000;
animObj1->somethingBottom = 0;
animObj1->somethingRight = 0;
animData1 = animObj1->pAnimData;
- if ((animData1->isStatic == 0) && (animData1->isPaused == 0)
- && (animData1->maxTick == animObj1->tick)) {
- animObj1->someFlag = 1;
- _vm->_scenery->updateAnim(animData1->layer, animData1->frame,
- animData1->animation, 8, *animObj1->pPosX, *animObj1->pPosY, 0);
- if (animObj1->lastLeft == -1) {
- animObj1->somethingLeft = _vm->_scenery->_toRedrawLeft;
- animObj1->somethingTop = _vm->_scenery->_toRedrawTop;
- animObj1->somethingRight = _vm->_scenery->_toRedrawRight;
- animObj1->somethingBottom = _vm->_scenery->_toRedrawBottom;
- } else {
- animObj1->somethingLeft = MIN(animObj1->lastLeft, _vm->_scenery->_toRedrawLeft);
- animObj1->somethingTop = MIN(animObj1->lastTop, _vm->_scenery->_toRedrawTop);
- animObj1->somethingRight = MAX(animObj1->lastRight, _vm->_scenery->_toRedrawRight);
- animObj1->somethingBottom = MAX(animObj1->lastBottom, _vm->_scenery->_toRedrawBottom);
- if ((_vm->_game->_totFileData[0x29] > 50) &&
- (animObj1->somethingLeft == animObj1->lastLeft) &&
- (animObj1->somethingTop == animObj1->lastTop) &&
- (animObj1->somethingRight == animObj1->lastRight) &&
- (animObj1->somethingBottom == animObj1->lastBottom) &&
- (animData1->somethingLayer == animData1->layer) &&
- (animData1->somethingFrame == animData1->frame) &&
- (animData1->somethingAnimation == animData1->animation)) {
- animObj1->someFlag = 0;
+
+ if (animData1->isStatic != 2) {
+ if ((animData1->isStatic == 0) && (animData1->isPaused == 0)
+ && (animData1->maxTick == animObj1->tick)) {
+ animObj1->someFlag = 1;
+ _vm->_scenery->updateAnim(animData1->layer, animData1->frame,
+ animData1->animation, 8, *animObj1->pPosX, *animObj1->pPosY, 0);
+ if (animObj1->lastLeft == -1) {
+ animObj1->somethingLeft = _vm->_scenery->_toRedrawLeft;
+ animObj1->somethingTop = _vm->_scenery->_toRedrawTop;
+ animObj1->somethingRight = _vm->_scenery->_toRedrawRight;
+ animObj1->somethingBottom = _vm->_scenery->_toRedrawBottom;
+ } else {
+ animObj1->somethingLeft = MIN(animObj1->lastLeft, _vm->_scenery->_toRedrawLeft);
+ animObj1->somethingTop = MIN(animObj1->lastTop, _vm->_scenery->_toRedrawTop);
+ animObj1->somethingRight = MAX(animObj1->lastRight, _vm->_scenery->_toRedrawRight);
+ animObj1->somethingBottom = MAX(animObj1->lastBottom, _vm->_scenery->_toRedrawBottom);
+ if ((_vm->_game->_totFileData[0x29] > 50) &&
+ (animObj1->somethingLeft == animObj1->lastLeft) &&
+ (animObj1->somethingTop == animObj1->lastTop) &&
+ (animObj1->somethingRight == animObj1->lastRight) &&
+ (animObj1->somethingBottom == animObj1->lastBottom) &&
+ (animData1->somethingLayer == animData1->layer) &&
+ (animData1->somethingFrame == animData1->frame) &&
+ (animData1->somethingAnimation == animData1->animation)) {
+ animObj1->someFlag = 0;
+ }
}
- }
- } else {
- if (animData1->isStatic == 0) {
+ } else if (animData1->isStatic == 0) {
if (animObj1->lastLeft == -1) {
animObj1->someFlag = 1;
_vm->_scenery->updateAnim(animData1->layer, animData1->frame,
animData1->animation, 8, *animObj1->pPosX, *animObj1->pPosY, 0);
+ animObj1->somethingLeft = _vm->_scenery->_toRedrawLeft;
+ animObj1->somethingTop = _vm->_scenery->_toRedrawTop;
+ animObj1->somethingRight = _vm->_scenery->_toRedrawRight;
+ animObj1->somethingBottom = _vm->_scenery->_toRedrawBottom;
+ } else {
+ animObj1->somethingLeft = animObj1->lastLeft;
+ animObj1->somethingTop = animObj1->lastTop;
+ animObj1->somethingRight = animObj1->lastRight;
+ animObj1->somethingBottom = animObj1->lastBottom;
}
- animObj1->somethingLeft = _vm->_scenery->_toRedrawLeft;
- animObj1->somethingTop = _vm->_scenery->_toRedrawTop;
- animObj1->somethingRight = _vm->_scenery->_toRedrawRight;
- animObj1->somethingBottom = _vm->_scenery->_toRedrawBottom;
} else if (animObj1->lastLeft != -1) {
animObj1->someFlag = 1;
- animObj1->somethingLeft = _vm->_scenery->_toRedrawLeft;
- animObj1->somethingTop = _vm->_scenery->_toRedrawTop;
- animObj1->somethingRight = _vm->_scenery->_toRedrawRight;
- animObj1->somethingBottom = _vm->_scenery->_toRedrawBottom;
+ animObj1->somethingLeft = animObj1->lastLeft;
+ animObj1->somethingTop = animObj1->lastTop;
+ animObj1->somethingRight = animObj1->lastRight;
+ animObj1->somethingBottom = animObj1->lastBottom;
}
+ animData1->somethingLayer = animData1->layer;
+ animData1->somethingFrame = animData1->frame;
+ animData1->somethingAnimation = animData1->animation;
+ if ((animObj1->someFlag != 0) || (animData1->isStatic == 0)) {
+ minOrder = MIN(minOrder, animData1->order);
+ maxOrder = MAX(maxOrder, animData1->order);
+ }
}
- animData1->somethingLayer = animData1->layer;
- animData1->somethingFrame = animData1->frame;
- animData1->somethingAnimation = animData1->animation;
- if ((animObj1->someFlag != 0) || (animData1->isStatic == 0)) {
- minOrder = MIN(minOrder, animData1->order);
- maxOrder = MAX(maxOrder, animData1->order);
- }
}
for (i = 0; i < numAnims; i++) {
@@ -1199,7 +1140,7 @@
for (i = 0; i < numAnims; i++) {
animData1 = _renderData2[i]->pAnimData;
if (((animData1->isStatic == 0) || (_renderData2[i]->someFlag != 0))
- & (animData1->order == j))
+ && (animData1->order == j))
orderArray[orderArrayPos++] = i;
}
}
@@ -1221,62 +1162,57 @@
for (i = 0; i < orderArrayPos; i++) {
animObj1 = _renderData2[orderArray[i]];
animData1 = animObj1->pAnimData;
- if (animObj1->someFlag == 0) {
- if (animData1->isStatic == 0) {
- for (j = 0; j < orderArrayPos; j++) {
- animObj2 = _renderData2[orderArray[j]];
- if ((animObj2->someFlag != 0) &&
- (animObj1->somethingRight >= animObj2->somethingLeft) &&
- (animObj2->somethingRight >= animObj1->somethingLeft) &&
- (animObj1->somethingBottom >= animObj2->somethingTop) &&
- (animObj2->somethingBottom >= animObj1->somethingTop))
- {
- _vm->_scenery->_toRedrawLeft = animObj2->somethingLeft;
- _vm->_scenery->_toRedrawRight = animObj2->somethingRight;
- _vm->_scenery->_toRedrawTop = animObj2->somethingTop;
- _vm->_scenery->_toRedrawBottom = animObj2->somethingBottom;
- _vm->_scenery->updateAnim(animData1->layer, animData1->frame,
- animData1->animation, 12, *animObj1->pPosX, *animObj1->pPosY, 1);
- _vm->_scenery->updateStatic(animObj1->pAnimData->order + 1);
- }
+ if ((animObj1->someFlag == 0) && (animData1->isStatic == 0)) {
+ for (j = 0; j < orderArrayPos; j++) {
+ animObj2 = _renderData2[orderArray[j]];
+ if ((animObj2->someFlag != 0) &&
+ (animObj1->somethingRight >= animObj2->somethingLeft) &&
+ (animObj2->somethingRight >= animObj1->somethingLeft) &&
+ (animObj1->somethingBottom >= animObj2->somethingTop) &&
+ (animObj2->somethingBottom >= animObj1->somethingTop))
+ {
+ _vm->_scenery->_toRedrawLeft = animObj2->somethingLeft;
+ _vm->_scenery->_toRedrawRight = animObj2->somethingRight;
+ _vm->_scenery->_toRedrawTop = animObj2->somethingTop;
+ _vm->_scenery->_toRedrawBottom = animObj2->somethingBottom;
+ _vm->_scenery->updateAnim(animData1->layer, animData1->frame,
+ animData1->animation, 12, *animObj1->pPosX, *animObj1->pPosY, 1);
+ _vm->_scenery->updateStatic(animObj1->pAnimData->order + 1);
}
}
- } else {
- if (animData1->isStatic == 0) {
- _vm->_scenery->updateAnim(animData1->layer, animData1->frame,
- animData1->animation, 10, *animObj1->pPosX, *animObj1->pPosY, 1);
- if (_vm->_scenery->_toRedrawLeft != -12345) {
- if (_vm->_global->_pressedKeys[0x36]) {
-// warning("GOB2 Stub! word_2F3BF & word_2F3C1; someValueToAddToY & someValueToAddToX, respectively");
- // draws a rectangle around the region to redraw, why?
- _vm->_video->drawLine(_vm->_draw->_frontSurface,
- _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawTop,
- _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawTop, 15);
- _vm->_video->drawLine(_vm->_draw->_frontSurface,
- _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawBottom,
- _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawBottom, 15);
- _vm->_video->drawLine(_vm->_draw->_frontSurface,
- _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawTop,
- _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawBottom, 15);
- _vm->_video->drawLine(_vm->_draw->_frontSurface,
- _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawTop,
- _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawBottom, 15);
- }
- animObj1->lastLeft = _vm->_scenery->_toRedrawLeft;
- animObj1->lastRight = _vm->_scenery->_toRedrawRight;
- animObj1->lastTop = _vm->_scenery->_toRedrawTop;
- animObj1->lastBottom = _vm->_scenery->_toRedrawBottom;
- } else {
- animObj1->lastLeft = -1;
+ } else if (animData1->isStatic == 0) {
+ _vm->_scenery->updateAnim(animData1->layer, animData1->frame,
+ animData1->animation, 10, *animObj1->pPosX, *animObj1->pPosY, 1);
+ if (_vm->_scenery->_toRedrawLeft != -12345) {
+ if (_vm->_global->_pressedKeys[0x36]) {
+// warning("GOB2 Stub! word_2F3BF & word_2F3C1; someValueToAddToY & someValueToAddToX, respectively");
+ // draws a rectangle around the region to redraw, why?
+ _vm->_video->drawLine(_vm->_draw->_frontSurface,
+ _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawTop,
+ _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawTop, 15);
+ _vm->_video->drawLine(_vm->_draw->_frontSurface,
+ _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawBottom,
+ _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawBottom, 15);
+ _vm->_video->drawLine(_vm->_draw->_frontSurface,
+ _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawTop,
+ _vm->_scenery->_toRedrawLeft, _vm->_scenery->_toRedrawBottom, 15);
+ _vm->_video->drawLine(_vm->_draw->_frontSurface,
+ _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawTop,
+ _vm->_scenery->_toRedrawRight, _vm->_scenery->_toRedrawBottom, 15);
}
- } else {
- _vm->_scenery->_toRedrawLeft = animObj1->somethingLeft;
- _vm->_scenery->_toRedrawRight = animObj1->somethingRight;
- _vm->_scenery->_toRedrawTop = animObj1->somethingTop;
- _vm->_scenery->_toRedrawBottom = animObj1->somethingBottom;
- }
- _vm->_scenery->updateStatic(animObj1->pAnimData->order + 1);
+ animObj1->lastLeft = _vm->_scenery->_toRedrawLeft;
+ animObj1->lastRight = _vm->_scenery->_toRedrawRight;
+ animObj1->lastTop = _vm->_scenery->_toRedrawTop;
+ animObj1->lastBottom = _vm->_scenery->_toRedrawBottom;
+ } else
+ animObj1->lastLeft = -1;
+ } else {
+ _vm->_scenery->_toRedrawLeft = animObj1->somethingLeft;
+ _vm->_scenery->_toRedrawRight = animObj1->somethingRight;
+ _vm->_scenery->_toRedrawTop = animObj1->somethingTop;
+ _vm->_scenery->_toRedrawBottom = animObj1->somethingBottom;
}
+ _vm->_scenery->updateStatic(animObj1->pAnimData->order + 1);
}
for (i = 0; i < numAnims; i++) {
@@ -1357,23 +1293,19 @@
for (i = 0; i < numAnims; i++) {
animObj1 = _renderData2[i];
animData1 = animObj1->pAnimData;
- if ((animData1->isStatic != 0) || (animObj1->lastLeft == -1))
- continue;
-
- for (j = 0; j < numAnims; j++) {
- if (i == j)
- continue;
- animObj2 = _renderData2[j];
- animData2 = animObj2->pAnimData;
- if ((animData2->isStatic != 0) || (animObj2->lastLeft == -1))
- continue;
- if ((animObj2->lastRight >= animObj1->lastLeft) &&
- (animObj2->lastLeft <= animObj1->lastRight) &&
- (animObj2->lastBottom >= animObj1->lastTop) &&
- (animObj2->lastTop <= animObj1->lastBottom))
- animData2->intersected = animIndices[i];
- }
+ if ((animData1->isStatic == 0) && (animObj1->lastLeft != -1))
+ for (j = 0; j < numAnims; j++) {
+ animObj2 = _renderData2[j];
+ animData2 = animObj2->pAnimData;
+ if ((i != j) && (animData2->isStatic == 0) && (animObj2->lastLeft != -1))
+ if ((animObj2->lastRight >= animObj1->lastLeft) &&
+ (animObj2->lastLeft <= animObj1->lastRight) &&
+ (animObj2->lastBottom >= animObj1->lastTop) &&
+ (animObj2->lastTop <= animObj1->lastBottom))
+ animData2->intersected = animIndices[i];
+ }
}
+
}
void Mult_v2::playSound(Snd::SoundDesc * soundDesc, int16 repCount, int16 freq,
Modified: scummvm/branches/branch-0-9-0/engines/gob/scenery.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/gob/scenery.cpp 2006-06-13 12:19:10 UTC (rev 23087)
+++ scummvm/branches/branch-0-9-0/engines/gob/scenery.cpp 2006-06-13 17:02:53 UTC (rev 23088)
@@ -132,12 +132,12 @@
ptr->layers[i].planes = new StaticPlane[ptr->layers[i].planeCount];
for (int j = 0; j < ptr->layers[i].planeCount; ++j) {
- ptr->layers[i].planes[j].pictIndex = layerData.readByte();
- ptr->layers[i].planes[j].pieceIndex = layerData.readByte();
- ptr->layers[i].planes[j].drawOrder = layerData.readByte();
+ ptr->layers[i].planes[j].pictIndex = layerData.readSByte();
+ ptr->layers[i].planes[j].pieceIndex = layerData.readSByte();
+ ptr->layers[i].planes[j].drawOrder = layerData.readSByte();
ptr->layers[i].planes[j].destX = layerData.readSint16LE();
ptr->layers[i].planes[j].destY = layerData.readSint16LE();
- ptr->layers[i].planes[j].transp = layerData.readByte();
+ ptr->layers[i].planes[j].transp = layerData.readSByte();
}
ptr->layers[i].backResId = (int16)READ_LE_UINT16(backsPtr);
@@ -444,7 +444,7 @@
ptr->layers[i].posY = layerData.readSint16LE();
ptr->layers[i].animDeltaX = layerData.readSint16LE();
ptr->layers[i].animDeltaY = layerData.readSint16LE();
- ptr->layers[i].transp = layerData.readByte();
+ ptr->layers[i].transp = layerData.readSByte();
ptr->layers[i].framesCount = layerData.readSint16LE();
layerPos = layerData.pos();
@@ -462,9 +462,9 @@
for (j = 0; j < framesCount; j++) {
ptr->layers[i].frames[j].pictIndex = layerData.readByte();
ptr->layers[i].frames[j].pieceIndex = layerData.readByte();
- ptr->layers[i].frames[j].destX = layerData.readByte();
- ptr->layers[i].frames[j].destY = layerData.readByte();
- ptr->layers[i].frames[j].notFinal = layerData.readByte();
+ ptr->layers[i].frames[j].destX = layerData.readSByte();
+ ptr->layers[i].frames[j].destY = layerData.readSByte();
+ ptr->layers[i].frames[j].notFinal = layerData.readSByte();
}
}
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