diff options
Diffstat (limited to 'engines/access/martian/martian_room.cpp')
-rw-r--r-- | engines/access/martian/martian_room.cpp | 90 |
1 files changed, 43 insertions, 47 deletions
diff --git a/engines/access/martian/martian_room.cpp b/engines/access/martian/martian_room.cpp index e9d1b9d8cf..d5b03db246 100644 --- a/engines/access/martian/martian_room.cpp +++ b/engines/access/martian/martian_room.cpp @@ -43,72 +43,47 @@ void MartianRoom::loadRoom(int roomNumber) { } void MartianRoom::reloadRoom() { - loadRoom(_vm->_player->_roomNumber); - - if (_roomFlag != 1) { - _vm->_currentMan = _roomFlag; - _vm->_currentManOld = _roomFlag; - _vm->_manScaleOff = 0; - - switch (_vm->_currentMan) { - case 0: - _vm->_player->loadSprites("MAN.LZ"); - break; - - case 2: - _vm->_player->loadSprites("JMAN.LZ"); - break; +// _vm->_currentMan = _roomFlag; +// _vm->_currentManOld = _roomFlag; +// _vm->_manScaleOff = 0; - case 3: - _vm->_player->loadSprites("OVERHEAD.LZ"); - _vm->_manScaleOff = 1; - break; + _vm->_player->loadTexPalette(); + _vm->_player->loadSprites("TEX.LZ"); - default: - break; - } - } + loadRoom(_vm->_player->_roomNumber); reloadRoom1(); } void MartianRoom::reloadRoom1() { - if (_vm->_player->_roomNumber == 29 || _vm->_player->_roomNumber == 31 - || _vm->_player->_roomNumber == 42 || _vm->_player->_roomNumber == 44) { - //Resource *spriteData = _vm->_files->loadFile("MAYA.LZ"); - //_vm->_inactive._spritesPtr = new SpriteResource(_vm, spriteData); - //delete spriteData; - _vm->_currentCharFlag = false; - } - _selectCommand = -1; - _vm->_events->setNormalCursor(CURSOR_CROSSHAIRS); - _vm->_mouseMode = 0; - _vm->_boxSelect = true; + _vm->_boxSelect = false; //-1 _vm->_player->_playerOff = false; - _vm->_screen->fadeOut(); + _vm->_screen->forceFadeOut(); + _vm->_events->hideCursor(); _vm->_screen->clearScreen(); + _vm->_events->showCursor(); roomSet(); + _vm->_player->load(); - // TODO: Refactor + if (_vm->_player->_roomNumber != 47) + _vm->_player->calcManScale(); + _vm->_events->hideCursor(); + roomMenu(); _vm->_screen->setBufferScan(); setupRoom(); setWallCodes(); buildScreen(); + _vm->copyBF2Vid(); - if (!_vm->_screen->_vesaMode) { - _vm->copyBF2Vid(); - } else if (_vm->_player->_roomNumber != 20 && _vm->_player->_roomNumber != 24 - && _vm->_player->_roomNumber != 33) { - _vm->_screen->setPalette(); - _vm->copyBF2Vid(); - } - + _vm->_screen->setManPalette(); + _vm->_events->showCursor(); _vm->_player->_frame = 0; _vm->_oldRects.clear(); _vm->_newRects.clear(); + _vm->_events->clearEvents(); } void MartianRoom::roomSet() { @@ -116,6 +91,12 @@ void MartianRoom::roomSet() { _vm->_scripts->_sequence = 1000; _vm->_scripts->searchForSequence(); _vm->_scripts->executeScript(); + + for (int i = 0; i < 30; i++) + _byte26CD2[i] = 0; + + for (int i = 0; i < 10; i++) + _byte26CBC[i] = 0; } void MartianRoom::roomMenu() { @@ -126,16 +107,31 @@ void MartianRoom::roomMenu() { _vm->_screen->saveScreen(); _vm->_screen->setDisplayScan(); _vm->_destIn = _vm->_screen; // TODO: Redundant - _vm->_screen->plotImage(spr, 0, Common::Point(0, 177)); - _vm->_screen->plotImage(spr, 1, Common::Point(143, 177)); + _vm->_screen->plotImage(spr, 0, Common::Point(5, 184)); + _vm->_screen->plotImage(spr, 1, Common::Point(155, 184)); _vm->_screen->restoreScreen(); delete spr; } void MartianRoom::mainAreaClick() { + Common::Point &mousePos = _vm->_events->_mousePos; + Common::Point pt = _vm->_events->calcRawMouse(); + Screen &screen = *_vm->_screen; + Player &player = *_vm->_player; + + if (_selectCommand == -1) { + player._moveTo = pt; + player._playerMove = true; + } else if (mousePos.x >= screen._windowXAdd && + mousePos.x <= (screen._windowXAdd + screen._vWindowBytesWide) && + mousePos.y >= screen._windowYAdd && + mousePos.y <= (screen._windowYAdd + screen._vWindowLinesTall)) { + if (checkBoxes1(pt) >= 0) { + checkBoxes3(); + } + } } } // End of namespace Martian - } // End of namespace Access |