[Scummvm-cvs-logs] scummvm master -> af85a2a3fac21b3da3eb70a2eb216457b2b097bb

dreammaster dreammaster at scummvm.org
Sun Aug 14 03:01:06 CEST 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
af85a2a3fa TITANIC: Implemented CLiftBot class


Commit: af85a2a3fac21b3da3eb70a2eb216457b2b097bb
    https://github.com/scummvm/scummvm/commit/af85a2a3fac21b3da3eb70a2eb216457b2b097bb
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-08-13T21:00:57-04:00

Commit Message:
TITANIC: Implemented CLiftBot class

Changed paths:
    engines/titanic/npcs/liftbot.cpp
    engines/titanic/npcs/liftbot.h



diff --git a/engines/titanic/npcs/liftbot.cpp b/engines/titanic/npcs/liftbot.cpp
index 43daa01..fbaa60d 100644
--- a/engines/titanic/npcs/liftbot.cpp
+++ b/engines/titanic/npcs/liftbot.cpp
@@ -21,35 +21,167 @@
  */
 
 #include "titanic/npcs/liftbot.h"
+#include "titanic/pet_control/pet_control.h"
 
 namespace Titanic {
 
-int CLiftBot::_v1;
-int CLiftBot::_v2;
+BEGIN_MESSAGE_MAP(CLiftBot, CTrueTalkNPC)
+	ON_MESSAGE(TextInputMsg)
+	ON_MESSAGE(EnterViewMsg)
+	ON_MESSAGE(EnterRoomMsg)
+	ON_MESSAGE(TrueTalkTriggerActionMsg)
+	ON_MESSAGE(LeaveRoomMsg)
+	ON_MESSAGE(TurnOff)
+	ON_MESSAGE(TurnOn)
+	ON_MESSAGE(LeaveViewMsg)
+	ON_MESSAGE(TrueTalkGetStateValueMsg)
+	ON_MESSAGE(NPCPlayTalkingAnimationMsg)
+	ON_MESSAGE(ActMsg)
+END_MESSAGE_MAP()
+
+bool CLiftBot::_flag;
+bool CLiftBot::_enabled;
 
 CLiftBot::CLiftBot() : CTrueTalkNPC(), _field108(1) {
 }
 
 void CLiftBot::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(1, indent);
-	file->writeNumberLine(_v1, indent);
+	file->writeNumberLine(_flag, indent);
 	file->writeNumberLine(_field108, indent);
-	file->writeNumberLine(_v2, indent);
+	file->writeNumberLine(_enabled, indent);
 
 	CTrueTalkNPC::save(file, indent);
 }
 
 void CLiftBot::load(SimpleFile *file) {
 	file->readNumber();
-	_v1 = file->readNumber();
+	_flag = file->readNumber();
 	_field108 = file->readNumber();
-	_v2 = file->readNumber();
+	_enabled = file->readNumber();
 
 	CTrueTalkNPC::load(file);
 }
 
+bool CLiftBot::TextInputMsg(CTextInputMsg *msg) {
+	CPetControl *pet = getPetControl();
+	if (_enabled || pet->getRoomsElevatorNum() != 4) {
+		if (getName() != "LiftBot") {
+			CViewItem *view = findView();
+			processInput(msg, view);
+		}
+	}
+
+	return true;
+}
+
+bool CLiftBot::EnterViewMsg(CEnterViewMsg *msg) {
+	CPetControl *pet = getPetControl();
+	if (!_enabled && pet->getRoomsElevatorNum() == 4) {
+		loadFrame(700);
+	} else if (!_flag) {
+		if (getName() != "LiftBot") {
+			CViewItem *view = findView();
+			endTalking(this, true, view);
+			petSetArea(PET_CONVERSATION);
+			_flag = 1;
+		}
+	}
+
+	return true;
+}
+
 bool CLiftBot::EnterRoomMsg(CEnterRoomMsg *msg) {
-	warning("CLiftBot::handleEvent");
+	_flag = 0;
+	changeView("Lift.Node 1.W", "");
+	return true;
+}
+
+bool CLiftBot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) {
+	if (msg->_action == 2 && msg->_param1 != _field108) {
+		CStatusChangeMsg statusMsg(_field108, msg->_param1, false);
+		statusMsg.execute("Well");
+
+		_field108 = msg->_param1;
+	}
+
+	return true;
+}
+
+bool CLiftBot::LeaveRoomMsg(CLeaveRoomMsg *msg) {
+	if (getName() != "LiftBot")
+		performAction(false);
+
+	return true;
+}
+
+bool CLiftBot::TurnOff(CTurnOff *msg) {
+	_enabled = false;
+	return true;
+}
+
+bool CLiftBot::TurnOn(CTurnOn *msg) {
+	_enabled = true;
+	if (!_flag) {
+		if (compareTo("LiftBotTalking", 0)) {
+			CViewItem *view = findView();
+			endTalking(this, MOVIE_REPEAT);
+			petSetArea(PET_CONVERSATION);
+			_flag = true;
+		}
+	}
+
+	return true;
+}
+
+bool CLiftBot::LeaveViewMsg(CLeaveViewMsg *msg) {
+	return true;
+}
+
+bool CLiftBot::TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg) {
+	if (msg->_stateNum == 4) {
+		CPetControl *pet = getPetControl();
+		if (pet)
+			msg->_stateVal = pet->getAssignedFloorNum();
+	} else if (msg->_stateNum == 5) {
+		msg->_stateVal = _field108;
+	} else if (msg->_stateNum == 6) {
+		CPetControl *pet = getPetControl();
+		if (pet)
+			msg->_stateVal = pet->getRoomsElevatorNum();
+	} else {
+		msg->_stateVal = _field108;
+	}
+
+	return true;
+}
+
+bool CLiftBot::NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg) {
+	const char *const NAMES[] = {
+		"Groaning", "Groaning 2", "Talking 1", "Talking 2", "Talking 3",
+		"Happy Talking", "Complaining", "Aggressive", "Explaining",
+		"Happy Talking 2", "Happy Talking 3", "Happy Talking 4"
+		"Confidential", nullptr
+	};
+
+	if (msg->_value2 == 2)
+		playClip("At Rest", 0);
+	else
+		msg->_names = NAMES;
+	return true;
+}
+
+bool CLiftBot::ActMsg(CActMsg *msg) {
+	if (msg->_action == "ActivateLift") {
+		_enabled = true;
+		CViewItem *view = findView();
+		endTalking(this, true, view);
+		startTalking(this, 155, view);
+	} else if (msg->_action == "LiftArrive") {
+		CViewItem *view = findView();
+		startTalking(this, 156, view);
+	}
+
 	return true;
 }
 
diff --git a/engines/titanic/npcs/liftbot.h b/engines/titanic/npcs/liftbot.h
index 7550a8a..ccac53d 100644
--- a/engines/titanic/npcs/liftbot.h
+++ b/engines/titanic/npcs/liftbot.h
@@ -29,10 +29,21 @@
 namespace Titanic {
 
 class CLiftBot : public CTrueTalkNPC {
+	DECLARE_MESSAGE_MAP;
+	bool TextInputMsg(CTextInputMsg *msg);
+	bool EnterViewMsg(CEnterViewMsg *msg);
 	bool EnterRoomMsg(CEnterRoomMsg *msg);
+	bool TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg);
+	bool LeaveRoomMsg(CLeaveRoomMsg *msg);
+	bool TurnOff(CTurnOff *msg);
+	bool TurnOn(CTurnOn *msg);
+	bool LeaveViewMsg(CLeaveViewMsg *msg);
+	bool TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg);
+	bool NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg);
+	bool ActMsg(CActMsg *msg);
 private:
-	static int _v1;
-	static int _v2;
+	static bool _flag;
+	static bool _enabled;
 private:
 	int _field108;
 public:






More information about the Scummvm-git-logs mailing list