diff --git a/include/ui/game_screen.hpp b/include/ui/game_screen.hpp index bf8ac8b5..2ac4197b 100644 --- a/include/ui/game_screen.hpp +++ b/include/ui/game_screen.hpp @@ -16,6 +16,7 @@ namespace wowee { namespace pipeline { class AssetManager; } +namespace rendering { class Renderer; } namespace ui { /** @@ -40,6 +41,7 @@ public: void saveSettings(); void loadSettings(); + void applyAudioVolumes(rendering::Renderer* renderer); private: // Chat state diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index cef4ae06..73163f2c 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -495,38 +495,7 @@ void GameScreen::render(game::GameHandler& gameHandler) { if (!volumeSettingsApplied_) { auto* renderer = core::Application::getInstance().getRenderer(); if (renderer && renderer->getUiSoundManager()) { - float masterScale = soundMuted_ ? 0.0f : static_cast(pendingMasterVolume) / 100.0f; - audio::AudioEngine::instance().setMasterVolume(masterScale); - if (auto* music = renderer->getMusicManager()) { - music->setVolume(pendingMusicVolume); - } - if (auto* ambient = renderer->getAmbientSoundManager()) { - ambient->setVolumeScale(pendingAmbientVolume / 100.0f); - } - if (auto* ui = renderer->getUiSoundManager()) { - ui->setVolumeScale(pendingUiVolume / 100.0f); - } - if (auto* combat = renderer->getCombatSoundManager()) { - combat->setVolumeScale(pendingCombatVolume / 100.0f); - } - if (auto* spell = renderer->getSpellSoundManager()) { - spell->setVolumeScale(pendingSpellVolume / 100.0f); - } - if (auto* movement = renderer->getMovementSoundManager()) { - movement->setVolumeScale(pendingMovementVolume / 100.0f); - } - if (auto* footstep = renderer->getFootstepManager()) { - footstep->setVolumeScale(pendingFootstepVolume / 100.0f); - } - if (auto* npcVoice = renderer->getNpcVoiceManager()) { - npcVoice->setVolumeScale(pendingNpcVoiceVolume / 100.0f); - } - if (auto* mount = renderer->getMountSoundManager()) { - mount->setVolumeScale(pendingMountVolume / 100.0f); - } - if (auto* activity = renderer->getActivitySoundManager()) { - activity->setVolumeScale(pendingActivityVolume / 100.0f); - } + applyAudioVolumes(renderer); volumeSettingsApplied_ = true; } } @@ -18772,39 +18741,7 @@ void GameScreen::renderSettingsWindow() { // Helper lambda to apply audio settings auto applyAudioSettings = [&]() { - if (!renderer) return; - float masterScale = soundMuted_ ? 0.0f : static_cast(pendingMasterVolume) / 100.0f; - audio::AudioEngine::instance().setMasterVolume(masterScale); - if (auto* music = renderer->getMusicManager()) { - music->setVolume(pendingMusicVolume); - } - if (auto* ambient = renderer->getAmbientSoundManager()) { - ambient->setVolumeScale(pendingAmbientVolume / 100.0f); - } - if (auto* ui = renderer->getUiSoundManager()) { - ui->setVolumeScale(pendingUiVolume / 100.0f); - } - if (auto* combat = renderer->getCombatSoundManager()) { - combat->setVolumeScale(pendingCombatVolume / 100.0f); - } - if (auto* spell = renderer->getSpellSoundManager()) { - spell->setVolumeScale(pendingSpellVolume / 100.0f); - } - if (auto* movement = renderer->getMovementSoundManager()) { - movement->setVolumeScale(pendingMovementVolume / 100.0f); - } - if (auto* footstep = renderer->getFootstepManager()) { - footstep->setVolumeScale(pendingFootstepVolume / 100.0f); - } - if (auto* npcVoice = renderer->getNpcVoiceManager()) { - npcVoice->setVolumeScale(pendingNpcVoiceVolume / 100.0f); - } - if (auto* mount = renderer->getMountSoundManager()) { - mount->setVolumeScale(pendingMountVolume / 100.0f); - } - if (auto* activity = renderer->getActivitySoundManager()) { - activity->setVolumeScale(pendingActivityVolume / 100.0f); - } + applyAudioVolumes(renderer); saveSettings(); }; @@ -21150,6 +21087,32 @@ void GameScreen::renderChatBubbles(game::GameHandler& gameHandler) { } } +void GameScreen::applyAudioVolumes(rendering::Renderer* renderer) { + if (!renderer) return; + float masterScale = soundMuted_ ? 0.0f : static_cast(pendingMasterVolume) / 100.0f; + audio::AudioEngine::instance().setMasterVolume(masterScale); + if (auto* music = renderer->getMusicManager()) + music->setVolume(pendingMusicVolume); + if (auto* ambient = renderer->getAmbientSoundManager()) + ambient->setVolumeScale(pendingAmbientVolume / 100.0f); + if (auto* ui = renderer->getUiSoundManager()) + ui->setVolumeScale(pendingUiVolume / 100.0f); + if (auto* combat = renderer->getCombatSoundManager()) + combat->setVolumeScale(pendingCombatVolume / 100.0f); + if (auto* spell = renderer->getSpellSoundManager()) + spell->setVolumeScale(pendingSpellVolume / 100.0f); + if (auto* movement = renderer->getMovementSoundManager()) + movement->setVolumeScale(pendingMovementVolume / 100.0f); + if (auto* footstep = renderer->getFootstepManager()) + footstep->setVolumeScale(pendingFootstepVolume / 100.0f); + if (auto* npcVoice = renderer->getNpcVoiceManager()) + npcVoice->setVolumeScale(pendingNpcVoiceVolume / 100.0f); + if (auto* mount = renderer->getMountSoundManager()) + mount->setVolumeScale(pendingMountVolume / 100.0f); + if (auto* activity = renderer->getActivitySoundManager()) + activity->setVolumeScale(pendingActivityVolume / 100.0f); +} + void GameScreen::saveSettings() { std::string path = getSettingsPath(); std::filesystem::path dir = std::filesystem::path(path).parent_path();