aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/mult_v2.cpp
diff options
context:
space:
mode:
authorSven Hesse2006-06-29 12:55:57 +0000
committerSven Hesse2006-06-29 12:55:57 +0000
commit27a8b8a255478ebe76fb616e7d5dba0b8f433dce (patch)
treeb89a6172d493552179273241322c75e88206c115 /engines/gob/mult_v2.cpp
parent221afd715a0806405de3e86bc30323a208096cc7 (diff)
downloadscummvm-rg350-27a8b8a255478ebe76fb616e7d5dba0b8f433dce.tar.gz
scummvm-rg350-27a8b8a255478ebe76fb616e7d5dba0b8f433dce.tar.bz2
scummvm-rg350-27a8b8a255478ebe76fb616e7d5dba0b8f433dce.zip
- Renamed a few mult-variables to something more fitting
- Fixed a small mistake, making the entering animation work - Correcting Game_v2::playTot() so that the loading screen is shown - Updated most of the collisions stuff, the objects names hint stuff works now svn-id: r23346
Diffstat (limited to 'engines/gob/mult_v2.cpp')
-rw-r--r--engines/gob/mult_v2.cpp70
1 files changed, 37 insertions, 33 deletions
diff --git a/engines/gob/mult_v2.cpp b/engines/gob/mult_v2.cpp
index e425b4fe9a..ff5ee59757 100644
--- a/engines/gob/mult_v2.cpp
+++ b/engines/gob/mult_v2.cpp
@@ -45,6 +45,7 @@ Mult_v2::Mult_v2(GobEngine *vm) : Mult_v1(vm) {
_renderData2 = 0;
_multData2 = 0;
+ _frameStart = 0; // Temporarily to sync _frameStart and _multData2->frameStart
for (i = 0; i < 8; i++) _multDatas[i] = 0;
}
@@ -76,6 +77,7 @@ void Mult_v2::loadMult(int16 resId) {
index = (resId & 0x8000) ? *_vm->_global->_inter_execPtr++ : 0;
_multData2 = new Mult_Data;
+ _frameStart = 0; // Temporarily to sync _frameStart and _multData2->frameStart
memset(_multData2, 0, sizeof(Mult_Data));
_multDatas[index] = _multData2;
@@ -90,6 +92,7 @@ void Mult_v2::loadMult(int16 resId) {
_multData2->sndSlotsCount = 0;
_multData2->frameStart = 0;
+ _frameStart = 0;
extData = _vm->_game->loadExtData(resId, 0, 0);
Common::MemoryReadStream data((byte *) extData, 4294967295U);
@@ -137,7 +140,7 @@ void Mult_v2::loadMult(int16 resId) {
_multData2->someKeysIndices[i] = -1;
for (j = 0; j < 4; j++) {
- _multData2->field_15F[i][j] = 0;
+ _multData2->animKeysIndices[i][j] = 0;
_multData2->field_17F[i][j] = 0;
}
@@ -242,7 +245,7 @@ void Mult_v2::loadMult(int16 resId) {
if (_vm->_game->_totFileData[0x29] >= 51) {
size = data.readSint16LE();
_multData2->somepointer10 = new char[size * 20];
-// data.read(_multData2->somepointer09 /*???*/, size * 20);
+ // According to the original asm, these bytes are written into _multData2->somepointer09!
data.read(_multData2->somepointer10, size * 20);
size = _vm->_inter->load16();
if (size > 0) {
@@ -277,6 +280,7 @@ void Mult_v2::setMultData(uint16 multindex) {
debugC(4, DEBUG_GAMEFLOW, "Switching to mult %d", multindex);
_multData2 = _multDatas[multindex];
+ _frameStart = _multData2->frameStart; // Temporarily to sync _frameStart and _multData2->frameStart
}
void Mult_v2::multSub(uint16 multindex) {
@@ -295,6 +299,7 @@ void Mult_v2::multSub(uint16 multindex) {
debugC(4, DEBUG_GAMEFLOW, "Sub mult %d", multindex);
_multData2 = _multDatas[multindex];
+ _frameStart = _multData2->frameStart; // Temporarily to sync _frameStart and _multData2->frameStart
if (_multData2 == 0) {
_vm->_parse->parseValExpr();
@@ -315,9 +320,9 @@ void Mult_v2::multSub(uint16 multindex) {
if (flags & 0x400) {
flags = 0x400;
- _multData2->field_156 = -1;
+ _multData2->animDirection = -1;
} else {
- _multData2->field_156 = 1;
+ _multData2->animDirection = 1;
flags &= 0x7F;
}
@@ -327,7 +332,7 @@ void Mult_v2::multSub(uint16 multindex) {
}
expr = _vm->_parse->parseValExpr();
_multData2->animKeysFrames[index] = expr;
- _multData2->someKeysFrames[index] = expr;
+ _multData2->animKeysStartFrames[index] = expr;
WRITE_VAR(18 + index, expr);
if (expr == -1) {
@@ -337,22 +342,22 @@ void Mult_v2::multSub(uint16 multindex) {
_objects[_multData2->field_124[index][i]].pAnimData->animType =
_objects[_multData2->field_124[index][i]].pAnimData->field_17;
} else {
- if (_multData2->field_156 == 1) {
- _multData2->field_157[index] = 32000;
+ if (_multData2->animDirection == 1) {
+ _multData2->animKeysStopFrames[index] = 32000;
for (i = 0; i < _multData2->textKeysCount; i++) {
textFrame = _multData2->textKeys[i].frame;
- if ((textFrame > _multData2->someKeysFrames[index]) &&
- (textFrame < _multData2->field_157[index])) {
- _multData2->field_157[index] = textFrame;
+ if ((textFrame > _multData2->animKeysStartFrames[index]) &&
+ (textFrame < _multData2->animKeysStopFrames[index])) {
+ _multData2->animKeysStopFrames[index] = textFrame;
}
}
} else {
- _multData2->field_157[index] = 0;
+ _multData2->animKeysStopFrames[index] = 0;
for (i = 0; i < _multData2->textKeysCount; i++) {
textFrame = _multData2->textKeys[i].frame;
- if ((textFrame < _multData2->someKeysFrames[index]) &&
- (textFrame > _multData2->field_157[index])) {
- _multData2->field_157[index] = textFrame;
+ if ((textFrame < _multData2->animKeysStartFrames[index]) &&
+ (textFrame > _multData2->animKeysStopFrames[index])) {
+ _multData2->animKeysStopFrames[index] = textFrame;
}
}
}
@@ -365,27 +370,27 @@ void Mult_v2::multSub(uint16 multindex) {
}
for (i = 0; i < 4; i++) {
- _multData2->field_15F[index][i] = 0;
+ _multData2->animKeysIndices[index][i] = 0;
for (j = 0; j < _multData2->animKeysCount[i]; j++) {
- if (_multData2->animKeys[i][j].frame >= _multData2->someKeysFrames[index])
- _multData2->field_15F[index][i] = j;
+ if (_multData2->animKeys[i][j].frame == _multData2->animKeysStartFrames[index])
+ _multData2->animKeysIndices[index][i] = j;
}
}
- if (_multData2->field_156 == -1) { // loc_60CF
+ if (_multData2->animDirection == -1) { // loc_60CF
warning("Mult_v2::multSub(), someKeys and someKeysIndices");
}
for (i = 0; i < 4; i++) {
_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->someKeysFrames[index]) {
+ if (_multData2->animDirection == 1) {
+ if (_multData2->someKeys[i][j].frame >= _multData2->animKeysStartFrames[index]) {
_multData2->field_17F[index][i] = j;
break;
}
} else {
- if (_multData2->someKeys[i][j].frame >= _multData2->field_157[index]) {
+ if (_multData2->someKeys[i][j].frame >= _multData2->animKeysStopFrames[index]) {
_multData2->field_17F[index][i] = j;
break;
}
@@ -431,8 +436,6 @@ void Mult_v2::playMult(int16 startFrame, int16 endFrame, char checkEscape,
delete[] _objects;
if (_orderArray)
delete[] _orderArray;
-/* if (_renderData)
- delete[] _renderData;*/
if (_renderData2)
delete[] _renderData2;
@@ -441,8 +444,6 @@ void Mult_v2::playMult(int16 startFrame, int16 endFrame, char checkEscape,
_orderArray = new int8[_objCount];
memset(_orderArray, 0, _objCount * sizeof(int8));
-/* _renderData = new int16[9 * _objCount];
- memset(_renderData, 0, _objCount * 9 * sizeof(int16));*/
_renderData2 = new Mult_Object*[_objCount];
memset(_renderData2, 0, _objCount * sizeof(Mult_Object*));
@@ -580,7 +581,7 @@ void Mult_v2::playMult(int16 startFrame, int16 endFrame, char checkEscape,
WRITE_VAR(57, (uint32)-1);
} else {
- WRITE_VAR(57, _frame - 1 - _frameStart);
+ WRITE_VAR(57, _frame - 1 - _multData2->frameStart);
}
}
@@ -696,6 +697,7 @@ void Mult_v2::drawText(char *pStop, char *pStopNoClear) {
*pStop = 0;
} else if (cmd == 1) {
*pStopNoClear = 1;
+ _multData2->frameStart = 0;
_frameStart = 0;
} else if (cmd == 3) {
*pStop = 0;
@@ -900,14 +902,14 @@ void Mult_v2::sub_62DD(int16 index) {
for (i = 0; i < 4; i++) {
if (_multData2->field_124[index][i] != -1) {
- for (j = _multData2->field_15F[index][i]; j < _multData2->animKeysCount[i]; j++) {
+ for (j = _multData2->animKeysIndices[index][i]; j < _multData2->animKeysCount[i]; j++) {
if ((i >= 4) || (j >= _multData2->animKeysCount[i]))
continue;
animKey = &_multData2->animKeys[i][j];
if (animKey->frame == frame) {
animObj = &_objects[_multData2->field_124[index][i]];
if (animKey->layer > -1) {
- _multData2->field_15F[index][i] = j;
+ _multData2->animKeysIndices[index][i] = j;
(*animObj->pPosX) = animKey->posX;
(*animObj->pPosY) = animKey->posY;
animObj->pAnimData->frame = 0;
@@ -947,9 +949,9 @@ void Mult_v2::sub_62DD(int16 index) {
_multData2->someKeysIndices[1] = -1;
_multData2->someKeysIndices[2] = -1;
_multData2->someKeysIndices[3] = -1;
- if ((_multData2->field_156 == 1) || (someKey2->field_2 == 1))
+ if ((_multData2->animDirection == 1) || (someKey2->field_2 == 1))
_multData2->someKeysIndices[i] = j;
- else if (_multData2->field_157[index] == frame)
+ else if (_multData2->animKeysStopFrames[index] == frame)
_multData2->someKeysIndices[i] = -1;
else
_multData2->someKeysIndices[i] = j - 1;
@@ -962,7 +964,7 @@ void Mult_v2::sub_62DD(int16 index) {
if (_multData2->someKeysIndices[i] != -1) {
/*
int arg3 = frame - _multData2->someKeys[i][_multData2->someKeysIndices[i]].field_0;
- int arg2 = _multData2->field_156;
+ int arg2 = _multData2->animDirection;
if ((arg2 != 1) && (--arg3 > 0))
arg3 = 0;
int arg1 = _multData2->someKeys[i][_multData2->someKeysIndices[i]];
@@ -976,7 +978,7 @@ void Mult_v2::sub_62DD(int16 index) {
doSoundAnim(0, frame);
WRITE_VAR(22, frame);
- if (_multData2->field_157[index] == frame) {
+ if (_multData2->animKeysStopFrames[index] == frame) {
_multData2->someKeysIndices[0] = -1;
_multData2->someKeysIndices[1] = -1;
_multData2->someKeysIndices[2] = -1;
@@ -986,7 +988,7 @@ void Mult_v2::sub_62DD(int16 index) {
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 if(_multData2->field_156 == 1)
+ } else if(_multData2->animDirection == 1)
frame++;
else
frame--;
@@ -1004,6 +1006,7 @@ void Mult_v2::sub_6A35(void) {
for (i = 0; i < 8; i++)
if (_multDatas[i] != 0) {
_multData2 = _multDatas[i];
+ _frameStart = _multData2->frameStart; // Temporarily to sync _frameStart and _multData2->frameStart
for (j = 0; j < 4; j++)
sub_62DD(j);
}
@@ -1404,6 +1407,7 @@ void Mult_v2::freeMultKeys(void) {
delete _multData2;
_multData2 = 0;
+ _frameStart = 0; // Temporarily to sync _frameStart and _multData2->frameStart
}
} // End of namespace Gob