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  | 
