aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game/head_smash_lever.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/game/head_smash_lever.cpp')
-rw-r--r--engines/titanic/game/head_smash_lever.cpp63
1 files changed, 58 insertions, 5 deletions
diff --git a/engines/titanic/game/head_smash_lever.cpp b/engines/titanic/game/head_smash_lever.cpp
index 5a2fe1f4c2..dabed26478 100644
--- a/engines/titanic/game/head_smash_lever.cpp
+++ b/engines/titanic/game/head_smash_lever.cpp
@@ -24,25 +24,78 @@
namespace Titanic {
+BEGIN_MESSAGE_MAP(CHeadSmashLever, CBackground)
+ ON_MESSAGE(MouseButtonDownMsg)
+ ON_MESSAGE(ActMsg)
+ ON_MESSAGE(FrameMsg)
+ ON_MESSAGE(LoadSuccessMsg)
+END_MESSAGE_MAP()
+
CHeadSmashLever::CHeadSmashLever() : CBackground(),
- _fieldE0(0), _fieldE4(0), _fieldE8(0) {}
+ _enabled(false), _fieldE4(false), _ticks(0) {}
void CHeadSmashLever::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_fieldE0, indent);
+ file->writeNumberLine(_enabled, indent);
file->writeNumberLine(_fieldE4, indent);
- file->writeNumberLine(_fieldE8, indent);
+ file->writeNumberLine(_ticks, indent);
CBackground::save(file, indent);
}
void CHeadSmashLever::load(SimpleFile *file) {
file->readNumber();
- _fieldE0 = file->readNumber();
+ _enabled = file->readNumber();
_fieldE4 = file->readNumber();
- _fieldE8 = file->readNumber();
+ _ticks = file->readNumber();
CBackground::load(file);
}
+bool CHeadSmashLever::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
+ if (_enabled) {
+ playMovie(0, 14, 0);
+ playSound("z#54.wav");
+ int soundHandle = playSound("z#45.wav");
+ queueSound("z#49.wav", soundHandle);
+ _ticks = getTicksCount();
+ _fieldE4 = true;
+ } else {
+ playMovie(0);
+ playSound("z#56.wav");
+ }
+
+ return true;
+}
+
+bool CHeadSmashLever::ActMsg(CActMsg *msg) {
+ if (msg->_action == "EnableObject")
+ _enabled = true;
+ else if (msg->_action == "DisableObject")
+ _enabled = false;
+
+ return true;
+}
+
+bool CHeadSmashLever::FrameMsg(CFrameMsg *msg) {
+ if (_fieldE4 && msg->_ticks > (_ticks + 750)) {
+ CActMsg actMsg1("CreatorsChamber.Node 1.S");
+ actMsg1.execute("MoveToCreators");
+ CActMsg actMsg2("PlayToEnd");
+ actMsg2.execute("SmashingStatue");
+
+ playSound("b#16.wav");
+ _fieldE4 = false;
+ }
+
+ return true;
+}
+
+bool CHeadSmashLever::LoadSuccessMsg(CLoadSuccessMsg *msg) {
+ if (_fieldE4)
+ _ticks = getTicksCount();
+
+ return true;
+}
+
} // End of namespace Titanic