diff options
author | Paul Gilbert | 2014-08-07 21:59:45 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-08-07 21:59:45 -0400 |
commit | 6715bb0864212edaf88076dce88e5df1138333da (patch) | |
tree | bd6461b488c5f70878e993b459f73390f94c9eb1 /engines/access/room.cpp | |
parent | 0c38730f3fd4965fbf1b854f76ff936dddf9f931 (diff) | |
download | scummvm-rg350-6715bb0864212edaf88076dce88e5df1138333da.tar.gz scummvm-rg350-6715bb0864212edaf88076dce88e5df1138333da.tar.bz2 scummvm-rg350-6715bb0864212edaf88076dce88e5df1138333da.zip |
ACCESS: Move playField and tile data to Room class
Diffstat (limited to 'engines/access/room.cpp')
-rw-r--r-- | engines/access/room.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 7a07f58bcb..136d6027e6 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -34,6 +34,23 @@ namespace Access { Room::Room(AccessEngine *vm) : Manager(vm) { _function = 0; _roomFlag = 0; + _playField = nullptr; + _tile = nullptr; +} + +Room::~Room() { + delete[] _playField; + delete[] _tile; +} + +void Room::freePlayField() { + delete[] _playField; + _playField = nullptr; +} + +void Room::freeTileData() { + delete[] _tile; + _tile = nullptr; } void Room::doRoom() { @@ -130,7 +147,7 @@ void Room::clearRoom() { _vm->freeAnimationData(); _vm->_scripts->freeScriptData(); _vm->freeCells(); - _vm->freePlayField(); + freePlayField(); _vm->freeInactiveData(); _vm->freeManData(); } @@ -229,7 +246,7 @@ void Room::setupRoom() { if (_roomFlag != 2) setIconPalette(); - if (_vm->_screen->_vWindowSize.x == _vm->_playFieldSize.x) { + if (_vm->_screen->_vWindowSize.x == _playFieldSize.x) { _vm->_screen->_scrollX = 0; _vm->_screen->_scrollCol = 0; } else { @@ -239,13 +256,13 @@ void Room::setupRoom() { (_vm->_screen->_vWindowSize.x / 2), 0); _vm->_screen->_scrollCol = xp; - xp = xp + _vm->_screen->_vWindowSize.x - _vm->_playFieldSize.x; + xp = xp + _vm->_screen->_vWindowSize.x - _playFieldSize.x; if (xp >= 0) { _vm->_screen->_scrollCol = xp + 1; } } - if (_vm->_screen->_vWindowSize.y == _vm->_playFieldSize.y) { + if (_vm->_screen->_vWindowSize.y == _playFieldSize.y) { _vm->_screen->_scrollY = 0; _vm->_screen->_scrollRow = 0; } @@ -256,7 +273,7 @@ void Room::setupRoom() { (_vm->_screen->_vWindowSize.y / 2), 0); _vm->_screen->_scrollRow = yp; - yp = yp + _vm->_screen->_vWindowSize.y - _vm->_playFieldSize.y; + yp = yp + _vm->_screen->_vWindowSize.y - _playFieldSize.y; if (yp >= 0) { _vm->_screen->_scrollRow = yp + 1; } @@ -286,12 +303,12 @@ void Room::buildScreen() { } void Room::buildColumn(int playX, int screenX) { - const byte *pSrc = _vm->_playField + _vm->_screen->_scrollRow * - _vm->_playFieldSize.x + playX; + const byte *pSrc = _playField + _vm->_screen->_scrollRow * + _playFieldSize.x + playX; byte *pDest = (byte *)_vm->_buffer1.getPixels(); for (int y = 0; y <= _vm->_screen->_vWindowSize.y; ++y) { - byte *pTile = _vm->_tile + (*pSrc << 8); + byte *pTile = _tile + (*pSrc << 8); for (int tileY = 0; tileY < TILE_HEIGHT; ++tileY) { Common::copy(pTile, pTile + TILE_WIDTH, pDest); |