diff options
author | Paul Gilbert | 2016-08-22 19:25:36 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-08-22 19:25:36 -0400 |
commit | 65bc8cb83c01cc1e7e6c8c093b8f42080800718d (patch) | |
tree | 2b53d3e66b85ea775ab5131f2971764d93232183 /engines/titanic/game/hammer_dispensor.cpp | |
parent | f238ed18ec24debf7f1b8713abf1ce3ebbeeaec3 (diff) | |
download | scummvm-rg350-65bc8cb83c01cc1e7e6c8c093b8f42080800718d.tar.gz scummvm-rg350-65bc8cb83c01cc1e7e6c8c093b8f42080800718d.tar.bz2 scummvm-rg350-65bc8cb83c01cc1e7e6c8c093b8f42080800718d.zip |
TITANIC: Implemented more game classes
Diffstat (limited to 'engines/titanic/game/hammer_dispensor.cpp')
-rw-r--r-- | engines/titanic/game/hammer_dispensor.cpp | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/engines/titanic/game/hammer_dispensor.cpp b/engines/titanic/game/hammer_dispensor.cpp index 440fe1bc7b..bc6a3d5ad8 100644 --- a/engines/titanic/game/hammer_dispensor.cpp +++ b/engines/titanic/game/hammer_dispensor.cpp @@ -24,15 +24,22 @@ namespace Titanic { +BEGIN_MESSAGE_MAP(CHammerDispensor, CBackground) + ON_MESSAGE(ActMsg) + ON_MESSAGE(EnterViewMsg) + ON_MESSAGE(LeaveViewMsg) + ON_MESSAGE(MovieEndMsg) +END_MESSAGE_MAP() + CHammerDispensor::CHammerDispensor() : CBackground(), - _fieldE0(0), _fieldE4(0), _fieldE8(0) { + _fieldE0(false), _fieldE4(true), _state(0) { } void CHammerDispensor::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); file->writeNumberLine(_fieldE0, indent); file->writeNumberLine(_fieldE4, indent); - file->writeNumberLine(_fieldE8, indent); + file->writeNumberLine(_state, indent); CBackground::save(file, indent); } @@ -41,9 +48,57 @@ void CHammerDispensor::load(SimpleFile *file) { file->readNumber(); _fieldE0 = file->readNumber(); _fieldE4 = file->readNumber(); - _fieldE8 = file->readNumber(); + _state = file->readNumber(); CBackground::load(file); } +bool CHammerDispensor::ActMsg(CActMsg *msg) { + if (msg->_action == "DispenseHammer" && !_fieldE0) { + _state = 1; + playMovie(15, 31, MOVIE_NOTIFY_OBJECT); + _fieldE0 = true; + } + + if (msg->_action == "HammerTaken" && _fieldE0) + loadFrame(32); + + return true; +} + +bool CHammerDispensor::EnterViewMsg(CEnterViewMsg *msg) { + if (_fieldE4) { + playMovie(7, 14, 0); + _fieldE4 = false; + } + + return true; +} + +bool CHammerDispensor::LeaveViewMsg(CLeaveViewMsg *msg) { + _fieldE4 = true; + _fieldE0 = 0; + _state = 2; + + if (_fieldE0) + playMovie(32, 50, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + else + playMovie(0, 7, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + return true; +} + +bool CHammerDispensor::MovieEndMsg(CMovieEndMsg *msg) { + if (_state == 1) { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 1; + statusMsg.execute("HammerClip"); + } else if (_state == 2) { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 2; + statusMsg.execute("HammerClip"); + } + + return true; +} + } // End of namespace Titanic |