[Scummvm-git-logs] scummvm master -> 9e0cd0c1ade0ca2450c2b015360a5cfeb5443bee

dreammaster paulfgilbert at gmail.com
Mon Sep 7 19:28:34 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9e0cd0c1ad NUVIE: Hook up Nuvie audio controls to ScummVM's


Commit: 9e0cd0c1ade0ca2450c2b015360a5cfeb5443bee
    https://github.com/scummvm/scummvm/commit/9e0cd0c1ade0ca2450c2b015360a5cfeb5443bee
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-07T12:28:22-07:00

Commit Message:
NUVIE: Hook up Nuvie audio controls to ScummVM's

Changed paths:
    engines/ultima/nuvie/menus/audio_dialog.cpp
    engines/ultima/nuvie/nuvie.cpp
    engines/ultima/nuvie/nuvie.h
    engines/ultima/nuvie/sound/song_adplug.cpp
    engines/ultima/nuvie/sound/sound_manager.cpp


diff --git a/engines/ultima/nuvie/menus/audio_dialog.cpp b/engines/ultima/nuvie/menus/audio_dialog.cpp
index 1cb0b81e0f..2d03448328 100644
--- a/engines/ultima/nuvie/menus/audio_dialog.cpp
+++ b/engines/ultima/nuvie/menus/audio_dialog.cpp
@@ -37,6 +37,7 @@
 #include "ultima/nuvie/core/party.h"
 #include "ultima/nuvie/core/converse.h"
 #include "ultima/nuvie/misc/u6_misc.h"
+#include "ultima/nuvie/nuvie.h"
 
 namespace Ultima {
 namespace Nuvie {
@@ -235,7 +236,7 @@ GUI_status AudioDialog::callback(uint16 msg, GUI_CallBack *caller, void *data) {
 			sm->set_music_volume(musicVol);
 			if (sm->get_m_pCurrentSong() != NULL)
 				sm->get_m_pCurrentSong()->SetVolume(musicVol);
-			config->set("config/audio/music_volume", musicVol);
+			config->set("config/music_volume", musicVol);
 		}
 
 		int sfx_selection = sfxVol_button->GetSelection();
@@ -243,12 +244,12 @@ GUI_status AudioDialog::callback(uint16 msg, GUI_CallBack *caller, void *data) {
 			uint8 sfxVol = sfx_selection * 25.5;
 			sm->set_sfx_volume(sfxVol);
 // probably need to update sfx volume if we have background sfx implemented
-			config->set("config/audio/sfx_volume", sfxVol);
+			config->set("config/sfx_volume", sfxVol);
 		}
 
 		if ((bool)music_button->GetSelection() != sm->is_music_enabled())
 			sm->set_music_enabled(music_button->GetSelection());
-		config->set("config/audio/enable_music", music_button->GetSelection() ? "yes" : "no");
+		config->set("config/music_mute", !music_button->GetSelection());
 		if ((bool)sfx_button->GetSelection() != sm->is_sfx_enabled())
 			sm->set_sfx_enabled(sfx_button->GetSelection());
 
@@ -265,14 +266,14 @@ GUI_status AudioDialog::callback(uint16 msg, GUI_CallBack *caller, void *data) {
 		sm->stop_music_on_group_change = group_b->GetSelection();
 		config->set("config/audio/stop_music_on_group_change", group_b->GetSelection() ? "yes" : "no");
 
-		config->set("config/audio/enable_sfx", sfx_button->GetSelection() ? "yes" : "no");
+		config->set("config/sfx_mute", !sfx_button->GetSelection());
 		if ((bool)audio_button->GetSelection() != sm->is_audio_enabled())
 			sm->set_audio_enabled(audio_button->GetSelection());
-		config->set("config/audio/enabled", audio_button->GetSelection() ? "yes" : "no");
+		config->set("config/mute", !audio_button->GetSelection());
 
 		if (speech_b) {
 			bool speech_enabled = speech_b->GetSelection() ? true : false;
-			config->set("config/ultima6/enable_speech", speech_b->GetSelection() ? "yes" : "no");
+			config->set("config/speech_mute", !speech_b->GetSelection());
 			if (speech_enabled != sm->is_speech_enabled())
 				sm->set_speech_enabled(speech_enabled);
 		}
diff --git a/engines/ultima/nuvie/nuvie.cpp b/engines/ultima/nuvie/nuvie.cpp
index bbaa5e9fed..9f15147af0 100644
--- a/engines/ultima/nuvie/nuvie.cpp
+++ b/engines/ultima/nuvie/nuvie.cpp
@@ -49,7 +49,7 @@ NuvieEngine *g_engine;
 
 NuvieEngine::NuvieEngine(OSystem *syst, const Ultima::UltimaGameDescription *gameDesc) :
 		Ultima::Shared::UltimaEngine(syst, gameDesc),  _config(nullptr), _savegame(nullptr),
-		_screen(nullptr), _script(nullptr), _game(nullptr) {
+		_screen(nullptr), _script(nullptr), _game(nullptr), _soundManager(nullptr) {
 	g_engine = this;
 }
 
@@ -144,12 +144,12 @@ bool NuvieEngine::initialize() {
 	if (checkDataDir() == false)
 		return false;
 
-	SoundManager *sound_manager = new SoundManager(_mixer);
-	sound_manager->nuvieStartup(_config);
+	_soundManager = new SoundManager(_mixer);
+	_soundManager->nuvieStartup(_config);
 
-	_game = new Game(_config, events, _screen, gui, gameType, sound_manager);
+	_game = new Game(_config, events, _screen, gui, gameType, _soundManager);
 
-	_script = new Script(_config, gui, sound_manager, gameType);
+	_script = new Script(_config, gui, _soundManager, gameType);
 	if (_script->init() == false)
 		return false;
 
@@ -230,6 +230,26 @@ bool NuvieEngine::checkDataDir() {
 	return true;
 }
 
+void NuvieEngine::syncSoundSettings() {
+	Ultima::Shared::UltimaEngine::syncSoundSettings();
+	if (!_soundManager)
+		return;
+
+	_soundManager->set_audio_enabled(
+		!ConfMan.hasKey("mute") || !ConfMan.getBool("mute"));
+	_soundManager->set_sfx_enabled(
+		!ConfMan.hasKey("sfx_mute") || !ConfMan.getBool("sfx_mute"));
+	_soundManager->set_music_enabled(
+		!ConfMan.hasKey("music_mute") || !ConfMan.getBool("music_mute"));
+	_soundManager->set_speech_enabled(
+		!ConfMan.hasKey("speech_mute") || !ConfMan.getBool("speech_mute"));
+
+	_soundManager->set_sfx_volume(ConfMan.hasKey("sfx_volume") ?
+		ConfMan.getInt("sfx_volume") : 255);
+	_soundManager->set_music_volume(ConfMan.hasKey("music_volume") ?
+		ConfMan.getInt("music_volume") : 255);
+}
+
 bool NuvieEngine::canLoadGameStateCurrently(bool isAutosave) {
 	if (_game == nullptr || !_game->isLoaded())
 		return false;
diff --git a/engines/ultima/nuvie/nuvie.h b/engines/ultima/nuvie/nuvie.h
index d99432a147..3614074c49 100644
--- a/engines/ultima/nuvie/nuvie.h
+++ b/engines/ultima/nuvie/nuvie.h
@@ -38,6 +38,7 @@ class Game;
 class SaveGame;
 class Screen;
 class Script;
+class SoundManager;
 
 class NuvieEngine : public Ultima::Shared::UltimaEngine {
 private:
@@ -46,6 +47,8 @@ private:
 	Script *_script;
 	Game *_game;
 	SaveGame *_savegame;
+
+	SoundManager *_soundManager;
 private:
 	void initConfig();
 	void assignGameConfigValues(uint8 game_type);
@@ -71,6 +74,11 @@ public:
 	 */
 	Common::Error run() override;
 
+	/**
+	 * Synchronize sound settings
+	 */
+	void syncSoundSettings() override;
+
 	/**
 	 * Indicates whether a game state can be loaded.
 	 * @param isAutosave	Flags whether it's an autosave check
@@ -113,6 +121,13 @@ public:
 	 * Quick save or load a savegame
 	 */
 	bool quickSave(int saveSlot, bool isLoad);
+
+	/**
+	 * Return a reference to the sound manager
+	 */
+	SoundManager *getSoundManager() const {
+		return _soundManager;
+	}
 };
 
 extern NuvieEngine *g_engine;
diff --git a/engines/ultima/nuvie/sound/song_adplug.cpp b/engines/ultima/nuvie/sound/song_adplug.cpp
index 43a37f7e2c..3a3439efa4 100644
--- a/engines/ultima/nuvie/sound/song_adplug.cpp
+++ b/engines/ultima/nuvie/sound/song_adplug.cpp
@@ -27,6 +27,7 @@
 #include "ultima/nuvie/sound/adplug/u6m.h"
 #include "ultima/nuvie/sound/song_adplug.h"
 #include "ultima/nuvie/sound/sound_manager.h"
+#include "ultima/nuvie/nuvie.h"
 
 namespace Ultima {
 namespace Nuvie {
@@ -39,7 +40,6 @@ SongAdPlug::SongAdPlug(Audio::Mixer *m, CEmuopl *o) {
 }
 
 SongAdPlug::~SongAdPlug() {
-//delete player;
 }
 
 bool SongAdPlug::Init(const char *filename, uint16 song_num) {
@@ -54,14 +54,18 @@ bool SongAdPlug::Init(const char *filename, uint16 song_num) {
 }
 
 bool SongAdPlug::Play(bool looping) {
+	// Just in case song is already playing, stop it
+	Stop();
+
+	// Tell the mixer to play the stream
 	if (stream) {
-		mixer->playStream(Audio::Mixer::kMusicSoundType, &handle, stream, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO);
+		byte volume = g_engine->getSoundManager()->get_music_volume();
+		mixer->playStream(Audio::Mixer::kPlainSoundType, &handle, stream, -1, volume, 0, DisposeAfterUse::NO);
 	}
 	return true;
 }
 
 bool SongAdPlug::Stop() {
-
 	mixer->stopHandle(handle);
 	stream->rewind();
 	return true;
@@ -72,17 +76,5 @@ bool SongAdPlug::SetVolume(uint8 volume) {
 	return true;
 }
 
-/*
-bool SongAdPlug::Pause() {
-    if (!Mix_PlayingMusic()) return false;
-    return true;
-}
-
-bool SongAdPlug::Resume() {
-    if (Mix_PlayingMusic()) return false;
-    return true;
-}
-*/
-
 } // End of namespace Nuvie
 } // End of namespace Ultima
diff --git a/engines/ultima/nuvie/sound/sound_manager.cpp b/engines/ultima/nuvie/sound/sound_manager.cpp
index ee1639e344..417bc8cdc1 100644
--- a/engines/ultima/nuvie/sound/sound_manager.cpp
+++ b/engines/ultima/nuvie/sound/sound_manager.cpp
@@ -111,9 +111,12 @@ bool SoundManager::nuvieStartup(Configuration *config) {
 	Std::string music_cfg_file; //full path and filename to music.cfg
 	Std::string sound_dir;
 	Std::string sfx_style;
+	bool val;
 
 	m_Config = config;
-	m_Config->value("config/audio/enabled", audio_enabled, true);
+
+	m_Config->value("config/mute", val, false);
+	audio_enabled = !val;
 	m_Config->value("config/GameType", game_type);
 	m_Config->value("config/audio/stop_music_on_group_change", stop_music_on_group_change, true);
 
@@ -127,15 +130,17 @@ bool SoundManager::nuvieStartup(Configuration *config) {
 	      return false;
 	     }*/
 
-	m_Config->value("config/audio/enable_music", music_enabled, true);
-	m_Config->value("config/audio/enable_sfx", sfx_enabled, true);
+	m_Config->value("config/music_mute", val, false);
+	music_enabled = !val;
+	m_Config->value("config/sfx_mute", val, false);
+	sfx_enabled = !val;
 
 	int volume;
 
-	m_Config->value("config/audio/music_volume", volume, Audio::Mixer::kMaxChannelVolume);
+	m_Config->value("config/music_volume", volume, Audio::Mixer::kMaxChannelVolume);
 	music_volume = clamp(volume, 0, 255);
 
-	m_Config->value("config/audio/sfx_volume", volume, Audio::Mixer::kMaxChannelVolume);
+	m_Config->value("config/sfx_volume", volume, Audio::Mixer::kMaxChannelVolume);
 	sfx_volume = clamp(volume, 0, 255);
 
 	config_key = config_get_game_key(config);
@@ -149,12 +154,13 @@ bool SoundManager::nuvieStartup(Configuration *config) {
 	config_key = config_get_game_key(config);
 	config_key.append("/sounddir");
 	config->value(config_key, sound_dir, "");
+
 	if (game_type == NUVIE_GAME_U6) { // FM-Towns speech
-		config_key = config_get_game_key(config);
-		config_key.append("/enable_speech");
-		config->value(config_key, speech_enabled, true);
-	} else
+		config->value("config/speech_mute", val, false);
+		speech_enabled = !val;
+	} else {
 		speech_enabled = false;
+	}
 
 	if (!initAudio()) {
 		return false;




More information about the Scummvm-git-logs mailing list