diff options
| -rw-r--r-- | engines/titanic/game/bar_menu.cpp | 70 | ||||
| -rw-r--r-- | engines/titanic/game/bar_menu.h | 13 | ||||
| -rw-r--r-- | engines/titanic/game/bar_menu_button.cpp | 22 | ||||
| -rw-r--r-- | engines/titanic/game/bar_menu_button.h | 3 | 
4 files changed, 98 insertions, 10 deletions
diff --git a/engines/titanic/game/bar_menu.cpp b/engines/titanic/game/bar_menu.cpp index b24c429c9b..3812a8dab6 100644 --- a/engines/titanic/game/bar_menu.cpp +++ b/engines/titanic/game/bar_menu.cpp @@ -24,25 +24,81 @@  namespace Titanic { -CBarMenu::CBarMenu() : CGameObject(), _fieldBC(0), _fieldC0(0), _fieldC4(6) { +BEGIN_MESSAGE_MAP(CBarMenu, CGameObject) +	ON_MESSAGE(PETActivateMsg) +	ON_MESSAGE(PETDownMsg) +	ON_MESSAGE(PETUpMsg) +	ON_MESSAGE(EnterViewMsg) +	ON_MESSAGE(LeaveViewMsg) +END_MESSAGE_MAP() + +CBarMenu::CBarMenu() : CGameObject(), _barFrameNumber(0), _visibleFlag(false), _numFrames(6) {  }  void CBarMenu::save(SimpleFile *file, int indent) {  	file->writeNumberLine(1, indent); -	file->writeNumberLine(_fieldBC, indent); -	file->writeNumberLine(_fieldC0, indent); -	file->writeNumberLine(_fieldC4, indent); +	file->writeNumberLine(_barFrameNumber, indent); +	file->writeNumberLine(_visibleFlag, indent); +	file->writeNumberLine(_numFrames, indent);  	CGameObject::save(file, indent);  }  void CBarMenu::load(SimpleFile *file) {  	file->readNumber(); -	_fieldBC = file->readNumber(); -	_fieldC0 = file->readNumber(); -	_fieldC4 = file->readNumber(); +	_barFrameNumber = file->readNumber(); +	_visibleFlag = file->readNumber(); +	_numFrames = file->readNumber();  	CGameObject::load(file);  } +bool CBarMenu::PETActivateMsg(CPETActivateMsg *msg) { +	if (msg->_name == "Television") { +		_visibleFlag = !_visibleFlag; +		setVisible(_visibleFlag); +		loadFrame(_barFrameNumber); +	} + +	return true; +} + +bool CBarMenu::PETDownMsg(CPETDownMsg *msg) { +	if (_visibleFlag) { +		if (--_barFrameNumber < 0) +			_barFrameNumber = _numFrames - 1; +		 +		loadFrame(_barFrameNumber); +	} + +	return true; +} + +bool CBarMenu::PETUpMsg(CPETUpMsg *msg) { +	if (_visibleFlag) { +		_barFrameNumber = (_barFrameNumber + 1) % _numFrames; +		loadFrame(_barFrameNumber); +	} + +	return true; +} + +bool CBarMenu::EnterViewMsg(CEnterViewMsg *msg) { +	petSetArea(PET_REMOTE); +	petHighlightGlyph(2); +	petSetRemoteTarget(); +	setVisible(_visibleFlag); +	loadFrame(_barFrameNumber); + +	return true; +} + +bool CBarMenu::LeaveViewMsg(CLeaveViewMsg *msg) { +	petClear(); +	_visibleFlag = false; +	setVisible(false); + +	return true; +} +  } // End of namespace Titanic diff --git a/engines/titanic/game/bar_menu.h b/engines/titanic/game/bar_menu.h index 84c0219084..f16f7b035d 100644 --- a/engines/titanic/game/bar_menu.h +++ b/engines/titanic/game/bar_menu.h @@ -24,14 +24,21 @@  #define TITANIC_BAR_MENU_H  #include "titanic/core/game_object.h" +#include "titanic/messages/pet_messages.h"  namespace Titanic {  class CBarMenu : public CGameObject { +	DECLARE_MESSAGE_MAP; +	bool PETActivateMsg(CPETActivateMsg *msg); +	bool PETDownMsg(CPETDownMsg *msg); +	bool PETUpMsg(CPETUpMsg *msg); +	bool EnterViewMsg(CEnterViewMsg *msg); +	bool LeaveViewMsg(CLeaveViewMsg *msg);  public: -	int _fieldBC; -	int _fieldC0; -	int _fieldC4; +	int _barFrameNumber; +	bool _visibleFlag; +	int _numFrames;  public:  	CLASSDEF;  	CBarMenu(); diff --git a/engines/titanic/game/bar_menu_button.cpp b/engines/titanic/game/bar_menu_button.cpp index f57d72c64a..874584db30 100644 --- a/engines/titanic/game/bar_menu_button.cpp +++ b/engines/titanic/game/bar_menu_button.cpp @@ -21,9 +21,15 @@   */  #include "titanic/game/bar_menu_button.h" +#include "titanic/messages/pet_messages.h"  namespace Titanic { +BEGIN_MESSAGE_MAP(CBarMenuButton, CGameObject) +	ON_MESSAGE(MouseButtonDownMsg) +	ON_MESSAGE(MouseButtonUpMsg) +END_MESSAGE_MAP() +  void CBarMenuButton::save(SimpleFile *file, int indent) {  	file->writeNumberLine(1, indent);  	file->writeNumberLine(_value, indent); @@ -36,4 +42,20 @@ void CBarMenuButton::load(SimpleFile *file) {  	CGameObject::load(file);  } +bool CBarMenuButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { +	return true; +} + +bool CBarMenuButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) { +	if (_value) { +		CPETUpMsg upMsg("", -1); +		upMsg.execute("BarTelevision"); +	} else { +		CPETDownMsg downMsg("", -1); +		downMsg.execute("BarTelevision"); +	} + +	return true; +} +  } // End of namespace Titanic diff --git a/engines/titanic/game/bar_menu_button.h b/engines/titanic/game/bar_menu_button.h index c666df413b..300435c209 100644 --- a/engines/titanic/game/bar_menu_button.h +++ b/engines/titanic/game/bar_menu_button.h @@ -28,6 +28,9 @@  namespace Titanic {  class CBarMenuButton : public CGameObject { +	DECLARE_MESSAGE_MAP; +	bool MouseButtonDownMsg(CMouseButtonDownMsg *msg); +	bool MouseButtonUpMsg(CMouseButtonUpMsg *msg);  public:  	int _value;  public:  | 
