diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/gob/goblin_v2.cpp | 2 | ||||
-rw-r--r-- | engines/gob/map.cpp | 2 | ||||
-rw-r--r-- | engines/gob/map.h | 4 | ||||
-rw-r--r-- | engines/gob/map_v2.cpp | 18 | ||||
-rw-r--r-- | engines/gob/mult_v2.cpp | 19 | ||||
-rw-r--r-- | engines/gob/scenery.cpp | 4 |
6 files changed, 34 insertions, 15 deletions
diff --git a/engines/gob/goblin_v2.cpp b/engines/gob/goblin_v2.cpp index 503377c19b..2b4a529bdb 100644 --- a/engines/gob/goblin_v2.cpp +++ b/engines/gob/goblin_v2.cpp @@ -46,6 +46,8 @@ Goblin_v2::Goblin_v2(GobEngine *vm) : Goblin_v1(vm) { } void Goblin_v2::freeObjects() { + _vm->_map->_mapUnknownBool = false; + if (_gobsCount < 0) return; diff --git a/engines/gob/map.cpp b/engines/gob/map.cpp index 500f6515ec..503b934074 100644 --- a/engines/gob/map.cpp +++ b/engines/gob/map.cpp @@ -47,6 +47,8 @@ Map::Map(GobEngine *vm) : _vm(vm) { _bigTiles = false; + _mapUnknownBool = false; + _wayPointCount = 0; _wayPoints = 0; diff --git a/engines/gob/map.h b/engines/gob/map.h index 4bf2dc6228..48a9d1d4ac 100644 --- a/engines/gob/map.h +++ b/engines/gob/map.h @@ -80,6 +80,8 @@ public: int16 _destX; int16 _destY; + bool _mapUnknownBool; + ItemPos _itemPoses[40]; char _sourceFile[15]; @@ -143,8 +145,6 @@ protected: bool _bigTiles; - bool _mapUnknownBool; - int16 _passWidth; int8 *_passMap; // [y * _mapWidth + x], getPass(x, y); diff --git a/engines/gob/map_v2.cpp b/engines/gob/map_v2.cpp index c301698492..42c98c4a80 100644 --- a/engines/gob/map_v2.cpp +++ b/engines/gob/map_v2.cpp @@ -74,15 +74,21 @@ void Map_v2::loadMapObjects(const char *avjFile) { for (int i = 0; i < _mapWidth * _mapHeight; i++) WRITE_VARO_UINT8(var + i, 0x00); break; - case 65533: - warning("Map_v2::loadMapObjects(): ID == 65533"); + case 65533: { + int index = READ_VARO_UINT16(var); + // _vm->_mult->_objects[index].field_6E = 0; + // _vm->_mult->_objects[index].field_6A = variables; + warning("Map_v2::loadMapObjects(): ID == 65533 (%d)", index); break; + } case 65534: - _tilesWidth = READ_VARO_UINT8(var); - _tilesHeight = READ_VARO_UINT8(var + 1); - _mapWidth = READ_VARO_UINT8(var + 2); - _mapHeight = READ_VARO_UINT8(var + 3); + _tilesWidth = READ_VARO_UINT8(var); + _tilesHeight = READ_VARO_UINT8(var + 1); + _mapWidth = READ_VARO_UINT8(var + 2); + _mapHeight = READ_VARO_UINT8(var + 3); _mapUnknownBool = READ_VARO_UINT8(var + 4) ? true : false; + if (_mapUnknownBool) + warning("Map_v2::loadMapObjects(): _mapUnknownBool == true"); break; case 65535: _passMap = (int8 *)_vm->_inter->_variables->getAddressOff8(var); diff --git a/engines/gob/mult_v2.cpp b/engines/gob/mult_v2.cpp index 6fc292950f..8018fb15c6 100644 --- a/engines/gob/mult_v2.cpp +++ b/engines/gob/mult_v2.cpp @@ -37,6 +37,7 @@ #include "gob/goblin.h" #include "gob/inter.h" #include "gob/scenery.h" +#include "gob/map.h" #include "gob/video.h" #include "gob/videoplayer.h" @@ -715,8 +716,10 @@ void Mult_v2::newCycleAnim(Mult_Object &animObj) { if (animData.animType == 4) { animData.frame = 0; animData.isPaused = 1; - if (animData.animation < 0) - warning("Woodruff Stub: AnimType 4, animation: %d", animData.animation); + if ((animData.animation < 0) && (animObj.videoSlot > 0)) { + _vm->_vidPlayer->closeVideo(animObj.videoSlot - 1); + animObj.videoSlot = 0; + } return; } @@ -826,6 +829,10 @@ void Mult_v2::animate() { Mult_Object &animObj = _objects[i]; Mult_AnimData &animData = *(animObj.pAnimData); + if (_vm->_map->_mapUnknownBool) { + // TODO! + } + animData.intersected = 200; if (animData.isStatic != 2) { if ((animData.isStatic == 0) || (animObj.lastLeft != -1)) { @@ -842,10 +849,10 @@ void Mult_v2::animate() { Mult_AnimData &animData = *(animObj.pAnimData); animObj.needRedraw = 0; - animObj.newTop = 1000; - animObj.newLeft = 1000; - animObj.newBottom = 0; - animObj.newRight = 0; + animObj.newTop = 1000; + animObj.newLeft = 1000; + animObj.newBottom = 0; + animObj.newRight = 0; if (animData.isStatic == 2) continue; diff --git a/engines/gob/scenery.cpp b/engines/gob/scenery.cpp index fb167f81cb..9f3a908329 100644 --- a/engines/gob/scenery.cpp +++ b/engines/gob/scenery.cpp @@ -597,7 +597,9 @@ void Scenery::updateAnim(int16 layer, int16 frame, int16 animation, int16 flags, int16 destX; int16 destY; - if ((_vm->getGameType() == kGameTypeWoodruff) && (animation < 0)) { + if ((animation < 0) && + ((_vm->getGameType() == kGameTypeWoodruff) || + (_vm->getGameType() == kGameTypeAdibou2))) { // Object video if (flags & 1) { // Do capture |