aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game/broken_pellerator.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2016-08-16 21:04:19 -0400
committerPaul Gilbert2016-08-16 21:04:19 -0400
commit4c7985c3c9cb1e8023c6d1be5b5ed09fbfba2011 (patch)
tree92c4b2f298aaa4a4783de1395e13ae5890cc0477 /engines/titanic/game/broken_pellerator.cpp
parent80fd795b80d9e9f5f6ca444b844d867f2172d74e (diff)
downloadscummvm-rg350-4c7985c3c9cb1e8023c6d1be5b5ed09fbfba2011.tar.gz
scummvm-rg350-4c7985c3c9cb1e8023c6d1be5b5ed09fbfba2011.tar.bz2
scummvm-rg350-4c7985c3c9cb1e8023c6d1be5b5ed09fbfba2011.zip
TITANIC: Implemented various pellerator classes
Diffstat (limited to 'engines/titanic/game/broken_pellerator.cpp')
-rw-r--r--engines/titanic/game/broken_pellerator.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/engines/titanic/game/broken_pellerator.cpp b/engines/titanic/game/broken_pellerator.cpp
index d3b204b1e5..8fb7244b7e 100644
--- a/engines/titanic/game/broken_pellerator.cpp
+++ b/engines/titanic/game/broken_pellerator.cpp
@@ -21,9 +21,17 @@
*/
#include "titanic/game/broken_pellerator.h"
+#include "titanic/core/view_item.h"
namespace Titanic {
+BEGIN_MESSAGE_MAP(CBrokenPellerator, CBrokenPellBase)
+ ON_MESSAGE(MouseButtonDownMsg)
+ ON_MESSAGE(LeaveViewMsg)
+ ON_MESSAGE(ActMsg)
+ ON_MESSAGE(MovieEndMsg)
+END_MESSAGE_MAP()
+
void CBrokenPellerator::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeQuotedLine(_string2, indent);
@@ -44,4 +52,103 @@ void CBrokenPellerator::load(SimpleFile *file) {
CBrokenPellBase::load(file);
}
+bool CBrokenPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
+ if (_v1) {
+ changeView(_v2 ? _string5 : _string4);
+ } else {
+ if (_v2) {
+ playMovie(28, 43, 0);
+ } else {
+ playMovie(0, 14, MOVIE_NOTIFY_OBJECT);
+ }
+
+ _v1 = true;
+ }
+
+ return true;
+}
+
+bool CBrokenPellerator::LeaveViewMsg(CLeaveViewMsg *msg) {
+ CString name = msg->_newView->getNodeViewName();
+ if (name == "Node 3.S" || name == "Node 3.N") {
+ _v1 = false;
+ loadFrame(0);
+ }
+
+ return true;
+}
+
+bool CBrokenPellerator::ActMsg(CActMsg *msg) {
+ if (msg->_action == "PlayerGetsHose") {
+ _v2 = 1;
+ loadFrame(43);
+
+ CStatusChangeMsg statusMsg;
+ statusMsg.execute("PickupHose");
+ } else {
+ _fieldE0 = 0;
+ bool closeFlag = msg->_action == "Close";
+ if (msg->_action == "CloseLeft") {
+ closeFlag = true;
+ _fieldE0 = 1;
+ }
+ if (msg->_action == "CloseRight") {
+ closeFlag = true;
+ _fieldE0 = 2;
+ }
+
+ if (closeFlag) {
+ if (_v1) {
+ _v1 = false;
+ if (_v2)
+ playMovie(43, 57, MOVIE_NOTIFY_OBJECT);
+ else
+ playMovie(14, 28, MOVIE_NOTIFY_OBJECT);
+ } else {
+ switch (_fieldE0) {
+ case 1:
+ changeView(_string2);
+ break;
+ case 2:
+ changeView(_string3);
+ break;
+ default:
+ break;
+ }
+
+ _fieldE0 = 0;
+ }
+ }
+ }
+
+ return true;
+}
+
+bool CBrokenPellerator::MovieEndMsg(CMovieEndMsg *msg) {
+ if (msg->_endFrame == 14) {
+ CStatusChangeMsg statusMsg;
+ statusMsg._newStatus = 1;
+ statusMsg.execute("PickUpHose");
+ }
+
+ if (msg->_endFrame == 28) {
+ CStatusChangeMsg statusMsg;
+ statusMsg._newStatus = 0;
+ statusMsg.execute("PickUpHose");
+ }
+
+ switch (_fieldE0) {
+ case 1:
+ changeView(_string2);
+ break;
+ case 2:
+ changeView(_string3);
+ break;
+ default:
+ break;
+ }
+
+ return true;
+}
+
} // End of namespace Titanic