aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Hesse2011-01-30 13:14:32 +0000
committerSven Hesse2011-01-30 13:14:32 +0000
commitc88ee19478a84334dc1703212ea306ec7bc9dc1b (patch)
tree96bb5b090bfbe25a4c7a12921554b86a349bef86
parenta95f69c502d4198e9dfd5840d97e745a7d461781 (diff)
downloadscummvm-rg350-c88ee19478a84334dc1703212ea306ec7bc9dc1b.tar.gz
scummvm-rg350-c88ee19478a84334dc1703212ea306ec7bc9dc1b.tar.bz2
scummvm-rg350-c88ee19478a84334dc1703212ea306ec7bc9dc1b.zip
GOB: Stub some Adibou mult stuff
svn-id: r55653
-rw-r--r--engines/gob/goblin_v2.cpp2
-rw-r--r--engines/gob/map.cpp2
-rw-r--r--engines/gob/map.h4
-rw-r--r--engines/gob/map_v2.cpp18
-rw-r--r--engines/gob/mult_v2.cpp19
-rw-r--r--engines/gob/scenery.cpp4
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