From 1f0b9cb68d02d956ec745bef16f0dbddaa743bec Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 25 Aug 2016 20:46:33 -0400 Subject: TITANIC: Implemented more game classes --- engines/titanic/game/missiveomat_button.cpp | 30 +++++++++++++++++++++++++++-- engines/titanic/game/missiveomat_button.h | 8 ++++++-- engines/titanic/game/movie_tester.cpp | 26 +++++++++++++++++++++---- engines/titanic/game/movie_tester.h | 6 ++++-- 4 files changed, 60 insertions(+), 10 deletions(-) (limited to 'engines/titanic/game') diff --git a/engines/titanic/game/missiveomat_button.cpp b/engines/titanic/game/missiveomat_button.cpp index d5ae75dbc2..b7ad7f8f6f 100644 --- a/engines/titanic/game/missiveomat_button.cpp +++ b/engines/titanic/game/missiveomat_button.cpp @@ -21,21 +21,47 @@ */ #include "titanic/game/missiveomat_button.h" +#include "titanic/core/room_item.h" namespace Titanic { +BEGIN_MESSAGE_MAP(CMissiveOMatButton, CEditControl) + ON_MESSAGE(MouseButtonDownMsg) + ON_MESSAGE(VisibleMsg) + ON_MESSAGE(MouseDoubleClickMsg) +END_MESSAGE_MAP() + void CMissiveOMatButton::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_fieldFC, indent); + file->writeNumberLine(_buttonId, indent); CEditControl::save(file, indent); } void CMissiveOMatButton::load(SimpleFile *file) { file->readNumber(); - _fieldFC = file->readNumber(); + _buttonId = file->readNumber(); CEditControl::load(file); } +bool CMissiveOMatButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { + CMissiveOMatActionMsg actionMsg; + actionMsg._action = _buttonId; + actionMsg.execute(findRoom()->findByName("MissiveOMat")); + return true; +} + +bool CMissiveOMatButton::VisibleMsg(CVisibleMsg *msg) { + setVisible(msg->_visible); + return true; +} + +bool CMissiveOMatButton::MouseDoubleClickMsg(CMouseDoubleClickMsg *msg) { + CMissiveOMatActionMsg actionMsg; + actionMsg._action = _buttonId; + actionMsg.execute(findRoom()->findByName("MissiveOMat")); + return true; +} + } // End of namespace Titanic diff --git a/engines/titanic/game/missiveomat_button.h b/engines/titanic/game/missiveomat_button.h index d36f5bd958..6dbfd4cd56 100644 --- a/engines/titanic/game/missiveomat_button.h +++ b/engines/titanic/game/missiveomat_button.h @@ -28,11 +28,15 @@ namespace Titanic { class CMissiveOMatButton : public CEditControl { + DECLARE_MESSAGE_MAP; + bool MouseButtonDownMsg(CMouseButtonDownMsg *msg); + bool VisibleMsg(CVisibleMsg *msg); + bool MouseDoubleClickMsg(CMouseDoubleClickMsg *msg); public: - int _fieldFC; + int _buttonId; public: CLASSDEF; - CMissiveOMatButton() : CEditControl(), _fieldFC(2) {} + CMissiveOMatButton() : CEditControl(), _buttonId(2) {} /** * Save the data for the class to file diff --git a/engines/titanic/game/movie_tester.cpp b/engines/titanic/game/movie_tester.cpp index 1b266d9c7e..bbd66a9bce 100644 --- a/engines/titanic/game/movie_tester.cpp +++ b/engines/titanic/game/movie_tester.cpp @@ -24,18 +24,36 @@ namespace Titanic { +BEGIN_MESSAGE_MAP(CMovieTester, CGameObject) + ON_MESSAGE(MouseButtonDownMsg) +END_MESSAGE_MAP() + void CMovieTester::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_value1, indent); - file->writeNumberLine(_value2, indent); + file->writeNumberLine(_movieNumFrames, indent); + file->writeNumberLine(_movieFrameNum, indent); CGameObject::save(file, indent); } void CMovieTester::load(SimpleFile *file) { file->readNumber(); - _value1 = file->readNumber(); - _value2 = file->readNumber(); + _movieNumFrames = file->readNumber(); + _movieFrameNum = file->readNumber(); CGameObject::load(file); } +bool CMovieTester::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { + if (msg->_buttons == MB_RIGHT) { + if (--_movieFrameNum < 0) { + _movieFrameNum = _movieNumFrames - 1; + } + } else { + if (++_movieFrameNum >= _movieNumFrames) + _movieFrameNum = 0; + } + + loadFrame(_movieFrameNum); + return true; +} + } // End of namespace Titanic diff --git a/engines/titanic/game/movie_tester.h b/engines/titanic/game/movie_tester.h index de2ef2cc5e..17a7d489d8 100644 --- a/engines/titanic/game/movie_tester.h +++ b/engines/titanic/game/movie_tester.h @@ -28,11 +28,13 @@ namespace Titanic { class CMovieTester : public CGameObject { + DECLARE_MESSAGE_MAP; + bool MouseButtonDownMsg(CMouseButtonDownMsg *msg); public: - int _value1, _value2; + int _movieNumFrames, _movieFrameNum; public: CLASSDEF; - CMovieTester() : CGameObject(), _value1(0), _value2(0) {} + CMovieTester() : CGameObject(), _movieNumFrames(0), _movieFrameNum(0) {} /** * Save the data for the class to file -- cgit v1.2.3