From 4d7e49ddb8a082f5da7ab7d2d0b8425c5a3e09cc Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 28 Dec 2007 11:07:35 +0000 Subject: Fix to prevent the F5 key allowing the game to be saved during player conversations or viewing a remote room svn-id: r30048 --- engines/lure/game.cpp | 18 +++++++++++++++++- engines/lure/game.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/engines/lure/game.cpp b/engines/lure/game.cpp index 98089f5668..938cd173a8 100644 --- a/engines/lure/game.cpp +++ b/engines/lure/game.cpp @@ -193,7 +193,8 @@ void Game::execute() { bool handled = true; switch (events.event().kbd.keycode) { case Common::KEYCODE_F5: - SaveRestoreDialog::show(true); + if (isMenuAvailable()) + SaveRestoreDialog::show(true); break; case Common::KEYCODE_F7: @@ -1015,6 +1016,21 @@ bool Game::getYN() { return result; } +bool Game::isMenuAvailable() { + Resources &res = Resources::getReference(); + Room &room = Room::getReference(); + uint16 oldRoomNumber = res.fieldList().getField(OLD_ROOM_NUMBER); + + if (oldRoomNumber != 0) + // Viewing a room remotely - so the menu isn't available + return false; + + else if ((room.cursorState() == CS_TALKING) || (res.getTalkState() != TALK_NONE)) + return false; + + return true; +} + void Game::saveToStream(WriteStream *stream) { stream->writeByte(_fastTextFlag); stream->writeByte(_soundFlag); diff --git a/engines/lure/game.h b/engines/lure/game.h index d5f57aa8ff..ea066335b8 100644 --- a/engines/lure/game.h +++ b/engines/lure/game.h @@ -66,6 +66,7 @@ private: void displayBarrelAnimation(); void handleBootParam(int value); bool getYN(); + bool isMenuAvailable(); public: Game(); virtual ~Game(); -- cgit v1.2.3