From 5b8fdfe366b9acb2fd1d80cd0839e2af61238f08 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 8 Aug 2016 23:19:42 -0400 Subject: TITANIC: Implemented more sound classes --- engines/titanic/sound/bird_song.cpp | 21 +++++++++++++++-- engines/titanic/sound/bird_song.h | 7 ++++-- engines/titanic/sound/dome_from_top_of_well.cpp | 8 +++++++ engines/titanic/sound/dome_from_top_of_well.h | 1 + .../sound/enter_view_toggles_other_music.cpp | 22 +++++++++++++++--- .../titanic/sound/enter_view_toggles_other_music.h | 4 +++- .../titanic/sound/trigger_auto_music_player.cpp | 26 ++++++++++++++++++++-- engines/titanic/sound/trigger_auto_music_player.h | 4 +++- 8 files changed, 82 insertions(+), 11 deletions(-) (limited to 'engines/titanic/sound') diff --git a/engines/titanic/sound/bird_song.cpp b/engines/titanic/sound/bird_song.cpp index 7f7d0ad5ce..53a25e2dbe 100644 --- a/engines/titanic/sound/bird_song.cpp +++ b/engines/titanic/sound/bird_song.cpp @@ -24,16 +24,33 @@ namespace Titanic { +BEGIN_MESSAGE_MAP(CBirdSong, CAutoSoundPlayer) + ON_MESSAGE(TurnOn) + ON_MESSAGE(SignalObject) +END_MESSAGE_MAP() + void CBirdSong::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_value, indent); + file->writeNumberLine(_flag, indent); CRoomAutoSoundPlayer::save(file, indent); } void CBirdSong::load(SimpleFile *file) { file->readNumber(); - _value = file->readNumber(); + _flag = file->readNumber(); CRoomAutoSoundPlayer::load(file); } +bool CBirdSong::TurnOn(CTurnOn *msg) { + if (!_flag) + CAutoSoundPlayer::TurnOn(msg); + return true; +} + +bool CBirdSong::SignalObject(CSignalObject *msg) { + _flag = true; + CAutoSoundPlayer::SignalObject(msg); + return true; +} + } // End of namespace Titanic diff --git a/engines/titanic/sound/bird_song.h b/engines/titanic/sound/bird_song.h index 35758e5b77..52af94b180 100644 --- a/engines/titanic/sound/bird_song.h +++ b/engines/titanic/sound/bird_song.h @@ -28,11 +28,14 @@ namespace Titanic { class CBirdSong : public CRoomAutoSoundPlayer { + DECLARE_MESSAGE_MAP; + bool TurnOn(CTurnOn *msg); + bool SignalObject(CSignalObject *msg); public: - int _value; + bool _flag; public: CLASSDEF; - CBirdSong() : CRoomAutoSoundPlayer(), _value(0) {} + CBirdSong() : CRoomAutoSoundPlayer(), _flag(false) {} /** * Save the data for the class to file diff --git a/engines/titanic/sound/dome_from_top_of_well.cpp b/engines/titanic/sound/dome_from_top_of_well.cpp index 3721b9f3b7..789d7fa4cb 100644 --- a/engines/titanic/sound/dome_from_top_of_well.cpp +++ b/engines/titanic/sound/dome_from_top_of_well.cpp @@ -26,6 +26,14 @@ namespace Titanic { EMPTY_MESSAGE_MAP(CDomeFromTopOfWell, CViewAutoSoundPlayer); +CDomeFromTopOfWell::CDomeFromTopOfWell() : CViewAutoSoundPlayer() { + _filename = "z#227.wav"; + _volume = 25; + _repeated = true; + _stopSeconds = 1; + _startSeconds = 1; +} + void CDomeFromTopOfWell::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); CViewAutoSoundPlayer::save(file, indent); diff --git a/engines/titanic/sound/dome_from_top_of_well.h b/engines/titanic/sound/dome_from_top_of_well.h index e3d2877379..001f66a1a8 100644 --- a/engines/titanic/sound/dome_from_top_of_well.h +++ b/engines/titanic/sound/dome_from_top_of_well.h @@ -31,6 +31,7 @@ class CDomeFromTopOfWell : public CViewAutoSoundPlayer { DECLARE_MESSAGE_MAP; public: CLASSDEF; + CDomeFromTopOfWell(); /** * Save the data for the class to file diff --git a/engines/titanic/sound/enter_view_toggles_other_music.cpp b/engines/titanic/sound/enter_view_toggles_other_music.cpp index 0b149993a3..2f0091a0a3 100644 --- a/engines/titanic/sound/enter_view_toggles_other_music.cpp +++ b/engines/titanic/sound/enter_view_toggles_other_music.cpp @@ -24,21 +24,37 @@ namespace Titanic { -CEnterViewTogglesOtherMusic::CEnterViewTogglesOtherMusic() : CTriggerAutoMusicPlayer(), _fieldC8(0) { +BEGIN_MESSAGE_MAP(CEnterViewTogglesOtherMusic, CTriggerAutoMusicPlayer) + ON_MESSAGE(EnterViewMsg) +END_MESSAGE_MAP() + +CEnterViewTogglesOtherMusic::CEnterViewTogglesOtherMusic() : + CTriggerAutoMusicPlayer(), _value(2) { } void CEnterViewTogglesOtherMusic::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_fieldC8, indent); + file->writeNumberLine(_value, indent); CTriggerAutoMusicPlayer::save(file, indent); } void CEnterViewTogglesOtherMusic::load(SimpleFile *file) { file->readNumber(); - _fieldC8 = file->readNumber(); + _value = file->readNumber(); CTriggerAutoMusicPlayer::load(file); } +bool CEnterViewTogglesOtherMusic::EnterViewMsg(CEnterViewMsg *msg) { + CViewItem *view = findView(); + if (view == msg->_newView) { + CTriggerAutoMusicPlayerMsg triggerMsg; + triggerMsg._value = _value; + triggerMsg.execute(this); + } + + return true; +} + } // End of namespace Titanic diff --git a/engines/titanic/sound/enter_view_toggles_other_music.h b/engines/titanic/sound/enter_view_toggles_other_music.h index 6bbeea4890..a91b1e1933 100644 --- a/engines/titanic/sound/enter_view_toggles_other_music.h +++ b/engines/titanic/sound/enter_view_toggles_other_music.h @@ -28,8 +28,10 @@ namespace Titanic { class CEnterViewTogglesOtherMusic : public CTriggerAutoMusicPlayer { + DECLARE_MESSAGE_MAP; + bool EnterViewMsg(CEnterViewMsg *msg); protected: - int _fieldC8; + int _value; public: CLASSDEF; CEnterViewTogglesOtherMusic(); diff --git a/engines/titanic/sound/trigger_auto_music_player.cpp b/engines/titanic/sound/trigger_auto_music_player.cpp index 21050e0877..a332570aba 100644 --- a/engines/titanic/sound/trigger_auto_music_player.cpp +++ b/engines/titanic/sound/trigger_auto_music_player.cpp @@ -21,19 +21,41 @@ */ #include "titanic/sound/trigger_auto_music_player.h" +#include "titanic/sound/auto_music_player.h" +#include "titanic/core/room_item.h" namespace Titanic { +BEGIN_MESSAGE_MAP(CTriggerAutoMusicPlayer, CGameObject) + ON_MESSAGE(TriggerAutoMusicPlayerMsg) +END_MESSAGE_MAP() + void CTriggerAutoMusicPlayer::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeQuotedLine(_fieldBC, indent); + file->writeQuotedLine(_roomName, indent); CGameObject::save(file, indent); } void CTriggerAutoMusicPlayer::load(SimpleFile *file) { file->readNumber(); - _fieldBC = file->readString(); + _roomName = file->readString(); CGameObject::load(file); } +bool CTriggerAutoMusicPlayer::TriggerAutoMusicPlayerMsg(CTriggerAutoMusicPlayerMsg *msg) { + CRoomItem *room1 = msg->_value == 1 ? locateRoom(_roomName) : findRoom(); + CRoomItem *room2 = msg->_value == 2 ? locateRoom(_roomName) : findRoom(); + + CChangeMusicMsg changeMsg; + changeMsg._flags = 1; + changeMsg.execute(room1, CAutoMusicPlayer::_type, + MSGFLAG_CLASS_DEF | MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_SCAN); + + changeMsg._flags = 2; + changeMsg.execute(room2, CAutoMusicPlayer::_type, + MSGFLAG_CLASS_DEF | MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_SCAN); + + return true; +} + } // End of namespace Titanic diff --git a/engines/titanic/sound/trigger_auto_music_player.h b/engines/titanic/sound/trigger_auto_music_player.h index 537e780db6..45631e08fc 100644 --- a/engines/titanic/sound/trigger_auto_music_player.h +++ b/engines/titanic/sound/trigger_auto_music_player.h @@ -28,8 +28,10 @@ namespace Titanic { class CTriggerAutoMusicPlayer : public CGameObject { + DECLARE_MESSAGE_MAP; + bool TriggerAutoMusicPlayerMsg(CTriggerAutoMusicPlayerMsg *msg); protected: - CString _fieldBC; + CString _roomName; public: CLASSDEF; -- cgit v1.2.3