diff options
author | Paul Gilbert | 2015-01-23 20:44:02 -0500 |
---|---|---|
committer | Paul Gilbert | 2015-01-23 20:44:02 -0500 |
commit | 749372e456ed8f1a4aee31ce23c4f4f7fd5644cc (patch) | |
tree | 918ebdfc2867a4e04492748fed9a9c31a619d123 /engines/xeen/map.cpp | |
parent | 2b51d324f3cc2a58f2a703c23030ee19ba85836b (diff) | |
download | scummvm-rg350-749372e456ed8f1a4aee31ce23c4f4f7fd5644cc.tar.gz scummvm-rg350-749372e456ed8f1a4aee31ce23c4f4f7fd5644cc.tar.bz2 scummvm-rg350-749372e456ed8f1a4aee31ce23c4f4f7fd5644cc.zip |
XEEN: More script code and string input dialog
Diffstat (limited to 'engines/xeen/map.cpp')
-rw-r--r-- | engines/xeen/map.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp index 5c49e37f4c..7801a050bb 100644 --- a/engines/xeen/map.cpp +++ b/engines/xeen/map.cpp @@ -1367,6 +1367,14 @@ void Map::setCellSurfaceFlags(const Common::Point &pt, int bits) { _mazeData[0]._cells[pt.y][pt.x]._surfaceId |= bits; } +void Map::setWall(const Common::Point &pt, Direction dir, int v) { + const int XOR_MASKS[4] = { 0xFFF, 0xF0FF, 0xFF0F, 0xFFF0 }; + mazeLookup(pt, 0, 0); + + MazeWallLayers &wallLayer = _mazeData[0]._wallData[pt.y][pt.x]; + wallLayer._data &= XOR_MASKS[dir]; + wallLayer._data |= v << WALL_SHIFTS[dir][2]; +} int Map::getCell(int idx) { int mapId = _vm->_party->_mazeId; @@ -1489,7 +1497,7 @@ int Map::getCell(int idx) { _currentSurfaceId = _mazeData[_mazeDataIndex]._cells[pt.y][pt.x]._surfaceId; _currentWall = wallLayers; - return (_currentWall._data >> WALL_NUMBERS[dir][idx]) & 0xF; + return (_currentWall._data >> WALL_SHIFTS[dir][idx]) & 0xF; } return _currentWall._data; |