aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game
diff options
context:
space:
mode:
authorPaul Gilbert2016-08-25 20:46:33 -0400
committerPaul Gilbert2016-08-25 20:46:33 -0400
commit1f0b9cb68d02d956ec745bef16f0dbddaa743bec (patch)
tree1caba7007cc529982bd5932923d33b5cf8569853 /engines/titanic/game
parentdb179c11bb7d8f82183e39e2778491ead55d875e (diff)
downloadscummvm-rg350-1f0b9cb68d02d956ec745bef16f0dbddaa743bec.tar.gz
scummvm-rg350-1f0b9cb68d02d956ec745bef16f0dbddaa743bec.tar.bz2
scummvm-rg350-1f0b9cb68d02d956ec745bef16f0dbddaa743bec.zip
TITANIC: Implemented more game classes
Diffstat (limited to 'engines/titanic/game')
-rw-r--r--engines/titanic/game/missiveomat_button.cpp30
-rw-r--r--engines/titanic/game/missiveomat_button.h8
-rw-r--r--engines/titanic/game/movie_tester.cpp26
-rw-r--r--engines/titanic/game/movie_tester.h6
4 files changed, 60 insertions, 10 deletions
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