[Scummvm-cvs-logs] scummvm master -> 41dab514e1f7dc4bbf9ff9bab21c5dc5cad7812f

dreammaster dreammaster at scummvm.org
Thu Aug 18 01:43:33 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:
41dab514e1 TITANIC: Implemented CCaptainsWheel class


Commit: 41dab514e1f7dc4bbf9ff9bab21c5dc5cad7812f
    https://github.com/scummvm/scummvm/commit/41dab514e1f7dc4bbf9ff9bab21c5dc5cad7812f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-08-17T19:43:24-04:00

Commit Message:
TITANIC: Implemented CCaptainsWheel class

Changed paths:
    engines/titanic/core/game_object.cpp
    engines/titanic/core/game_object.h
    engines/titanic/game/captains_wheel.cpp
    engines/titanic/game/captains_wheel.h



diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp
index ee378dd..a61dd17 100644
--- a/engines/titanic/core/game_object.cpp
+++ b/engines/titanic/core/game_object.cpp
@@ -1608,10 +1608,9 @@ void CGameObject::starFn1(int v) {
 		starControl->fn1(v);
 }
 
-void CGameObject::starFn2() {
+bool CGameObject::starFn2() {
 	CStarControl *starControl = getStarControl();
-	if (starControl)
-		starControl->fn4();
+	return starControl ? starControl->fn4() : false;
 }
 
 /*------------------------------------------------------------------------*/
diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h
index 722b607..0749bde 100644
--- a/engines/titanic/core/game_object.h
+++ b/engines/titanic/core/game_object.h
@@ -884,7 +884,7 @@ public:
 	CStarControl *getStarControl() const;
 
 	void starFn1(int v);
-	void starFn2();
+	bool starFn2();
 
 	/*--- CTrueTalkManager Methods ---*/
 
diff --git a/engines/titanic/game/captains_wheel.cpp b/engines/titanic/game/captains_wheel.cpp
index c84c919..79908b5 100644
--- a/engines/titanic/game/captains_wheel.cpp
+++ b/engines/titanic/game/captains_wheel.cpp
@@ -24,6 +24,15 @@
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CCaptainsWheel, CBackground)
+	ON_MESSAGE(MouseButtonDownMsg)
+	ON_MESSAGE(LeaveViewMsg)
+	ON_MESSAGE(ActMsg)
+	ON_MESSAGE(TurnOff)
+	ON_MESSAGE(TurnOn)
+	ON_MESSAGE(MovieEndMsg)
+END_MESSAGE_MAP()
+
 CCaptainsWheel::CCaptainsWheel() : CBackground(),
 	_fieldE0(0), _fieldE4(0), _fieldE8(0), _fieldEC(0),
 	_fieldF0(0), _fieldF4(0) {
@@ -53,4 +62,148 @@ void CCaptainsWheel::load(SimpleFile *file) {
 	CBackground::load(file);
 }
 
+bool CCaptainsWheel::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
+	if (_fieldE0) {
+		_fieldE0 = false;
+		CTurnOff offMsg;
+		offMsg.execute(this);
+		playMovie(162, 168, 0);
+	} else {
+		playMovie(0, 8, MOVIE_NOTIFY_OBJECT);
+	}
+
+	return true;
+}
+
+bool CCaptainsWheel::LeaveViewMsg(CLeaveViewMsg *msg) {
+	if (_fieldE0) {
+		_fieldE0 = false;
+		CTurnOff offMsg;
+		offMsg.execute(this);
+		playMovie(162, 168, MOVIE_GAMESTATE);
+	}
+
+	return true;
+}
+
+bool CCaptainsWheel::ActMsg(CActMsg *msg) {
+	if (msg->_action == "Spin") {
+		if (_fieldE0) {
+			CTurnOn onMsg;
+			onMsg.execute("RatchetySound");
+			playMovie(8, 142, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+		}
+	} else if (msg->_action == "Honk") {
+		if (_fieldE0) {
+			playMovie(150, 160, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+		}
+	} else if (msg->_action == "Go") {
+		if (!_fieldE0) {
+			inc54();
+			_fieldE0 = false;
+			_fieldE4 = 1;
+
+			CTurnOff offMsg;
+			offMsg.execute(this);
+			playMovie(162, 168, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+		}
+	} else if (msg->_action == "Cruise") {
+		if (_fieldE0) {
+			inc54();
+			_fieldE0 = false;
+			_fieldE4 = 2;
+
+			CTurnOff offMsg;
+			offMsg.execute(this);
+			playMovie(162, 168, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+		}
+	} else if (msg->_action == "SetDestin") {
+		playSound("a#44.wav");
+		CSetVolumeMsg volumeMsg;
+		volumeMsg._volume = 25;
+		volumeMsg.execute("EngineSounds");
+		CTurnOn onMsg;
+		onMsg.execute("EngineSounds");
+		_fieldF0 = 1;
+	} else if (msg->_action == "ClearDestin") {
+		_fieldF0 = 0;
+	}
+
+	return true;
+}
+
+bool CCaptainsWheel::TurnOff(CTurnOff *msg) {
+	CSignalObject signalMsg;
+	signalMsg._numValue = 0;
+
+	static const char *const NAMES[8] = {
+		"WheelSpin", "SeagullHorn", "WheelStopButt", "StopHotSpot",
+		"WheelCruiseButt", "CruiseHotSpot", "WheelGoButt","GoHotSpot"
+	};
+	for (int idx = 0; idx < 8; ++idx)
+		signalMsg.execute(NAMES[idx]);
+
+	return true;
+}
+
+bool CCaptainsWheel::TurnOn(CTurnOn *msg) {
+	CSignalObject signalMsg;
+	signalMsg._numValue = 1;
+	signalMsg.execute("WheelSpin");
+	signalMsg.execute("SeagullHorn");
+
+	if (_fieldE0) {
+		signalMsg.execute("WheelStopButt");
+		signalMsg.execute("StopHotSpot");
+	}
+
+	if (_fieldEC) {
+		signalMsg.execute("WheelCruiseButt");
+		signalMsg.execute("CruiseHotSpot");
+	}
+
+	if (_fieldF0) {
+		signalMsg.execute("WheelGoButt");
+		signalMsg.execute("GoHotSpot");
+	}
+
+	return true;
+}
+
+bool CCaptainsWheel::MovieEndMsg(CMovieEndMsg *msg) {
+	if (msg->_endFrame == 8) {
+		_fieldE0 = true;
+		CTurnOn onMsg;
+		onMsg.execute(this);
+	}
+
+	if (msg->_endFrame == 142) {
+		CTurnOff offMsg;
+		offMsg.execute("RatchetySound");
+	}
+
+	if (msg->_endFrame == 168) {
+		switch (_fieldE4) {
+		case 1: {
+			CActMsg actMsg(starFn2() ? "GoEnd" : "Go");
+			actMsg.execute("GoSequence");
+			break;
+		}
+
+		case 2: {
+			CActMsg actMsg("Cruise");
+			actMsg.execute("CruiseSequence");
+			break;
+		}
+
+		default:
+			break;
+		}
+
+		_fieldE4 = 0;
+	}
+
+	return true;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/game/captains_wheel.h b/engines/titanic/game/captains_wheel.h
index 549dcbe..3aca45c 100644
--- a/engines/titanic/game/captains_wheel.h
+++ b/engines/titanic/game/captains_wheel.h
@@ -28,6 +28,13 @@
 namespace Titanic {
 
 class CCaptainsWheel : public CBackground {
+	DECLARE_MESSAGE_MAP;
+	bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
+	bool LeaveViewMsg(CLeaveViewMsg *msg);
+	bool ActMsg(CActMsg *msg);
+	bool TurnOff(CTurnOff *msg);
+	bool TurnOn(CTurnOn *msg);
+	bool MovieEndMsg(CMovieEndMsg *msg);
 public:
 	int _fieldE0;
 	int _fieldE4;






More information about the Scummvm-git-logs mailing list