GOB: Make some more map properties protected

svn-id: r53952
This commit is contained in:
Sven Hesse 2010-10-30 17:28:27 +00:00
parent 8a7d0cc249
commit 0f3ed50cfc
7 changed files with 144 additions and 103 deletions

View File

@ -669,11 +669,11 @@ void Goblin::adjustDest(int16 posX, int16 posY) {
resDelta = i;
}
for (i = 1; ((i + _pressedMapX) < _vm->_map->_mapWidth) &&
for (i = 1; ((i + _pressedMapX) < _vm->_map->getMapWidth()) &&
(_vm->_map->getPass(_pressedMapX + i, _pressedMapY) == 0); i++)
;
if ((_pressedMapX + i) < _vm->_map->_mapWidth) {
if ((_pressedMapX + i) < _vm->_map->getMapWidth()) {
deltaPix = (i * 12) - (posX % 12);
if ((resDelta == -1) || (deltaPix < resDeltaPix)) {
resDeltaPix = deltaPix;
@ -682,11 +682,11 @@ void Goblin::adjustDest(int16 posX, int16 posY) {
}
}
for (i = 1; ((i + _pressedMapY) < _vm->_map->_mapHeight) &&
for (i = 1; ((i + _pressedMapY) < _vm->_map->getMapHeight()) &&
(_vm->_map->getPass(_pressedMapX, _pressedMapY + i) == 0); i++)
;
if ((_pressedMapY + i) < _vm->_map->_mapHeight) {
if ((_pressedMapY + i) < _vm->_map->getMapHeight()) {
deltaPix = (i * 6) - (posY % 6);
if ((resDelta == -1) || (deltaPix < resDeltaPix)) {
resDeltaPix = deltaPix;
@ -727,8 +727,8 @@ void Goblin::adjustDest(int16 posX, int16 posY) {
}
}
_pressedMapX = CLIP((int) _pressedMapX, 0, _vm->_map->_mapWidth - 1);
_pressedMapY = CLIP((int) _pressedMapY, 0, _vm->_map->_mapHeight - 1);
_pressedMapX = CLIP((int) _pressedMapX, 0, _vm->_map->getMapWidth() - 1);
_pressedMapY = CLIP((int) _pressedMapY, 0, _vm->_map->getMapHeight() - 1);
}
void Goblin::adjustTarget() {
@ -738,18 +738,18 @@ void Goblin::adjustTarget() {
if ((_pressedMapY > 0) &&
(_vm->_map->getItem(_pressedMapX, _pressedMapY - 1) != 0)) {
_pressedMapY--;
} else if ((_pressedMapX < (_vm->_map->_mapWidth - 1)) &&
} else if ((_pressedMapX < (_vm->_map->getMapWidth() - 1)) &&
(_vm->_map->getItem(_pressedMapX + 1, _pressedMapY) != 0)) {
_pressedMapX++;
} else if ((_pressedMapX < (_vm->_map->_mapWidth - 1)) &&
} else if ((_pressedMapX < (_vm->_map->getMapWidth() - 1)) &&
(_pressedMapY > 0) &&
(_vm->_map->getItem(_pressedMapX + 1, _pressedMapY - 1) != 0)) {
_pressedMapY--;
_pressedMapX++;
}
}
_pressedMapX = CLIP((int) _pressedMapX, 0, _vm->_map->_mapWidth - 1);
_pressedMapY = CLIP((int) _pressedMapY, 0, _vm->_map->_mapHeight - 1);
_pressedMapX = CLIP((int) _pressedMapX, 0, _vm->_map->getMapWidth() - 1);
_pressedMapY = CLIP((int) _pressedMapY, 0, _vm->_map->getMapHeight() - 1);
}
void Goblin::targetDummyItem(Gob_Object *gobDesc) {
@ -848,7 +848,7 @@ void Goblin::targetItem() {
}
}
if (_pressedMapY < (_vm->_map->_mapHeight-1)) {
if (_pressedMapY < (_vm->_map->getMapHeight()-1)) {
if ((_vm->_map->getItem(_pressedMapX, _pressedMapY + 1)) ==
(_vm->_map->getItem(_pressedMapX, _pressedMapY))) {
_pressedMapY++;
@ -899,8 +899,8 @@ void Goblin::targetItem() {
}
}
}
_pressedMapX = CLIP((int) _pressedMapX, 0, _vm->_map->_mapWidth - 1);
_pressedMapY = CLIP((int) _pressedMapY, 0, _vm->_map->_mapHeight - 1);
_pressedMapX = CLIP((int) _pressedMapX, 0, _vm->_map->getMapWidth() - 1);
_pressedMapY = CLIP((int) _pressedMapY, 0, _vm->_map->getMapHeight() - 1);
}
void Goblin::moveFindItem(int16 posX, int16 posY) {
@ -934,23 +934,23 @@ void Goblin::moveFindItem(int16 posX, int16 posY) {
break;
}
_pressedMapX = CLIP(posX / 12, 0, _vm->_map->_mapWidth - 1);
_pressedMapY = CLIP(posY / 6, 0, _vm->_map->_mapHeight - 1);
_pressedMapX = CLIP(posX / 12, 0, _vm->_map->getMapWidth() - 1);
_pressedMapY = CLIP(posY / 6, 0, _vm->_map->getMapHeight() - 1);
if ((_vm->_map->getItem(_pressedMapX, _pressedMapY) == 0) && (i < 20)) {
if ((_pressedMapY < (_vm->_map->_mapHeight - 1)) &&
if ((_pressedMapY < (_vm->_map->getMapHeight() - 1)) &&
(_vm->_map->getItem(_pressedMapX, _pressedMapY + 1) != 0)) {
_pressedMapY++;
} else if ((_pressedMapX < (_vm->_map->_mapWidth - 1)) &&
(_pressedMapY < (_vm->_map->_mapHeight - 1)) &&
} else if ((_pressedMapX < (_vm->_map->getMapWidth() - 1)) &&
(_pressedMapY < (_vm->_map->getMapHeight() - 1)) &&
(_vm->_map->getItem(_pressedMapX + 1, _pressedMapY + 1) != 0)) {
_pressedMapX++;
_pressedMapY++;
} else if ((_pressedMapX < (_vm->_map->_mapWidth - 1)) &&
} else if ((_pressedMapX < (_vm->_map->getMapWidth() - 1)) &&
(_vm->_map->getItem(_pressedMapX + 1, _pressedMapY) != 0)) {
_pressedMapX++;
} else if ((_pressedMapX < (_vm->_map->_mapWidth - 1)) &&
} else if ((_pressedMapX < (_vm->_map->getMapWidth() - 1)) &&
(_pressedMapY > 0) &&
(_vm->_map->getItem(_pressedMapX + 1, _pressedMapY - 1) != 0)) {
_pressedMapX++;
@ -966,15 +966,15 @@ void Goblin::moveFindItem(int16 posX, int16 posY) {
(_vm->_map->getItem(_pressedMapX - 1, _pressedMapY) != 0)) {
_pressedMapX--;
} else if ((_pressedMapX > 0) &&
(_pressedMapY < (_vm->_map->_mapHeight - 1)) &&
(_pressedMapY < (_vm->_map->getMapHeight() - 1)) &&
(_vm->_map->getItem(_pressedMapX - 1, _pressedMapY + 1) != 0)) {
_pressedMapX--;
_pressedMapY++;
}
}
} else {
_pressedMapX = CLIP(posX / 12, 0, _vm->_map->_mapWidth - 1);
_pressedMapY = CLIP(posY / 6, 0, _vm->_map->_mapHeight - 1);
_pressedMapX = CLIP(posX / 12, 0, _vm->_map->getMapWidth() - 1);
_pressedMapY = CLIP(posY / 6, 0, _vm->_map->getMapHeight() - 1);
}
}
@ -1387,8 +1387,8 @@ void Goblin::pickItem(int16 indexToPocket, int16 idToPocket) {
_itemIndInPocket = indexToPocket;
_itemIdInPocket = idToPocket;
for (int y = 0; y < _vm->_map->_mapHeight; y++) {
for (int x = 0; x < _vm->_map->_mapWidth; x++) {
for (int y = 0; y < _vm->_map->getMapHeight(); y++) {
for (int x = 0; x < _vm->_map->getMapWidth(); x++) {
if (_itemByteFlag == 1) {
if (((_vm->_map->getItem(x, y) & 0xFF00) >> 8) == idToPocket)
_vm->_map->setItem(x, y, _vm->_map->getItem(x, y) & 0xFF);
@ -1451,7 +1451,7 @@ void Goblin::placeItem(int16 indexInPocket, int16 idInPocket) {
_vm->_map->placeItem(xPos, yPos - 1, idInPocket);
if (lookDir == 4) {
if (xPos < _vm->_map->_mapWidth - 1) {
if (xPos < _vm->_map->getMapWidth() - 1) {
_vm->_map->placeItem(xPos + 1, yPos, idInPocket);
if (yPos > 0)
@ -1498,16 +1498,16 @@ void Goblin::swapItems(int16 indexToPick, int16 idToPick) {
_itemIdInPocket = idToPick;
if (_itemByteFlag == 0) {
for (y = 0; y < _vm->_map->_mapHeight; y++) {
for (x = 0; x < _vm->_map->_mapWidth; x++) {
for (y = 0; y < _vm->_map->getMapHeight(); y++) {
for (x = 0; x < _vm->_map->getMapWidth(); x++) {
if ((_vm->_map->getItem(x, y) & 0xFF) == idToPick)
_vm->_map->setItem(x, y, (_vm->_map->getItem(x, y) & 0xFF00) + idToPlace);
}
}
} else {
for (y = 0; y < _vm->_map->_mapHeight; y++) {
for (x = 0; x < _vm->_map->_mapWidth; x++) {
for (y = 0; y < _vm->_map->getMapHeight(); y++) {
for (x = 0; x < _vm->_map->getMapWidth(); x++) {
if (((_vm->_map->getItem(x, y) & 0xFF00) >> 8) == idToPick)
_vm->_map->setItem(x, y, (_vm->_map->getItem(x, y) & 0xFF) + (idToPlace << 8));
}
@ -1705,15 +1705,15 @@ void Goblin::setState(int16 index, int16 state) {
animData->newCycle = _vm->_scenery->getAnimLayer(animation, layer)->framesCount;
_vm->_scenery->updateAnim(layer, 0, animation, 0, *obj->pPosX, *obj->pPosY, 1);
if (_vm->_map->_bigTiles) {
*obj->pPosY = ((obj->goblinY + 1) * _vm->_map->_tilesHeight) -
if (_vm->_map->hasBigTiles()) {
*obj->pPosY = ((obj->goblinY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) -
(obj->goblinY + 1) / 2;
} else {
*obj->pPosY = (obj->goblinY + 1) * _vm->_map->_tilesHeight -
*obj->pPosY = (obj->goblinY + 1) * _vm->_map->getTilesHeight() -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
}
*obj->pPosX = obj->goblinX * _vm->_map->_tilesWidth;
*obj->pPosX = obj->goblinX * _vm->_map->getTilesWidth();
}
void Goblin::animate(Mult::Mult_Object *obj) {
@ -1795,11 +1795,11 @@ void Goblin::move(int16 destX, int16 destY, int16 objIndex) {
int16 mouseX = _vm->_global->_inter_mouseX;
int16 mouseY = _vm->_global->_inter_mouseY;
if (_vm->_map->_bigTiles)
mouseY += ((_vm->_global->_inter_mouseY / _vm->_map->_tilesHeight) + 1) / 2;
if (_vm->_map->hasBigTiles())
mouseY += ((_vm->_global->_inter_mouseY / _vm->_map->getTilesHeight()) + 1) / 2;
int16 gobDestX = mouseX / _vm->_map->_tilesWidth;
int16 gobDestY = mouseY / _vm->_map->_tilesHeight;
int16 gobDestX = mouseX / _vm->_map->getTilesWidth();
int16 gobDestY = mouseY / _vm->_map->getTilesHeight();
if (_vm->_map->getPass(gobDestX, gobDestY) == 0)
_vm->_map->findNearestWalkable(gobDestX, gobDestY, mouseX, mouseY);
@ -1818,7 +1818,7 @@ void Goblin::move(int16 destX, int16 destY, int16 objIndex) {
// Prevent continous walking on wide stairs
if (passType == 11) {
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
obj->gobDestY++;
animData->destY++;
}

View File

@ -80,13 +80,13 @@ void Goblin_v2::placeObject(Gob_Object *objDesc, char animated,
objAnim->newCycle = 0;
_vm->_scenery->updateAnim(objAnim->layer, 0, objAnim->animation, 0,
*obj->pPosX, *obj->pPosY, 0);
if (!_vm->_map->_bigTiles)
*obj->pPosY = (y + 1) * _vm->_map->_tilesHeight
if (!_vm->_map->hasBigTiles())
*obj->pPosY = (y + 1) * _vm->_map->getTilesHeight()
- (_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
else
*obj->pPosY = ((y + 1) * _vm->_map->_tilesHeight) -
*obj->pPosY = ((y + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) - (y + 1) / 2;
*obj->pPosX = x * _vm->_map->_tilesWidth;
*obj->pPosX = x * _vm->_map->getTilesWidth();
} else {
if ((obj->goblinStates != 0) && (obj->goblinStates[state] != 0)) {
layer = obj->goblinStates[state][0].layer;
@ -99,13 +99,13 @@ void Goblin_v2::placeObject(Gob_Object *objDesc, char animated,
objAnim->isStatic = 0;
objAnim->newCycle = _vm->_scenery->getAnimLayer(animation, layer)->framesCount;
_vm->_scenery->updateAnim(layer, 0, animation, 0, *obj->pPosX, *obj->pPosY, 0);
if (!_vm->_map->_bigTiles)
*obj->pPosY = (y + 1) * _vm->_map->_tilesHeight
if (!_vm->_map->hasBigTiles())
*obj->pPosY = (y + 1) * _vm->_map->getTilesHeight()
- (_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
else
*obj->pPosY = ((y + 1) * _vm->_map->_tilesHeight) -
*obj->pPosY = ((y + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) - (y + 1) / 2;
*obj->pPosX = x * _vm->_map->_tilesWidth;
*obj->pPosX = x * _vm->_map->getTilesWidth();
initiateMove(obj);
} else
initiateMove(obj);
@ -234,7 +234,7 @@ void Goblin_v2::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
switch (dir) {
case kDirNW:
animData->nextState = 1;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 40;
if (_vm->_map->getPass(obj->goblinX - 1, obj->goblinY - 2) != 10)
@ -245,7 +245,7 @@ void Goblin_v2::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirN:
animData->nextState =
(animData->curLookDir == 2) ? 2 : rotateState(animData->curLookDir, 2);
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10) {
if (_vm->_map->getPass(obj->goblinX - 1, obj->goblinY - 2) == 10)
animData->nextState = 40;
@ -264,7 +264,7 @@ void Goblin_v2::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirNE:
animData->nextState = 3;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 42;
if (_vm->_map->getPass(obj->goblinX + 1, obj->goblinY - 2) != 10)
@ -282,7 +282,7 @@ void Goblin_v2::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirSW:
animData->nextState = 7;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 41;
if (_vm->_map->getPass(obj->goblinX - 1, obj->goblinY + 2) != 10)
@ -293,7 +293,7 @@ void Goblin_v2::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirS:
animData->nextState =
(animData->curLookDir == 6) ? 6 : rotateState(animData->curLookDir, 6);
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 20)
animData->nextState = 39;
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 19)
@ -303,7 +303,7 @@ void Goblin_v2::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirSE:
animData->nextState = 5;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 43;
if (_vm->_map->getPass(obj->goblinX + 1, obj->goblinY + 2) != 10)
@ -449,11 +449,11 @@ void Goblin_v2::moveAdvance(Mult::Mult_Object *obj, Gob_Object *gobDesc,
animData->state = state;
_vm->_scenery->updateAnim(layer, 0, animation, 0, *obj->pPosX, *obj->pPosY, 0);
uint32 gobPosX = gobX * _vm->_map->_tilesWidth;
uint32 gobPosY = (gobY * _vm->_map->_tilesHeight) -
uint32 gobPosX = gobX * _vm->_map->getTilesWidth();
uint32 gobPosY = (gobY * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
if (_vm->_map->_bigTiles)
if (_vm->_map->hasBigTiles())
gobPosY -= gobY / 2;
*obj->pPosX = gobPosX;
@ -480,11 +480,11 @@ void Goblin_v2::moveAdvance(Mult::Mult_Object *obj, Gob_Object *gobDesc,
advMovement(obj, state);
_vm->_scenery->updateAnim(layer, 0, animation, 0, *obj->pPosX, *obj->pPosY, 0);
uint32 gobPosX = gobX * _vm->_map->_tilesWidth;
uint32 gobPosY = (gobY * _vm->_map->_tilesHeight) -
uint32 gobPosX = gobX * _vm->_map->getTilesWidth();
uint32 gobPosY = (gobY * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
if (_vm->_map->_bigTiles)
if (_vm->_map->hasBigTiles())
gobPosY -= gobY / 2;
*obj->pPosX = gobPosX;

View File

@ -274,7 +274,7 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
switch (dir) {
case kDirNW:
animData->nextState = 1;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 40;
if (_vm->_map->getPass(obj->goblinX - 1, obj->goblinY - 2) != 10)
@ -285,7 +285,7 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirN:
animData->nextState =
(animData->curLookDir == 2) ? 2 : rotateState(animData->curLookDir, 2);
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10) {
if (_vm->_map->getPass(obj->goblinX - 1, obj->goblinY - 2) != 10) {
if (_vm->_map->getPass(obj->goblinX + 1, obj->goblinY - 2) == 10)
@ -303,7 +303,7 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirNE:
animData->nextState = 3;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 42;
if (_vm->_map->getPass(obj->goblinX + 1, obj->goblinY - 2) != 10)
@ -321,7 +321,7 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirSW:
animData->nextState = 7;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 41;
if (_vm->_map->getPass(obj->goblinX - 1, obj->goblinY + 2) != 10)
@ -332,7 +332,7 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirS:
animData->nextState =
(animData->curLookDir == 6) ? 6 : rotateState(animData->curLookDir, 6);
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 20)
animData->nextState = 39;
else if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 19)
@ -342,7 +342,7 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16
case kDirSE:
animData->nextState = 5;
if (_vm->_map->_screenWidth == 640) {
if (_vm->_map->getScreenWidth() == 640) {
if (_vm->_map->getPass(obj->goblinX, obj->goblinY) == 10)
animData->nextState = 43;
if (_vm->_map->getPass(obj->goblinX + 1, obj->goblinY + 2) != 10)
@ -508,13 +508,13 @@ void Goblin_v4::moveAdvance(Mult::Mult_Object *obj, Gob_Object *gobDesc,
animData->frame = 0;
animData->state = state;
_vm->_scenery->updateAnim(layer, 0, animation, 0, *obj->pPosX, *obj->pPosY, 0);
if (_vm->_map->_bigTiles)
*obj->pPosY = ((gobY + 1) * _vm->_map->_tilesHeight) -
if (_vm->_map->hasBigTiles())
*obj->pPosY = ((gobY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) - (gobY + 1) / 2;
else
*obj->pPosY = ((gobY + 1) * _vm->_map->_tilesHeight) -
*obj->pPosY = ((gobY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
*obj->pPosX = gobX * _vm->_map->_tilesWidth;
*obj->pPosX = gobX * _vm->_map->getTilesWidth();
}
}
}
@ -533,13 +533,13 @@ void Goblin_v4::moveAdvance(Mult::Mult_Object *obj, Gob_Object *gobDesc,
advMovement(obj, state);
_vm->_scenery->updateAnim(layer, 0, animation, 0, *obj->pPosX, *obj->pPosY, 0);
if (_vm->_map->_bigTiles)
*obj->pPosY = ((gobY + 1) * _vm->_map->_tilesHeight) -
if (_vm->_map->hasBigTiles())
*obj->pPosY = ((gobY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) - (gobY + 1) / 2;
else
*obj->pPosY = ((gobY + 1) * _vm->_map->_tilesHeight) -
*obj->pPosY = ((gobY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
*obj->pPosX = gobX * _vm->_map->_tilesWidth;
*obj->pPosX = gobX * _vm->_map->getTilesWidth();
}
}
}

View File

@ -2562,8 +2562,8 @@ void Inter_v1::animPalette() {
}
void Inter_v1::manipulateMap(int16 xPos, int16 yPos, int16 item) {
for (int y = 0; y < _vm->_map->_mapHeight; y++) {
for (int x = 0; x < _vm->_map->_mapWidth; x++) {
for (int y = 0; y < _vm->_map->getMapHeight(); y++) {
for (int x = 0; x < _vm->_map->getMapWidth(); x++) {
if ((_vm->_map->getItem(x, y) & 0xFF) == item)
_vm->_map->setItem(x, y, _vm->_map->getItem(x, y) & 0xFF00);
else if (((_vm->_map->getItem(x, y) & 0xFF00) >> 8) == item)
@ -2571,7 +2571,7 @@ void Inter_v1::manipulateMap(int16 xPos, int16 yPos, int16 item) {
}
}
if (xPos < _vm->_map->_mapWidth - 1) {
if (xPos < _vm->_map->getMapWidth() - 1) {
if (yPos > 0) {
if (((_vm->_map->getItem(xPos, yPos) & 0xFF00) != 0) ||
((_vm->_map->getItem(xPos, yPos - 1) & 0xFF00) != 0) ||
@ -2660,7 +2660,7 @@ void Inter_v1::manipulateMap(int16 xPos, int16 yPos, int16 item) {
return;
}
if ((xPos < _vm->_map->_mapWidth - 2) &&
if ((xPos < _vm->_map->getMapWidth() - 2) &&
(_vm->_map->getPass(xPos + 2, yPos) == 1)) {
_vm->_map->_itemPoses[item].x = xPos + 2;
_vm->_map->_itemPoses[item].y = yPos;
@ -2668,7 +2668,7 @@ void Inter_v1::manipulateMap(int16 xPos, int16 yPos, int16 item) {
return;
}
if ((xPos < _vm->_map->_mapWidth - 1) &&
if ((xPos < _vm->_map->getMapWidth() - 1) &&
(_vm->_map->getPass(xPos + 1, yPos) == 1)) {
_vm->_map->_itemPoses[item].x = xPos + 1;
_vm->_map->_itemPoses[item].y = yPos;

View File

@ -432,7 +432,7 @@ void Inter_v2::o2_loadMultObject() {
obj.gobDestY = val;
obj.goblinY = val;
*(obj.pPosX) *= _vm->_map->_tilesWidth;
*(obj.pPosX) *= _vm->_map->getTilesWidth();
layer = objAnim.layer;
animation = obj.goblinStates[layer][0].animation;
@ -447,14 +447,14 @@ void Inter_v2::o2_loadMultObject() {
_vm->_scenery->updateAnim(layer, 0, animation, 0,
*(obj.pPosX), *(obj.pPosY), 0);
if (!_vm->_map->_bigTiles)
*(obj.pPosY) = (obj.goblinY + 1) * _vm->_map->_tilesHeight
if (!_vm->_map->hasBigTiles())
*(obj.pPosY) = (obj.goblinY + 1) * _vm->_map->getTilesHeight()
- (_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
else
*(obj.pPosY) = ((obj.goblinY + 1) * _vm->_map->_tilesHeight) -
*(obj.pPosY) = ((obj.goblinY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) -
((obj.goblinY + 1) / 2);
*(obj.pPosX) = obj.goblinX * _vm->_map->_tilesWidth;
*(obj.pPosX) = obj.goblinX * _vm->_map->getTilesWidth();
} else if ((objAnim.animType == 101) && (objIndex < _vm->_goblin->_gobsCount)) {
@ -778,14 +778,14 @@ void Inter_v2::o2_setGoblinState() {
_vm->_scenery->updateAnim(layer, 0, animation, 0,
*(obj.pPosX), *(obj.pPosY), 0);
if (_vm->_map->_bigTiles)
*(obj.pPosY) = ((obj.goblinY + 1) * _vm->_map->_tilesHeight) -
if (_vm->_map->hasBigTiles())
*(obj.pPosY) = ((obj.goblinY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop) -
((obj.goblinY + 1) / 2);
else
*(obj.pPosY) = ((obj.goblinY + 1) * _vm->_map->_tilesHeight) -
*(obj.pPosY) = ((obj.goblinY + 1) * _vm->_map->getTilesHeight()) -
(_vm->_scenery->_animBottom - _vm->_scenery->_animTop);
*(obj.pPosX) = obj.goblinX * _vm->_map->_tilesWidth;
*(obj.pPosX) = obj.goblinX * _vm->_map->getTilesWidth();
break;
}
}

View File

@ -41,8 +41,9 @@ Map::Map(GobEngine *vm) : _vm(vm) {
_screenWidth = 0;
_screenHeight = 0;
_tilesWidth = 0;
_tilesHeight = 0;
_tilesWidth = 0;
_tilesHeight = 0;
_bigTiles = false;
@ -86,6 +87,34 @@ uint8 Map::getVersion() const {
return _mapVersion;
}
int16 Map::getMapWidth() const {
return _mapWidth;
}
int16 Map::getMapHeight() const {
return _mapHeight;
}
int16 Map::getScreenWidth() const {
return _screenWidth;
}
int16 Map::getScreenHeight() const {
return _screenHeight;
}
int16 Map::getTilesWidth() const {
return _tilesWidth;
}
int16 Map::getTilesHeight() const {
return _tilesHeight;
}
bool Map::hasBigTiles() const {
return _bigTiles;
}
int8 Map::getPass(int x, int y, int width) const {
if (!_passMap)
return 0;

View File

@ -72,23 +72,9 @@ struct ItemPos {
class Map {
public:
int16 _mapWidth;
int16 _mapHeight;
int16 _screenWidth;
int16 _screenHeight;
int16 _tilesWidth;
int16 _tilesHeight;
bool _bigTiles;
bool _mapUnknownBool;
int16 _nearestWayPoint;
int16 _nearestDest;
int16 **_itemsMap; // [y][x]
int16 _curGoblinX;
int16 _curGoblinY;
int16 _destX;
@ -102,6 +88,17 @@ public:
uint8 getVersion() const;
int16 getMapWidth() const;
int16 getMapHeight() const;
int16 getScreenWidth() const;
int16 getScreenHeight() const;
int16 getTilesWidth() const;
int16 getTilesHeight() const;
bool hasBigTiles() const;
int8 getPass(int x, int y, int width = -1) const;
void setPass(int x, int y, int8 pass, int width = -1);
@ -136,12 +133,27 @@ protected:
uint8 _mapVersion;
int16 _mapWidth;
int16 _mapHeight;
int16 _screenWidth;
int16 _screenHeight;
int16 _tilesWidth;
int16 _tilesHeight;
bool _bigTiles;
bool _mapUnknownBool;
int16 _passWidth;
int8 *_passMap; // [y * _mapWidth + x], getPass(x, y);
int16 _wayPointCount;
WayPoint *_wayPoints;
int16 **_itemsMap; // [y][x]
int16 findNearestWayPoint(int16 x, int16 y);
private: