diff options
author | Paul Gilbert | 2016-08-16 21:04:19 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-08-16 21:04:19 -0400 |
commit | 4c7985c3c9cb1e8023c6d1be5b5ed09fbfba2011 (patch) | |
tree | 92c4b2f298aaa4a4783de1395e13ae5890cc0477 /engines/titanic/game/broken_pellerator_froz.cpp | |
parent | 80fd795b80d9e9f5f6ca444b844d867f2172d74e (diff) | |
download | scummvm-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_froz.cpp')
-rw-r--r-- | engines/titanic/game/broken_pellerator_froz.cpp | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/engines/titanic/game/broken_pellerator_froz.cpp b/engines/titanic/game/broken_pellerator_froz.cpp index 4b21ea93d0..690ab76820 100644 --- a/engines/titanic/game/broken_pellerator_froz.cpp +++ b/engines/titanic/game/broken_pellerator_froz.cpp @@ -21,9 +21,17 @@ */ #include "titanic/game/broken_pellerator_froz.h" +#include "titanic/core/view_item.h" namespace Titanic { +BEGIN_MESSAGE_MAP(CBrokenPelleratorFroz, CBrokenPellBase) + ON_MESSAGE(MouseButtonDownMsg) + ON_MESSAGE(LeaveViewMsg) + ON_MESSAGE(ActMsg) + ON_MESSAGE(MovieEndMsg) +END_MESSAGE_MAP() + void CBrokenPelleratorFroz::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); file->writeQuotedLine(_string2, indent); @@ -44,4 +52,99 @@ void CBrokenPelleratorFroz::load(SimpleFile *file) { CBrokenPellBase::load(file); } +bool CBrokenPelleratorFroz::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { + if (_v1) { + changeView(_v2 ? _string5 : _string4); + } else { + _v1 = true; + if (_v2) { + playMovie(0, 13, 0); + } else { + playMovie(43, 55, MOVIE_NOTIFY_OBJECT); + } + } + + return true; +} + +bool CBrokenPelleratorFroz::LeaveViewMsg(CLeaveViewMsg *msg) { + CString name = msg->_newView->getNodeViewName(); + + if (name == "Node 3.S" || name == "Node 3.E") { + _v1 = false; + loadFrame(0); + } + + return true; +} + +bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) { + if (msg->_action == "PlayerGetsHose") { + _v2 = 1; + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 0; + statusMsg.execute("FPickUpHose"); + } 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(29, 42, MOVIE_NOTIFY_OBJECT); + else + playMovie(72, 84, MOVIE_NOTIFY_OBJECT); + } else { + switch (_fieldE0) { + case 1: + changeView(_string2); + break; + case 2: + changeView(_string3); + break; + default: + break; + } + + _fieldE0 = 0; + } + } + } + + return true; +} + +bool CBrokenPelleratorFroz::MovieEndMsg(CMovieEndMsg *msg) { + if (msg->_endFrame == 55) { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 1; + statusMsg.execute("FPickUpHose"); + } + + if (msg->_endFrame == 84) { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 0; + statusMsg.execute("FPickUpHose"); + } + + if (_fieldE0 == 1) { + changeView(_string2); + _fieldE0 = 0; + } else if (_fieldE0 == 2) { + changeView(_string3); + _fieldE0 = 0; + } + + return true; +} + } // End of namespace Titanic |