diff options
| -rw-r--r-- | engines/titanic/messages/messages.h | 2 | ||||
| -rw-r--r-- | engines/titanic/npcs/barbot.cpp | 86 | ||||
| -rw-r--r-- | engines/titanic/npcs/barbot.h | 14 | ||||
| -rw-r--r-- | engines/titanic/npcs/callbot.cpp | 38 | ||||
| -rw-r--r-- | engines/titanic/npcs/callbot.h | 7 | ||||
| -rw-r--r-- | engines/titanic/npcs/robot_controller.cpp | 22 | ||||
| -rw-r--r-- | engines/titanic/npcs/robot_controller.h | 5 | ||||
| -rw-r--r-- | engines/titanic/npcs/starlings.cpp | 25 | ||||
| -rw-r--r-- | engines/titanic/npcs/starlings.h | 5 | 
9 files changed, 185 insertions, 19 deletions
diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h index c1d962f656..0935689db7 100644 --- a/engines/titanic/messages/messages.h +++ b/engines/titanic/messages/messages.h @@ -331,7 +331,7 @@ MESSAGE0(CSubSendCCarryMsg);  MESSAGE0(CSUBTransition);  MESSAGE0(CSubTurnOffMsg);  MESSAGE0(CSubTurnOnMsg); -MESSAGE2(CSummonBotMsg, CString, strValue, "", int, numValue, 0); +MESSAGE2(CSummonBotMsg, CString, npcName, "", int, value, 0);  MESSAGE1(CSummonBotQueryMsg, CString, npcName, "");  MESSAGE1(CTakeHeadPieceMsg, CString, value, "NULL");  MESSAGE2(CTextInputMsg, CString, input, "", CString, response, ""); diff --git a/engines/titanic/npcs/barbot.cpp b/engines/titanic/npcs/barbot.cpp index 8f1c5e6ab3..079e8fe10b 100644 --- a/engines/titanic/npcs/barbot.cpp +++ b/engines/titanic/npcs/barbot.cpp @@ -26,6 +26,23 @@ namespace Titanic {  int CBarbot::_v0; +BEGIN_MESSAGE_MAP(CBarbot, CTrueTalkNPC) +	ON_MESSAGE(ActMsg) +	ON_MESSAGE(EnterViewMsg) +	ON_MESSAGE(TurnOn) +	ON_MESSAGE(TurnOff) +	ON_MESSAGE(LeaveViewMsg) +	ON_MESSAGE(MovieEndMsg) +	ON_MESSAGE(TrueTalkSelfQueueAnimSetMsg) +	ON_MESSAGE(TrueTalkQueueUpAnimSetMsg) +	ON_MESSAGE(TrueTalkGetStateValueMsg) +	ON_MESSAGE(TrueTalkTriggerActionMsg) +	ON_MESSAGE(FrameMsg) +	ON_MESSAGE(LoadSuccessMsg) +	ON_MESSAGE(MovieFrameMsg) +	ON_MESSAGE(EnterRoomMsg) +END_MESSAGE_MAP() +  CBarbot::CBarbot() : CTrueTalkNPC() {  	_field108 = 0;  	_field10C = 0; @@ -233,9 +250,74 @@ void CBarbot::load(SimpleFile *file) {  	CTrueTalkNPC::load(file);  } +bool CBarbot::ActMsg(CActMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::EnterViewMsg(CEnterViewMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::TurnOn(CTurnOn *msg) { +	// TODO +	return false; +} + +bool CBarbot::TurnOff(CTurnOff *msg) { +	// TODO +	return false; +} + +bool CBarbot::LeaveViewMsg(CLeaveViewMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::TrueTalkSelfQueueAnimSetMsg(CTrueTalkSelfQueueAnimSetMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::TrueTalkQueueUpAnimSetMsg(CTrueTalkQueueUpAnimSetMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::FrameMsg(CFrameMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::LoadSuccessMsg(CLoadSuccessMsg *msg) { +	// TODO +	return false; +} + +bool CBarbot::MovieFrameMsg(CMovieFrameMsg *msg) { +	// TODO +	return false; +} +  bool CBarbot::EnterRoomMsg(CEnterRoomMsg *msg) { -	warning("TODO: Barbot::CEnterRoomMsg"); -	return true; +	// TODO +	return false;  }  } // End of namespace Titanic diff --git a/engines/titanic/npcs/barbot.h b/engines/titanic/npcs/barbot.h index 7557fdd2c6..123e39afed 100644 --- a/engines/titanic/npcs/barbot.h +++ b/engines/titanic/npcs/barbot.h @@ -29,6 +29,20 @@  namespace Titanic {  class CBarbot : public CTrueTalkNPC { +	DECLARE_MESSAGE_MAP; +	bool ActMsg(CActMsg *msg); +	bool EnterViewMsg(CEnterViewMsg *msg); +	bool TurnOn(CTurnOn *msg); +	bool TurnOff(CTurnOff *msg); +	bool LeaveViewMsg(CLeaveViewMsg *msg); +	bool MovieEndMsg(CMovieEndMsg *msg); +	bool TrueTalkSelfQueueAnimSetMsg(CTrueTalkSelfQueueAnimSetMsg *msg); +	bool TrueTalkQueueUpAnimSetMsg(CTrueTalkQueueUpAnimSetMsg *msg); +	bool TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg); +	bool TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg); +	bool FrameMsg(CFrameMsg *msg); +	bool LoadSuccessMsg(CLoadSuccessMsg *msg); +	bool MovieFrameMsg(CMovieFrameMsg *msg);  	bool EnterRoomMsg(CEnterRoomMsg *msg);  private:  	static int _v0; diff --git a/engines/titanic/npcs/callbot.cpp b/engines/titanic/npcs/callbot.cpp index eb0d4b71d5..4af9876b35 100644 --- a/engines/titanic/npcs/callbot.cpp +++ b/engines/titanic/npcs/callbot.cpp @@ -21,26 +21,54 @@   */  #include "titanic/npcs/callbot.h" +#include "titanic/core/room_item.h"  namespace Titanic { -CCallBot::CCallBot() : CGameObject(), _fieldC8(0) { +BEGIN_MESSAGE_MAP(CCallBot, CGameObject) +	ON_MESSAGE(TurnOn) +	ON_MESSAGE(EnterViewMsg) +END_MESSAGE_MAP() + +CCallBot::CCallBot() : CGameObject(), _enabled(0) {  }  void CCallBot::save(SimpleFile *file, int indent) {  	file->writeNumberLine(1, indent); -	file->writeQuotedLine(_string1, indent); -	file->writeNumberLine(_fieldC8, indent); +	file->writeQuotedLine(_npcName, indent); +	file->writeNumberLine(_enabled, indent);  	CGameObject::save(file, indent);  }  void CCallBot::load(SimpleFile *file) {  	file->readNumber(); -	_string1 = file->readString(); -	_fieldC8 = file->readNumber(); +	_npcName = file->readString(); +	_enabled = file->readNumber();  	CGameObject::load(file);  } +bool CCallBot::TurnOn(CTurnOn *msg) { +	_enabled = true; +	return true; +} + +bool CCallBot::EnterViewMsg(CEnterViewMsg *msg) { +	if (_enabled) { +		CRoomItem *room = getRoom(); +		 +		if (room) { +			CSummonBotQueryMsg queryMsg; +			queryMsg._npcName = _npcName; +			if (queryMsg.execute(room)) +				petOnSummonBot(_npcName, 0); +		} + +		_enabled = false; +	} + +	return true; +} +  } // End of namespace Titanic diff --git a/engines/titanic/npcs/callbot.h b/engines/titanic/npcs/callbot.h index 9b89d59d3f..ca0e0c55b2 100644 --- a/engines/titanic/npcs/callbot.h +++ b/engines/titanic/npcs/callbot.h @@ -28,9 +28,12 @@  namespace Titanic {  class CCallBot : public CGameObject { +	DECLARE_MESSAGE_MAP; +	bool TurnOn(CTurnOn *msg); +	bool EnterViewMsg(CEnterViewMsg *msg);  protected: -	CString _string1; -	int _fieldC8; +	CString _npcName; +	bool _enabled;  public:  	CLASSDEF;  	CCallBot(); diff --git a/engines/titanic/npcs/robot_controller.cpp b/engines/titanic/npcs/robot_controller.cpp index 98866e4505..34c75e30eb 100644 --- a/engines/titanic/npcs/robot_controller.cpp +++ b/engines/titanic/npcs/robot_controller.cpp @@ -24,21 +24,37 @@  namespace Titanic { -CRobotController::CRobotController() : CGameObject(), _string1("BellBot") { +BEGIN_MESSAGE_MAP(CRobotController, CGameObject) +	ON_MESSAGE(SummonBotMsg) +	ON_MESSAGE(SummonBotQueryMsg) +END_MESSAGE_MAP() + +CRobotController::CRobotController() : CGameObject(), _robotName("BellBot") {  }  void CRobotController::save(SimpleFile *file, int indent) {  	file->writeNumberLine(1, indent); -	file->writeQuotedLine(_string1, indent); +	file->writeQuotedLine(_robotName, indent);  	CGameObject::save(file, indent);  }  void CRobotController::load(SimpleFile *file) {  	file->readNumber(); -	_string1 = file->readString(); +	_robotName = file->readString();  	CGameObject::load(file);  } +bool CRobotController::SummonBotMsg(CSummonBotMsg *msg) { +	if (!petDismissBot(msg->_npcName)) +		petOnSummonBot(msg->_npcName, msg->_value); + +	return true; +} + +bool CRobotController::SummonBotQueryMsg(CSummonBotQueryMsg *msg) { +	return _robotName == msg->_npcName; +} +  } // End of namespace Titanic diff --git a/engines/titanic/npcs/robot_controller.h b/engines/titanic/npcs/robot_controller.h index 6cbf57aef2..326c2280dd 100644 --- a/engines/titanic/npcs/robot_controller.h +++ b/engines/titanic/npcs/robot_controller.h @@ -28,8 +28,11 @@  namespace Titanic {  class CRobotController : public CGameObject { +	DECLARE_MESSAGE_MAP; +	bool SummonBotMsg(CSummonBotMsg *msg); +	bool SummonBotQueryMsg(CSummonBotQueryMsg *msg);  protected: -	CString _string1; +	CString _robotName;  public:  	CLASSDEF;  	CRobotController(); diff --git a/engines/titanic/npcs/starlings.cpp b/engines/titanic/npcs/starlings.cpp index 333f4c4b7a..7e5907f577 100644 --- a/engines/titanic/npcs/starlings.cpp +++ b/engines/titanic/npcs/starlings.cpp @@ -24,23 +24,40 @@  namespace Titanic { -int CStarlings::_v1; +BEGIN_MESSAGE_MAP(CStarlings, CCharacter) +	ON_MESSAGE(EnterViewMsg) +	ON_MESSAGE(StatusChangeMsg) +END_MESSAGE_MAP() -CStarlings::CStarlings() : CCharacter() { +CStarlings::CStarlings() : CCharacter(), _enabled(false) {  }  void CStarlings::save(SimpleFile *file, int indent) {  	file->writeNumberLine(1, indent); -	file->writeNumberLine(_v1, indent); +	file->writeNumberLine(_enabled, indent);  	CCharacter::save(file, indent);  }  void CStarlings::load(SimpleFile *file) {  	file->readNumber(); -	_v1 = file->readNumber(); +	_enabled = file->readNumber();  	CCharacter::load(file);  } +bool CStarlings::EnterViewMsg(CEnterViewMsg *msg) { +	if (_enabled) +		setVisible(false); +	else +		playMovie(MOVIE_REPEAT); +	return true; +} + +bool CStarlings::StatusChangeMsg(CStatusChangeMsg *msg) { +	_enabled = msg->_newStatus == 1; +	setVisible(!_enabled); +	return true; +} +  } // End of namespace Titanic diff --git a/engines/titanic/npcs/starlings.h b/engines/titanic/npcs/starlings.h index 4d96e5c77f..1998e6490d 100644 --- a/engines/titanic/npcs/starlings.h +++ b/engines/titanic/npcs/starlings.h @@ -28,8 +28,11 @@  namespace Titanic {  class CStarlings : public CCharacter { +	DECLARE_MESSAGE_MAP; +	bool EnterViewMsg(CEnterViewMsg *msg); +	bool StatusChangeMsg(CStatusChangeMsg *msg);  private: -	static int _v1; +	bool _enabled;  public:  	CLASSDEF;  	CStarlings();  | 
