diff options
| -rw-r--r-- | engines/titanic/game/cdrom_computer.cpp | 47 | ||||
| -rw-r--r-- | engines/titanic/game/cdrom_computer.h | 8 | 
2 files changed, 41 insertions, 14 deletions
| diff --git a/engines/titanic/game/cdrom_computer.cpp b/engines/titanic/game/cdrom_computer.cpp index e67e4fb1d8..a25706a198 100644 --- a/engines/titanic/game/cdrom_computer.cpp +++ b/engines/titanic/game/cdrom_computer.cpp @@ -21,31 +21,58 @@   */  #include "titanic/game/cdrom_computer.h" +#include "titanic/core/room_item.h"  namespace Titanic { -CCDROMComputer::CCDROMComputer() : CGameObject(), -		_fieldBC(0), _fieldC0(3), _fieldC4(55), _fieldC8(32) { +BEGIN_MESSAGE_MAP(CCDROMComputer, CGameObject) +	ON_MESSAGE(MouseButtonDownMsg) +END_MESSAGE_MAP() + +CCDROMComputer::CCDROMComputer() : CGameObject(),  +		_clickRect(0, 3, 55, 32) {  }  void CCDROMComputer::save(SimpleFile *file, int indent) const {  	file->writeNumberLine(1, indent); -	file->writeNumberLine(_fieldBC, indent); -	file->writeNumberLine(_fieldC0, indent); -	file->writeNumberLine(_fieldC4, indent); -	file->writeNumberLine(_fieldC8, indent); +	file->writeNumberLine(_clickRect.left, indent); +	file->writeNumberLine(_clickRect.top, indent); +	file->writeNumberLine(_clickRect.right, indent); +	file->writeNumberLine(_clickRect.bottom, indent);  	CGameObject::save(file, indent);  }  void CCDROMComputer::load(SimpleFile *file) {  	file->readNumber(); -	_fieldBC = file->readNumber(); -	_fieldC0 = file->readNumber(); -	_fieldC4 = file->readNumber(); -	_fieldC8 = file->readNumber(); +	_clickRect.left = file->readNumber(); +	_clickRect.top = file->readNumber(); +	_clickRect.right = file->readNumber(); +	_clickRect.bottom = file->readNumber();  	CGameObject::load(file);  } +bool CCDROMComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { +	CTreeItem *tray = getRoom()->findByName("newTray"); +	if (tray) { +		CStatusChangeMsg statusMsg; +		statusMsg.execute(tray); +		 +		if (!statusMsg._success) { +			// Check if the mouse is within the clickable area +			Rect tempRect = _clickRect; +			tempRect.translate(_bounds.left, _bounds.top); + +			if (!tempRect.contains(msg->_mousePos)) +				return true; +		} + +		CActMsg actMsg("ClickedOn"); +		actMsg.execute(tray); +	} + +	return true; +} +  } // End of namespace Titanic diff --git a/engines/titanic/game/cdrom_computer.h b/engines/titanic/game/cdrom_computer.h index de070b007b..4ea2f4d568 100644 --- a/engines/titanic/game/cdrom_computer.h +++ b/engines/titanic/game/cdrom_computer.h @@ -24,15 +24,15 @@  #define TITANIC_CDROM_COMPUTER_H  #include "titanic/core/game_object.h" +#include "titanic/messages/mouse_messages.h"  namespace Titanic {  class CCDROMComputer : public CGameObject { +	DECLARE_MESSAGE_MAP +	bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);  private: -	int _fieldBC; -	int _fieldC0; -	int _fieldC4; -	int _fieldC8; +	Rect _clickRect;  public:  	CLASSDEF  	CCDROMComputer(); | 
