aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game/up_lighter.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2016-08-28 14:39:59 -0400
committerPaul Gilbert2016-08-28 14:39:59 -0400
commit4933b59e8e039ae346f650c044e5fe0ba6310ead (patch)
tree805e33ea6fa6109e42d8f8b267ed2b6e5c2a00e2 /engines/titanic/game/up_lighter.cpp
parent1760fb3e0d25704685e9b44f0792536da962082d (diff)
downloadscummvm-rg350-4933b59e8e039ae346f650c044e5fe0ba6310ead.tar.gz
scummvm-rg350-4933b59e8e039ae346f650c044e5fe0ba6310ead.tar.bz2
scummvm-rg350-4933b59e8e039ae346f650c044e5fe0ba6310ead.zip
TITANIC: Implemented remaining game classes
Diffstat (limited to 'engines/titanic/game/up_lighter.cpp')
-rw-r--r--engines/titanic/game/up_lighter.cpp67
1 files changed, 66 insertions, 1 deletions
diff --git a/engines/titanic/game/up_lighter.cpp b/engines/titanic/game/up_lighter.cpp
index f03b8f37a0..d133a7e9df 100644
--- a/engines/titanic/game/up_lighter.cpp
+++ b/engines/titanic/game/up_lighter.cpp
@@ -21,9 +21,21 @@
*/
#include "titanic/game/up_lighter.h"
+#include "titanic/core/project_item.h"
+#include "titanic/npcs/parrot.h"
namespace Titanic {
+BEGIN_MESSAGE_MAP(CUpLighter, CDropTarget)
+ ON_MESSAGE(MovieEndMsg)
+ ON_MESSAGE(PumpingMsg)
+ ON_MESSAGE(MouseButtonDownMsg)
+ ON_MESSAGE(EnterRoomMsg)
+ ON_MESSAGE(ChangeSeasonMsg)
+ ON_MESSAGE(TimerMsg)
+ ON_MESSAGE(LeaveRoomMsg)
+END_MESSAGE_MAP()
+
CUpLighter::CUpLighter() : CDropTarget(), _field118(0),
_field11C(0), _field120(0), _field124(0) {
}
@@ -48,8 +60,61 @@ void CUpLighter::load(SimpleFile *file) {
CDropTarget::load(file);
}
+bool CUpLighter::MovieEndMsg(CMovieEndMsg *msg) {
+ if (_field118) {
+ playSound("z#47.wav");
+ _field124 = true;
+
+ CVisibleMsg visibleMsg(true);
+ visibleMsg.execute("NoseHolder");
+ CDropZoneLostObjectMsg lostMsg(nullptr);
+ lostMsg.execute(this);
+ _clipName.clear();
+ _itemMatchName = "Nothing";
+ _field118 = 0;
+ }
+
+ return true;
+}
+
+bool CUpLighter::PumpingMsg(CPumpingMsg *msg) {
+ _field118 = msg->_value;
+ _clipName = (_field118 && !_field124) ? "WholeSequence" : "HoseToNose";
+ return true;
+}
+
+bool CUpLighter::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
+ CTrueTalkTriggerActionMsg triggerMsg(280245, 0, 0);
+ triggerMsg.execute(getRoot(), CParrot::_type,
+ MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_CLASS_DEF | MSGFLAG_SCAN);
+ return true;
+}
+
bool CUpLighter::EnterRoomMsg(CEnterRoomMsg *msg) {
- warning("CUpLighter::handleEvent");
+ _field11C = true;
+ addTimer(5000 + getRandomNumber(15000), 0);
+ return true;
+}
+
+bool CUpLighter::ChangeSeasonMsg(CChangeSeasonMsg *msg) {
+ _field120 = msg->_season == "Spring";
+ if (_field120)
+ addTimer(5000 + getRandomNumber(15000), 0);
+ return true;
+}
+
+bool CUpLighter::TimerMsg(CTimerMsg *msg) {
+ if (_field120 && _field11C & !_field118) {
+ CActMsg actMsg("Sneeze");
+ actMsg.execute(findRoom()->findByName("NoseHolder"));
+ addTimer(1000 + getRandomNumber(19000), 0);
+ }
+
+ return true;
+}
+
+bool CUpLighter::LeaveRoomMsg(CLeaveRoomMsg *msg) {
+ _field11C = false;
return true;
}