diff options
author | Paul Gilbert | 2017-10-10 19:19:46 -0400 |
---|---|---|
committer | Paul Gilbert | 2017-10-10 19:19:46 -0400 |
commit | 3fd2cf29b14f92015052fc85aee9299de57360e7 (patch) | |
tree | bba29105b1e1b4ff82c447c282b30a8c57608c8d | |
parent | 1f5908c9bd7f4d19ed71fae1ed31fb2b294bf8ed (diff) | |
download | scummvm-rg350-3fd2cf29b14f92015052fc85aee9299de57360e7.tar.gz scummvm-rg350-3fd2cf29b14f92015052fc85aee9299de57360e7.tar.bz2 scummvm-rg350-3fd2cf29b14f92015052fc85aee9299de57360e7.zip |
TITANIC: Only allow moving to SGT TV in assigned room
-rw-r--r-- | engines/titanic/game/ear_sweet_bowl.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/game/sgt/sgt_nav.cpp | 17 | ||||
-rw-r--r-- | engines/titanic/pet_control/pet_control.h | 6 | ||||
-rw-r--r-- | engines/titanic/pet_control/pet_rooms.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/pet_control/pet_rooms.h | 5 |
5 files changed, 20 insertions, 12 deletions
diff --git a/engines/titanic/game/ear_sweet_bowl.cpp b/engines/titanic/game/ear_sweet_bowl.cpp index 387392b26d..e9190c337a 100644 --- a/engines/titanic/game/ear_sweet_bowl.cpp +++ b/engines/titanic/game/ear_sweet_bowl.cpp @@ -49,7 +49,7 @@ bool CEarSweetBowl::MovieEndMsg(CMovieEndMsg *msg) { if (!doneMsg._value) { CPetControl *pet = getPetControl(); if (pet) - pet->hasRoomFlags(); + pet->isInAssignedRoom(); CIsParrotPresentMsg parrotMsg; parrotMsg.execute(findRoom()); diff --git a/engines/titanic/game/sgt/sgt_nav.cpp b/engines/titanic/game/sgt/sgt_nav.cpp index 3be92b4828..904ce64217 100644 --- a/engines/titanic/game/sgt/sgt_nav.cpp +++ b/engines/titanic/game/sgt/sgt_nav.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/sgt/sgt_nav.h" +#include "titanic/pet_control/pet_control.h" namespace Titanic { @@ -43,7 +44,9 @@ bool SGTNav::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { CTurnOn onMsg; CTurnOff offMsg; - if (_statics->_chestOfDrawers == "Open" && _statics->_bedhead == "Open") { + CPetControl *pet = getPetControl(); + if (_statics->_chestOfDrawers == "Open" && _statics->_bedhead == "Open" + && pet->isInAssignedRoom()) { if (_statics->_vase == "Open") offMsg.execute("Vase"); if (_statics->_tv == "Closed") @@ -68,10 +71,14 @@ bool SGTNav::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { } bool SGTNav::MouseMoveMsg(CMouseMoveMsg *msg) { - if (_statics->_chestOfDrawers == "Open" && _statics->_bedhead == "Open") - _cursorId = CURSOR_MOVE_FORWARD; - else - _cursorId = CURSOR_ARROW; + _cursorId = CURSOR_ARROW; + + if (_statics->_chestOfDrawers == "Open" && _statics->_bedhead == "Open") { + CPetControl *pet = getPetControl(); + if (pet->isInAssignedRoom()) { + _cursorId = CURSOR_MOVE_FORWARD; + } + } return true; } diff --git a/engines/titanic/pet_control/pet_control.h b/engines/titanic/pet_control/pet_control.h index 6408c8a29b..a95b896159 100644 --- a/engines/titanic/pet_control/pet_control.h +++ b/engines/titanic/pet_control/pet_control.h @@ -438,10 +438,10 @@ public: } /** - * Returns true if the Rooms list has a room with the given flags + * Returns true if the player is in the current or previously assigned rooms */ - bool hasRoomFlags() const { - return _rooms.hasRoomFlags(getRoomFlags()); + bool isInAssignedRoom() const { + return _rooms.isAssignedRoom(getRoomFlags()); } uint getRoomFlags() const { diff --git a/engines/titanic/pet_control/pet_rooms.cpp b/engines/titanic/pet_control/pet_rooms.cpp index 45ed209d5c..8fa0f6b4f8 100644 --- a/engines/titanic/pet_control/pet_rooms.cpp +++ b/engines/titanic/pet_control/pet_rooms.cpp @@ -339,7 +339,7 @@ bool CPetRooms::changeLocationClass(PassengerClass newClassNum) { return true; } -bool CPetRooms::hasRoomFlags(uint roomFlags) const { +bool CPetRooms::isAssignedRoom(uint roomFlags) const { for (CPetRoomsGlyphs::const_iterator i = _glyphs.begin(); i != _glyphs.end(); ++i) { const CPetRoomsGlyph *glyph = static_cast<const CPetRoomsGlyph *>(*i); if (glyph->isAssigned() && glyph->getRoomFlags() == roomFlags) diff --git a/engines/titanic/pet_control/pet_rooms.h b/engines/titanic/pet_control/pet_rooms.h index ecfeadf2b9..a893e9a49d 100644 --- a/engines/titanic/pet_control/pet_rooms.h +++ b/engines/titanic/pet_control/pet_rooms.h @@ -164,9 +164,10 @@ public: bool changeLocationClass(PassengerClass newClassNum); /** - * Returns true if a room glyph exists with the given flags + * Returns true if the specified location is the current or + * previously assigned room */ - bool hasRoomFlags(uint roomFlags) const; + bool isAssignedRoom(uint roomFlags) const; /** * Returns the room flags for the player's currently assigned room |