From d1bc69426eac2458b46ab7fede31c6dd71314ccb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Dec 2014 19:41:40 +0100 Subject: ACCESS: Move variable from Room manager to local function --- engines/access/room.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index f7c2eabd0f..607259ec6f 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -370,9 +370,9 @@ void Room::loadPlayField(int fileNum, int subfile) { screen.loadRawPalette(playData->_stream); // Copy off the tile data - _tileSize = (int)header[2] << 8; - _tile = new byte[_tileSize]; - playData->_stream->read(_tile, _tileSize); + int tileSize = (int)header[2] << 8; + _tile = new byte[tileSize]; + playData->_stream->read(_tile, tileSize); // Copy off the playfield data _matrixSize = header[0] * header[1]; -- cgit v1.2.3 From b2a4999f3cbf8808a10ffe5a4cbb1b536e0011d5 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 2 Jan 2015 11:05:21 +0100 Subject: ACCESS: MM - Fix mouse cursor when y between 177 and 184, add a call to takePicture (not yet implemented) --- engines/access/room.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index f7c2eabd0f..79e5200963 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -55,6 +55,10 @@ void Room::freeTileData() { _tile = nullptr; } +void Room::takePicture() { + warning("TODO: takePicture"); +} + void Room::doRoom() { bool reloadFlag = false; @@ -84,9 +88,13 @@ void Room::doRoom() { _vm->_events->pollEventsAndWait(); _vm->_canSaveLoad = false; - _vm->_player->walk(); - _vm->_midi->midiRepeat(); - _vm->_player->checkScroll(); + if ((_vm->getGameID() == GType_MartianMemorandum) && (_vm->_player->_roomNumber == 47)) { + takePicture(); + } else { + _vm->_player->walk(); + _vm->_midi->midiRepeat(); + _vm->_player->checkScroll(); + } doCommands(); if (_vm->shouldQuitOrRestart()) @@ -136,7 +144,8 @@ void Room::doRoom() { } else { _vm->plotList(); - if (_vm->_events->_mousePos.y < 177) + if (((_vm->getGameID() == GType_MartianMemorandum) && (_vm->_events->_mousePos.y < 184)) || + ((_vm->getGameID() == GType_Amazon) && (_vm->_events->_mousePos.y < 177))) _vm->_events->setCursor(_vm->_events->_normalMouse); else _vm->_events->setCursor(CURSOR_ARROW); -- cgit v1.2.3 From 56754c2a9d98ba41f97e0596fd0015f3edb07366 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 2 Jan 2015 22:34:45 +0100 Subject: ACCESS: MM - Make RMOUSE game-specific --- engines/access/room.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 79e5200963..f10ba86a40 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -38,6 +38,23 @@ Room::Room(AccessEngine *vm) : Manager(vm) { _selectCommand = 0; _conFlag = false; _selectCommand = -1; + + switch (vm->getGameID()) { + case GType_Amazon: + for (int i = 0; i < 10; i++) { + _rMouse[i][0] = Amazon::RMOUSE[i][0]; + _rMouse[i][1] = Amazon::RMOUSE[i][1]; + } + break; + case GType_MartianMemorandum: + for (int i = 0; i < 10; i++) { + _rMouse[i][0] = Martian::RMOUSE[i][0]; + _rMouse[i][1] = Martian::RMOUSE[i][1]; + } + break; + default: + error("Game not supported"); + } } Room::~Room() { @@ -464,8 +481,8 @@ void Room::doCommands() { if (_vm->_events->_mouseRow >= 22) { // Mouse in user interface area for (commandId = 0; commandId < 10; ++commandId) { - if (_vm->_events->_mousePos.x >= RMOUSE[commandId][0] && - _vm->_events->_mousePos.x < RMOUSE[commandId][1]) + if (_vm->_events->_mousePos.x >= _rMouse[commandId][0] && + _vm->_events->_mousePos.x < _rMouse[commandId][1]) break; } if (commandId < 10) @@ -564,7 +581,7 @@ void Room::executeCommand(int commandId) { // Draw the button as selected _vm->_screen->plotImage(spr, _selectCommand + 2, - Common::Point(RMOUSE[_selectCommand][0], 176)); + Common::Point(_rMouse[_selectCommand][0], (_vm->getGameID() == GType_MartianMemorandum) ? 184 : 176)); _vm->_screen->restoreScreen(); _vm->_boxSelect = true; -- cgit v1.2.3 From fa07048bc4be0339b45d650873643f941aee96b2 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 4 Jan 2015 21:38:37 +0100 Subject: ACCESS: Improve the use of _establishTable as a boolean --- engines/access/room.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index f10ba86a40..fa0c0c4510 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -199,8 +199,8 @@ void Room::loadRoomData(const byte *roomData) { _vm->_establishFlag = false; if (roomInfo._estIndex != -1) { _vm->_establishFlag = true; - if (_vm->_establishTable[roomInfo._estIndex] != 1) { - _vm->_establishTable[roomInfo._estIndex] = 1; + if (!_vm->_establishTable[roomInfo._estIndex]) { + _vm->_establishTable[roomInfo._estIndex] = true; _vm->establish(0, roomInfo._estIndex); } } -- cgit v1.2.3 From b1477438bbc440e6bc240adc19029e7d2817da33 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 18 Jan 2015 15:26:05 +0100 Subject: ACCESS: MM - Implement displayInv --- engines/access/room.cpp | 99 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 66 insertions(+), 33 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index fa0c0c4510..669ee26dc6 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -515,9 +515,6 @@ void Room::cycleCommand(int incr) { } void Room::handleCommand(int commandId) { - if (commandId == 1) - --commandId; - if (commandId == 9) { _vm->_events->debounceLeft(); _vm->_canSaveLoad = true; @@ -536,39 +533,75 @@ void Room::executeCommand(int commandId) { EventsManager &events = *_vm->_events; _selectCommand = commandId; - switch (commandId) { - case 0: - events.forceSetCursor(CURSOR_LOOK); - break; - case 2: - events.forceSetCursor(CURSOR_USE); - break; - case 3: - events.forceSetCursor(CURSOR_TAKE); - break; - case 4: - events.setCursor(CURSOR_ARROW); - if (_vm->_inventory->newDisplayInv() == 2) { - commandOff(); + if (_vm->getGameID() == GType_MartianMemorandum) { + switch (commandId) { + case 4: + events.setCursor(CURSOR_ARROW); + if (_vm->_inventory->displayInv() == 2) { + commandOff(); + return; + } + if (_vm->_useItem == 39) { + if (_vm->_player->_roomNumber == 23) + _vm->_currentMan = 1; + commandOff(); + return; + } else if (_vm->_useItem == 6) { + _vm->_flags[3] = 2; + _vm->_scripts->converse1(24); + + _conFlag = true; + while (_conFlag && !_vm->shouldQuitOrRestart()) { + _conFlag = false; + _vm->_scripts->executeScript(); + } + + _vm->_boxSelect = true; + } + break; + case 7: + walkCursor(); return; + default: + // No set cursor in MM. Forcing to CROSSHAIRS + events.setCursor(CURSOR_CROSSHAIRS); + break; + } + } else { + switch (commandId) { + case 0: + case 1: + events.forceSetCursor(CURSOR_LOOK); + break; + case 2: + events.forceSetCursor(CURSOR_USE); + break; + case 3: + events.forceSetCursor(CURSOR_TAKE); + break; + case 4: + events.setCursor(CURSOR_ARROW); + if (_vm->_inventory->newDisplayInv() == 2) { + commandOff(); + return; + } + break; + case 5: + events.forceSetCursor(CURSOR_CLIMB); + break; + case 6: + events.forceSetCursor(CURSOR_TALK); + break; + case 7: + walkCursor(); + return; + case 8: + events.forceSetCursor(CURSOR_HELP); + break; + default: + break; } - break; - case 5: - events.forceSetCursor(CURSOR_CLIMB); - break; - case 6: - events.forceSetCursor(CURSOR_TALK); - break; - case 7: - walkCursor(); - return; - case 8: - events.forceSetCursor(CURSOR_HELP); - break; - default: - break; } - // Draw the default toolbar menu at the bottom of the screen roomMenu(); _vm->_screen->saveScreen(); -- cgit v1.2.3 From b6b5a520d4f899c5317140dbaf8d5d7b8381908b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 25 Jan 2015 01:37:37 +0100 Subject: ACCESS: MM - Add menu case 8 --- engines/access/room.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 669ee26dc6..5ad576ec90 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -557,11 +557,28 @@ void Room::executeCommand(int commandId) { } _vm->_boxSelect = true; + return; } break; case 7: walkCursor(); return; + case 8: { + EventsManager &events = *_vm->_events; + + events.forceSetCursor(CURSOR_CROSSHAIRS); + _vm->_scripts->_sequence = 10000; + _vm->_scripts->searchForSequence(); + + _conFlag = true; + while (_conFlag && !_vm->shouldQuitOrRestart()) { + _conFlag = false; + _vm->_scripts->executeScript(); + } + + _vm->_boxSelect = true; + return; + } default: // No set cursor in MM. Forcing to CROSSHAIRS events.setCursor(CURSOR_CROSSHAIRS); @@ -602,8 +619,6 @@ void Room::executeCommand(int commandId) { break; } } - // Draw the default toolbar menu at the bottom of the screen - roomMenu(); _vm->_screen->saveScreen(); _vm->_screen->setDisplayScan(); -- cgit v1.2.3 From 452c5e59c5e7c61bbf4135ac7430798fd3a97031 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 4 Feb 2015 22:22:50 +0100 Subject: ACCESS: Tex2 - Start implementing takePicture() --- engines/access/room.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 5ad576ec90..0767bf111e 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -72,8 +72,91 @@ void Room::freeTileData() { _tile = nullptr; } +void Room::clearCamera() { + _vm->_player->_scrollFlag = true; + _vm->_events->hideCursor(); + + _vm->_screen->_orgX1 = 48; + _vm->_screen->_orgY1 = 24; + _vm->_screen->_orgX2 = 274; + _vm->_screen->_orgY2 = 152; + _vm->_screen->_lColor = 0; + _vm->_screen->drawRect(); + + _vm->_events->showCursor(); + + _vm->_events->_vbCount = 4; + while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) + _vm->_events->pollEventsAndWait(); +} + void Room::takePicture() { - warning("TODO: takePicture"); + _vm->_events->pollEvents(); + if (!_vm->_events->_leftButton) + return; + + Common::Array pictureCoords; + for (int i = 0; Martian::PICTURERANGE[i][0] != -1; i += 2) { + pictureCoords.push_back(Common::Rect(Martian::PICTURERANGE[i][0], Martian::PICTURERANGE[i + 1][0], + Martian::PICTURERANGE[i][1], Martian::PICTURERANGE[i + 1][1])); + } + + int result = _vm->_events->checkMouseBox1(pictureCoords); + + if (result == 4) { + warning("TODO case 4"); + _vm->_events->debounceLeft(); + if (_vm->_inventory->_inv[44]._value != ITEM_IN_INVENTORY) { + Common::String msg = "YOU HAVE NO MORE FILM."; + _vm->_scripts->doCmdPrint_v1(msg); + return; + } + + // TODO: simplify the second part of the test when tested + if ((_vm->_scrollCol < 35) || ((_vm->_scrollRow >= 10) && (_vm->_scrollRow >= 20))){ + Common::String msg = "THAT ISN'T INTERESTING ENOUGH TO WASTE FILM ON."; + _vm->_scripts->doCmdPrint_v1(msg); + return; + } + + if (_vm->_inventory->_inv[26]._value != ITEM_USED) { + Common::String msg = "ALTHOUGH IT WOULD MAKE A NICE PICTURE, YOU MAY FIND SOMETHING MORE INTERESTING TO USE YOUR FILM ON."; + _vm->_scripts->doCmdPrint_v1(msg); + return; + } + + Common::String msg = "THAT PHOTO MAY COME IN HANDY SOME DAY."; + _vm->_scripts->doCmdPrint_v1(msg); + _vm->_inventory->_inv[8]._value = ITEM_IN_INVENTORY; + _vm->_pictureTaken++; + if (_vm->_pictureTaken == 16) + _vm->_inventory->_inv[44]._value = ITEM_USED; + + _vm->_events->debounceLeft(); + _vm->_sound->playSound(0); + clearCamera(); + return; + } else if (result == 5) { + if (_vm->_flags[26] != 2) { + _vm->_video->closeVideo(); + _vm->_video->_videoEnd = true; + } + _vm->_player->_roomNumber = 7; + _vm->_room->_function = FN_CLEAR1; + return; + } else if (result >= 0) + _vm->_player->_move = (Direction)(result + 1); + + _vm->_player->_scrollFlag = false; + if (_vm->_player->_move == UP) + warning("TODO: loc_163E9 2"); + else if (_vm->_player->_move == DOWN) + warning("TODO: loc_1644A 2"); + else if (_vm->_player->_move == LEFT) + warning("TODO: loc_1631E 2"); + else if (_vm->_player->_move == RIGHT) + warning("TODO: loc_1637F 2"); + else return; } void Room::doRoom() { -- cgit v1.2.3 From 852a6b3e81fb1dbfc010b15aff3f237df75f9992 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 5 Feb 2015 06:42:58 +0100 Subject: ACCESS: MM - Hook scroll functions in takePicture --- engines/access/room.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 0767bf111e..3960277643 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -104,7 +104,6 @@ void Room::takePicture() { int result = _vm->_events->checkMouseBox1(pictureCoords); if (result == 4) { - warning("TODO case 4"); _vm->_events->debounceLeft(); if (_vm->_inventory->_inv[44]._value != ITEM_IN_INVENTORY) { Common::String msg = "YOU HAVE NO MORE FILM."; @@ -149,14 +148,13 @@ void Room::takePicture() { _vm->_player->_scrollFlag = false; if (_vm->_player->_move == UP) - warning("TODO: loc_163E9 2"); + _vm->_player->scrollDown(); else if (_vm->_player->_move == DOWN) - warning("TODO: loc_1644A 2"); + _vm->_player->scrollUp(); else if (_vm->_player->_move == LEFT) - warning("TODO: loc_1631E 2"); + _vm->_player->scrollRight(); else if (_vm->_player->_move == RIGHT) - warning("TODO: loc_1637F 2"); - else return; + _vm->_player->scrollLeft(); } void Room::doRoom() { -- cgit v1.2.3 From fb78a6f46554ee4c4d5e0bd21005daf6bb95e026 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 5 Feb 2015 06:59:53 +0100 Subject: ACCESS: MM - Add an optional variable to scroll functions --- engines/access/room.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 3960277643..6e0a4aa6db 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -148,13 +148,13 @@ void Room::takePicture() { _vm->_player->_scrollFlag = false; if (_vm->_player->_move == UP) - _vm->_player->scrollDown(); + _vm->_player->scrollDown(2); else if (_vm->_player->_move == DOWN) - _vm->_player->scrollUp(); + _vm->_player->scrollUp(2); else if (_vm->_player->_move == LEFT) - _vm->_player->scrollRight(); + _vm->_player->scrollRight(2); else if (_vm->_player->_move == RIGHT) - _vm->_player->scrollLeft(); + _vm->_player->scrollLeft(2); } void Room::doRoom() { -- cgit v1.2.3 From 7734cea9c87d2527abb09c0024caeeb26a51beb2 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Thu, 23 Jul 2015 23:34:32 +0200 Subject: ACCESS: Remove unnecessary variable to fix GCC warning We already have 'events' declared earlier in the function. --- engines/access/room.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'engines/access/room.cpp') diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 46e8d2c8d8..c91b37c65d 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -645,8 +645,6 @@ void Room::executeCommand(int commandId) { walkCursor(); return; case 8: { - EventsManager &events = *_vm->_events; - events.forceSetCursor(CURSOR_CROSSHAIRS); _vm->_scripts->_sequence = 10000; _vm->_scripts->searchForSequence(); -- cgit v1.2.3