mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-05 00:36:57 +00:00
GOB: Make some more map properties protected
svn-id: r53952
This commit is contained in:
parent
8a7d0cc249
commit
0f3ed50cfc
@ -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++;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user