aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/map_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/map_v2.cpp')
-rw-r--r--engines/gob/map_v2.cpp39
1 files changed, 16 insertions, 23 deletions
diff --git a/engines/gob/map_v2.cpp b/engines/gob/map_v2.cpp
index d5c02fd078..fa982fbbaa 100644
--- a/engines/gob/map_v2.cpp
+++ b/engines/gob/map_v2.cpp
@@ -60,7 +60,7 @@ void Map_v2::loadMapObjects(char *avjFile) {
char *dataPtrBak;
char *dataPtrBak2;
int8 statesMask[102];
- Goblin::Gob2_State *statesPtr;
+ Mult::Mult_GobState *statesPtr;
var = _vm->_parse->parseVarIndex();
variables = _vm->_global->_inter_variables + var;
@@ -138,8 +138,8 @@ void Map_v2::loadMapObjects(char *avjFile) {
_vm->_goblin->_gobsCount = tmp;
for (i = 0; i < _vm->_goblin->_gobsCount; i++) {
memset(statesMask, -1, 101);
- _vm->_mult->_objects[i].goblinStates = new Goblin::Gob2_State*[101];
- memset(_vm->_mult->_objects[i].goblinStates, 0, 101 * sizeof(Goblin::Gob2_State *));
+ _vm->_mult->_objects[i].goblinStates = new Mult::Mult_GobState*[101];
+ memset(_vm->_mult->_objects[i].goblinStates, 0, 101 * sizeof(Mult::Mult_GobState *));
memcpy(statesMask, dataPtr, 100);
dataPtr += 100;
dataPtrBak2 = dataPtr;
@@ -153,7 +153,7 @@ void Map_v2::loadMapObjects(char *avjFile) {
dataPtr += numData * 9;
}
}
- statesPtr = new Goblin::Gob2_State[statesCount];
+ statesPtr = new Mult::Mult_GobState[statesCount];
_vm->_mult->_objects[i].goblinStates[0] = statesPtr;
dataPtr = dataPtrBak2;
for (j = 0; j < 100; j++) {
@@ -165,18 +165,17 @@ void Map_v2::loadMapObjects(char *avjFile) {
_vm->_mult->_objects[i].goblinStates[state][0].layer = READ_LE_UINT16(dataPtr);
dataPtr += 2;
numData = *dataPtr++;
- _vm->_mult->_objects[i].goblinStates[state][0].field_4 = numData;
- for (k = 0; k < numData; k++) {
+ _vm->_mult->_objects[i].goblinStates[state][0].dataCount = numData;
+ for (k = 1; k <= numData; k++) {
dataPtr++;
- _vm->_mult->_objects[i].goblinStates[state][k].animation = *((byte *) dataPtr) << 8;
+ _vm->_mult->_objects[i].goblinStates[state][k].sndItem = *dataPtr;
dataPtr += 2;
- _vm->_mult->_objects[i].goblinStates[state][k].animation += *((byte *) dataPtr);
+ _vm->_mult->_objects[i].goblinStates[state][k].sndFrame = *dataPtr;
dataPtr += 2;
- _vm->_mult->_objects[i].goblinStates[state][k].layer = *((byte *) dataPtr) << 8;
- dataPtr += 2;
- _vm->_mult->_objects[i].goblinStates[state][k].layer += *((byte *) dataPtr);
- _vm->_mult->_objects[i].goblinStates[state][k].field_4 = READ_LE_UINT16(dataPtr);
+ _vm->_mult->_objects[i].goblinStates[state][k].freq = READ_LE_UINT16(dataPtr);
dataPtr += 2;
+ _vm->_mult->_objects[i].goblinStates[state][k].repCount = *dataPtr++;
+ _vm->_mult->_objects[i].goblinStates[state][k].speaker = *dataPtr++;
statesPtr++;
}
}
@@ -188,39 +187,33 @@ void Map_v2::loadMapObjects(char *avjFile) {
_vm->_goblin->_soundSlots[i] = _vm->_inter->loadSound(1);
}
-void Map_v2::findNearestToGob(int16 index) {
- Mult::Mult_Object *obj = &_vm->_mult->_objects[index];
+void Map_v2::findNearestToGob(Mult::Mult_Object *obj) {
int16 wayPoint = findNearestWayPoint(obj->goblinX, obj->goblinY);
if (wayPoint != -1)
obj->nearestWayPoint = wayPoint;
}
-void Map_v2::findNearestToDest(int16 index) {
- Mult::Mult_Object *obj = &_vm->_mult->_objects[index];
+void Map_v2::findNearestToDest(Mult::Mult_Object *obj) {
int16 wayPoint = findNearestWayPoint(obj->destX, obj->destY);
if (wayPoint != -1)
obj->nearestDest = wayPoint;
}
-void Map_v2::optimizePoints(int16 index, int16 x, int16 y) {
- Mult::Mult_Object *obj;
+void Map_v2::optimizePoints(Mult::Mult_Object *obj, int16 x, int16 y) {
int i;
-
int16 var_2;
- obj = &_vm->_mult->_objects[index];
-
if (obj->nearestWayPoint < obj->nearestDest) {
var_2 = obj->nearestWayPoint;
for (i = obj->nearestWayPoint; i <= obj->nearestDest; i++) {
- if (checkDirectPath(index, x, y, _wayPoints[i].x, _wayPoints[i].y) == 1)
+ if (checkDirectPath(obj, x, y, _wayPoints[i].x, _wayPoints[i].y) == 1)
obj->nearestWayPoint = i;
}
} else {
for (i = obj->nearestWayPoint; i >= obj->nearestDest && _wayPoints[i].field_2 != 1; i--) {
- if (checkDirectPath(index, x, y, _wayPoints[i].x, _wayPoints[i].y) == 1)
+ if (checkDirectPath(obj, x, y, _wayPoints[i].x, _wayPoints[i].y) == 1)
obj->nearestWayPoint = i;
}
}