diff options
| author | Paul Gilbert | 2016-08-31 20:20:10 -0400 | 
|---|---|---|
| committer | Paul Gilbert | 2016-08-31 20:20:10 -0400 | 
| commit | dd4fee37e35fab40076b6e9070a9a0ab987750a9 (patch) | |
| tree | 4f8c6d7b5ddf047686385223a4eca95ee601b72d | |
| parent | 15ebf3a12aae014f5b6e3cd0125eab4e421aa46b (diff) | |
| download | scummvm-rg350-dd4fee37e35fab40076b6e9070a9a0ab987750a9.tar.gz scummvm-rg350-dd4fee37e35fab40076b6e9070a9a0ab987750a9.tar.bz2 scummvm-rg350-dd4fee37e35fab40076b6e9070a9a0ab987750a9.zip | |
TITANIC: Add support for specifying a sound is music or SFX
Apart from the CMusicRoom music, the game doesn't differentiate between
music and sound effects. This adds an optional _soundType field to the
CProximity class, so I can manually specify which is which
| -rw-r--r-- | engines/titanic/core/game_object.cpp | 4 | ||||
| -rw-r--r-- | engines/titanic/core/game_object.h | 5 | ||||
| -rw-r--r-- | engines/titanic/game/bar_bell.cpp | 2 | ||||
| -rw-r--r-- | engines/titanic/sound/proximity.cpp | 2 | ||||
| -rw-r--r-- | engines/titanic/sound/proximity.h | 2 | ||||
| -rw-r--r-- | engines/titanic/sound/sound.cpp | 3 | 
6 files changed, 14 insertions, 4 deletions
| diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp index 2c7b7db998..4b88f07478 100644 --- a/engines/titanic/core/game_object.cpp +++ b/engines/titanic/core/game_object.cpp @@ -438,7 +438,8 @@ bool CGameObject::isSoundActive(int handle) const {  	return false;  } -void CGameObject::playGlobalSound(const CString &resName, int mode, bool initialMute, bool repeated, int handleIndex) { +void CGameObject::playGlobalSound(const CString &resName, int mode, bool initialMute, bool repeated, +		int handleIndex, Audio::Mixer::SoundType soundType) {  	if (handleIndex < 0 || handleIndex > 3)  		return;  	CGameManager *gameManager = getGameManager(); @@ -463,6 +464,7 @@ void CGameObject::playGlobalSound(const CString &resName, int mode, bool initial  	CProximity prox;  	prox._channelVolume = volume;  	prox._repeated = repeated; +	prox._soundType = soundType;  	switch (handleIndex) {  	case 0: diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h index 182d165e89..d72fd94ac4 100644 --- a/engines/titanic/core/game_object.h +++ b/engines/titanic/core/game_object.h @@ -23,6 +23,7 @@  #ifndef TITANIC_GAME_OBJECT_H  #define TITANIC_GAME_OBJECT_H +#include "audio/mixer.h"  #include "common/stream.h"  #include "titanic/support/mouse_cursor.h"  #include "titanic/support/credit_text.h" @@ -234,8 +235,10 @@ protected:  	 * @param initialMute	If set, sound transitions in from mute over 2 seconds  	 * @param repeated		Flag for repeating sounds  	 * @param handleIndex	Slot 0 to 3 in the shared sound handle list to store the sound's handle +	 * @param soundType		Specifies whether the sound is a sound effect or music  	 */ -	void playGlobalSound(const CString &resName, int mode, bool initialMute, bool repeated, int handleIndex); +	void playGlobalSound(const CString &resName, int mode, bool initialMute, bool repeated, +		int handleIndex, Audio::Mixer::SoundType soundType = Audio::Mixer::kMusicSoundType);  	/**  	 * Stops a sound saved in the global sound handle list diff --git a/engines/titanic/game/bar_bell.cpp b/engines/titanic/game/bar_bell.cpp index 207644a00e..5f17dffda1 100644 --- a/engines/titanic/game/bar_bell.cpp +++ b/engines/titanic/game/bar_bell.cpp @@ -116,7 +116,7 @@ bool CBarBell::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {  	}  	++_fieldBC; -	return 2; +	return true;  }  bool CBarBell::ActMsg(CActMsg *msg) { diff --git a/engines/titanic/sound/proximity.cpp b/engines/titanic/sound/proximity.cpp index 7f4e6784f2..992e76a872 100644 --- a/engines/titanic/sound/proximity.cpp +++ b/engines/titanic/sound/proximity.cpp @@ -31,7 +31,7 @@ CProximity::CProximity() : _field4(0), _channelVolume(100), _fieldC(0),  		_range(0.5), _elevation(0), _posX(0.0), _posY(0.0), _posZ(0.0),  		_hasVelocity(false), _velocityX(0), _velocityY(0), _velocityZ(0),  		_field54(0), _field58(0), _field5C(0), _freeSoundFlag(false), _endTalkerFn(nullptr), -		_talker(nullptr), _field6C(0) { +		_talker(nullptr), _field6C(0), _soundType(Audio::Mixer::kPlainSoundType) {  }  } // End of namespace Titanic diff --git a/engines/titanic/sound/proximity.h b/engines/titanic/sound/proximity.h index b728f22c26..cedb4bd94a 100644 --- a/engines/titanic/sound/proximity.h +++ b/engines/titanic/sound/proximity.h @@ -23,6 +23,7 @@  #ifndef TITANIC_PROXIMITY_H  #define TITANIC_PROXIMITY_H +#include "audio/mixer.h"  #include "common/scummsys.h"  namespace Titanic { @@ -62,6 +63,7 @@ public:  	CEndTalkerFn _endTalkerFn;  	TTtalker *_talker;  	int _field6C; +	Audio::Mixer::SoundType _soundType;  public:  	CProximity();  }; diff --git a/engines/titanic/sound/sound.cpp b/engines/titanic/sound/sound.cpp index 045f5aad91..30772e780c 100644 --- a/engines/titanic/sound/sound.cpp +++ b/engines/titanic/sound/sound.cpp @@ -158,6 +158,9 @@ int CSound::playSound(const CString &name, CProximity &prox) {  		return -1;  	prox._field6C = waveFile->fn1(); +	if (prox._soundType != Audio::Mixer::kPlainSoundType) +		waveFile->_soundType = prox._soundType; +  	activateSound(waveFile, prox._freeSoundFlag);  	return _soundManager.playSound(*waveFile, prox); | 
