Sound settings for Lure can be modified through the GMM
svn-id: r32855
This commit is contained in:
parent
30c52e215c
commit
c1ae3f7dd0
5 changed files with 37 additions and 15 deletions
|
@ -128,7 +128,7 @@ public:
|
||||||
|
|
||||||
/** Run the Global Main Menu Dialog
|
/** Run the Global Main Menu Dialog
|
||||||
*/
|
*/
|
||||||
void mainMenuDialog();
|
virtual void mainMenuDialog();
|
||||||
|
|
||||||
/** Sync the engine's sound settings with the config manager
|
/** Sync the engine's sound settings with the config manager
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -246,6 +246,10 @@ void LureEngine::GUIError(const char *msg, ...) {
|
||||||
Engine::GUIErrorMessage(buffer);
|
Engine::GUIErrorMessage(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LureEngine::syncSoundSettings() {
|
||||||
|
Sound.syncSounds(ConfMan.getInt("music_volume"), ConfMan.getInt("sfx_volume"));
|
||||||
|
}
|
||||||
|
|
||||||
Common::String *LureEngine::detectSave(int slotNumber) {
|
Common::String *LureEngine::detectSave(int slotNumber) {
|
||||||
Common::ReadStream *f = this->_saveFileMan->openForLoading(
|
Common::ReadStream *f = this->_saveFileMan->openForLoading(
|
||||||
generateSaveName(slotNumber));
|
generateSaveName(slotNumber));
|
||||||
|
|
|
@ -70,6 +70,7 @@ public:
|
||||||
virtual int init();
|
virtual int init();
|
||||||
virtual int go();
|
virtual int go();
|
||||||
virtual void pauseEngineIntern(bool pause);
|
virtual void pauseEngineIntern(bool pause);
|
||||||
|
virtual void syncSoundSettings();
|
||||||
|
|
||||||
Disk &disk() { return *_disk; }
|
Disk &disk() { return *_disk; }
|
||||||
|
|
||||||
|
|
|
@ -220,10 +220,12 @@ void SoundManager::addSound(uint8 soundIndex, bool tidyFlag) {
|
||||||
newEntry->channel = channelCtr;
|
newEntry->channel = channelCtr;
|
||||||
newEntry->numChannels = numChannels;
|
newEntry->numChannels = numChannels;
|
||||||
newEntry->flags = rec.flags;
|
newEntry->flags = rec.flags;
|
||||||
if (_isRoland)
|
|
||||||
newEntry->volume = rec.volume;
|
if (newEntry->soundNumber & 0x80)
|
||||||
else /* resource volumes do not seem to work well with our adlib emu */
|
newEntry->volume = ConfMan.getInt("music_volume");
|
||||||
newEntry->volume = 240; /* 255 causes clipping with adlib */
|
else
|
||||||
|
newEntry->volume = ConfMan.getInt("sfx_volume");
|
||||||
|
|
||||||
_activeSounds.push_back(SoundList::value_type(newEntry));
|
_activeSounds.push_back(SoundList::value_type(newEntry));
|
||||||
|
|
||||||
musicInterface_Play(rec.soundNumber, channelCtr, numChannels);
|
musicInterface_Play(rec.soundNumber, channelCtr, numChannels);
|
||||||
|
@ -280,6 +282,21 @@ uint8 SoundManager::descIndexOf(uint8 soundNumber) {
|
||||||
return 0xff; // Couldn't find entry
|
return 0xff; // Couldn't find entry
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Used to sync the volume for all channels with the Config Manager
|
||||||
|
//
|
||||||
|
void SoundManager::syncSounds(uint8 musicVol, uint8 sfxVol) {
|
||||||
|
MusicListIterator i;
|
||||||
|
|
||||||
|
musicInterface_TidySounds();
|
||||||
|
|
||||||
|
for (i = _playingSounds.begin(); i != _playingSounds.end(); ++i) {
|
||||||
|
if ((*i)->isMusic())
|
||||||
|
(*i)->setVolume(musicVol);
|
||||||
|
else
|
||||||
|
(*i)->setVolume(sfxVol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SoundDescResource *SoundManager::findSound(uint8 soundNumber) {
|
SoundDescResource *SoundManager::findSound(uint8 soundNumber) {
|
||||||
debugC(ERROR_BASIC, kLureDebugSounds, "SoundManager::findSound soundNumber=%d", soundNumber);
|
debugC(ERROR_BASIC, kLureDebugSounds, "SoundManager::findSound soundNumber=%d", soundNumber);
|
||||||
SoundListIterator i;
|
SoundListIterator i;
|
||||||
|
@ -402,9 +419,8 @@ void SoundManager::musicInterface_Play(uint8 soundNumber, uint8 channelNumber, u
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool isMusic = (soundNumber & 0x80) != 0;
|
bool isMusic = (soundNumber & 0x80) != 0;
|
||||||
uint8 volume = isMusic ? game.musicVolume() : game.sfxVolume();
|
|
||||||
|
if (!game.soundFlag())
|
||||||
if (!game.soundFlag() || (volume == 0))
|
|
||||||
// Don't play sounds if sound is turned off
|
// Don't play sounds if sound is turned off
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -576,7 +592,11 @@ MidiMusic::MidiMusic(MidiDriver *driver, ChannelEntry channels[NUM_CHANNELS],
|
||||||
/* 90 is power on default for midi compliant devices */
|
/* 90 is power on default for midi compliant devices */
|
||||||
_channels[_channelNumber + i].volume = 90;
|
_channels[_channelNumber + i].volume = 90;
|
||||||
}
|
}
|
||||||
setVolume(240); /* 255 causes clipping with mastervol 192 and adlib */
|
|
||||||
|
if (isMusic)
|
||||||
|
setVolume(ConfMan.getInt("music_volume"));
|
||||||
|
else
|
||||||
|
setVolume(ConfMan.getInt("sfx_volume"));
|
||||||
|
|
||||||
_passThrough = false;
|
_passThrough = false;
|
||||||
|
|
||||||
|
@ -634,14 +654,9 @@ void MidiMusic::setVolume(int volume) {
|
||||||
|
|
||||||
_volume = volume;
|
_volume = volume;
|
||||||
|
|
||||||
Game &game = Game::getReference();
|
|
||||||
volume *= _isMusic ? game.musicVolume() : game.sfxVolume();
|
|
||||||
|
|
||||||
for (int i = 0; i < _numChannels; ++i) {
|
for (int i = 0; i < _numChannels; ++i) {
|
||||||
if (_channels[_channelNumber + i].midiChannel != NULL)
|
if (_channels[_channelNumber + i].midiChannel != NULL)
|
||||||
_channels[_channelNumber + i].midiChannel->volume(
|
_channels[_channelNumber + i].midiChannel->volume(volume);
|
||||||
_channels[_channelNumber + i].volume *
|
|
||||||
volume / 65025);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ public:
|
||||||
uint8 channelNumber() { return _channelNumber; }
|
uint8 channelNumber() { return _channelNumber; }
|
||||||
uint8 soundNumber() { return _soundNumber; }
|
uint8 soundNumber() { return _soundNumber; }
|
||||||
bool isPlaying() { return _isPlaying; }
|
bool isPlaying() { return _isPlaying; }
|
||||||
|
bool isMusic() {return _isMusic; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class SoundManager: public Common::Singleton<SoundManager> {
|
class SoundManager: public Common::Singleton<SoundManager> {
|
||||||
|
@ -142,6 +143,7 @@ public:
|
||||||
void stopSound(uint8 soundIndex);
|
void stopSound(uint8 soundIndex);
|
||||||
void killSound(uint8 soundNumber);
|
void killSound(uint8 soundNumber);
|
||||||
void setVolume(uint8 soundNumber, uint8 volume);
|
void setVolume(uint8 soundNumber, uint8 volume);
|
||||||
|
void syncSounds(uint8 musicVol, uint8 sfxVol);
|
||||||
void tidySounds();
|
void tidySounds();
|
||||||
uint8 descIndexOf(uint8 soundNumber);
|
uint8 descIndexOf(uint8 soundNumber);
|
||||||
SoundDescResource *findSound(uint8 soundNumber);
|
SoundDescResource *findSound(uint8 soundNumber);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue