aboutsummaryrefslogtreecommitdiff
path: root/engines/access/room.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2014-08-07 09:23:31 -0400
committerPaul Gilbert2014-08-07 09:23:31 -0400
commitbea93f3441154197a8f599912a1102ac11688d7f (patch)
tree07e3c043c14a9e7f3317e3f237d3661c5632122c /engines/access/room.cpp
parent031cc32c847bf7387859e273069f8efd3b6d4ed0 (diff)
downloadscummvm-rg350-bea93f3441154197a8f599912a1102ac11688d7f.tar.gz
scummvm-rg350-bea93f3441154197a8f599912a1102ac11688d7f.tar.bz2
scummvm-rg350-bea93f3441154197a8f599912a1102ac11688d7f.zip
ACCESS: Implemented setupRoom method
Diffstat (limited to 'engines/access/room.cpp')
-rw-r--r--engines/access/room.cpp43
1 files changed, 41 insertions, 2 deletions
diff --git a/engines/access/room.cpp b/engines/access/room.cpp
index 1e9eec79b0..9ead04b2ac 100644
--- a/engines/access/room.cpp
+++ b/engines/access/room.cpp
@@ -206,7 +206,9 @@ void Room::loadRoomData(const byte *roomData) {
}
void Room::roomLoop() {
- // TODO
+ _vm->_scripts->_sequence = 2000;
+ _vm->_scripts->searchForSeq();
+ _vm->_scripts->executeCommand();
}
@@ -215,7 +217,44 @@ void Room::doCommands() {
}
void Room::setupRoom() {
- // TODO
+ _vm->_screen->setScaleTable(_vm->_scale);
+ _vm->_screen->setBufferScan();
+
+ if (_roomFlag != 2)
+ setIconPalette();
+
+ if (_vm->_screen->_vWindowSize.x == _vm->_playFieldSize.x) {
+ _vm->_screen->_scrollX = 0;
+ _vm->_screen->_scrollCol = 0;
+ } else {
+ _vm->_screen->_scrollX = _vm->_player->_rawPlayer.x -
+ (_vm->_player->_rawPlayer.x >> 4);
+ int xp = MAX((_vm->_player->_rawPlayer.x >> 4) -
+ (_vm->_screen->_vWindowSize.x / 2), 0);
+ _vm->_screen->_scrollCol = xp;
+
+ xp = xp + _vm->_screen->_vWindowSize.x - _vm->_playFieldSize.x;
+ if (xp >= 0) {
+ _vm->_screen->_scrollCol = xp + 1;
+ }
+ }
+
+ if (_vm->_screen->_vWindowSize.y == _vm->_playFieldSize.y) {
+ _vm->_screen->_scrollY = 0;
+ _vm->_screen->_scrollRow = 0;
+ }
+ else {
+ _vm->_screen->_scrollY = _vm->_player->_rawPlayer.y -
+ (_vm->_player->_rawPlayer.y >> 4);
+ int yp = MAX((_vm->_player->_rawPlayer.y >> 4) -
+ (_vm->_screen->_vWindowSize.y / 2), 0);
+ _vm->_screen->_scrollRow = yp;
+
+ yp = yp + _vm->_screen->_vWindowSize.y - _vm->_playFieldSize.y;
+ if (yp >= 0) {
+ _vm->_screen->_scrollRow = yp + 1;
+ }
+ }
}
void Room::setWallCodes() {