From 9150af19ea0aff09bb7e4450b0f5accf7b6c7b71 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 12 Mar 2024 23:13:54 +0300 Subject: [PATCH] audio settings --- src/engine.cpp | 2 +- src/files/settings_io.cpp | 9 +++++++++ src/settings.h | 12 ++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/engine.cpp b/src/engine.cpp index de1514c8..5fde1605 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -56,7 +56,7 @@ Engine::Engine(EngineSettings& settings, EnginePaths* paths) if (Window::initialize(settings.display)){ throw initialize_error("could not initialize window"); } - audio::initialize(true); + audio::initialize(settings.audio.enabled); audio::create_channel("regular"); audio::create_channel("music"); audio::create_channel("ambient"); diff --git a/src/files/settings_io.cpp b/src/files/settings_io.cpp index 1c488a82..92184d2d 100644 --- a/src/files/settings_io.cpp +++ b/src/files/settings_io.cpp @@ -13,6 +13,15 @@ toml::Wrapper* create_wrapper(EngineSettings& settings) { std::unique_ptr wrapper (new toml::Wrapper()); + + toml::Section& audio = wrapper->add("audio"); + audio.add("enabled", &settings.audio.enabled); + audio.add("volume-master", &settings.audio.volumeMaster); + audio.add("volume-regular", &settings.audio.volumeRegular); + audio.add("volume-ui", &settings.audio.volumeUI); + audio.add("volume-ambient", &settings.audio.volumeAmbient); + audio.add("volume-music", &settings.audio.volumeMusic); + toml::Section& display = wrapper->add("display"); display.add("fullscreen", &settings.display.fullscreen); display.add("width", &settings.display.width); diff --git a/src/settings.h b/src/settings.h index ad57b0ee..10893782 100644 --- a/src/settings.h +++ b/src/settings.h @@ -6,6 +6,17 @@ #include "constants.h" #include "typedefs.h" +struct AudioSettings { + /// @brief try to initialize AL backend + bool enabled = true; + + float volumeMaster = 1.0f; + float volumeRegular = 1.0f; + float volumeUI = 1.0f; + float volumeAmbient = 1.0f; + float volumeMusic = 1.0f; +}; + struct DisplaySettings { /// @brief Is window in full screen mode bool fullscreen = false; @@ -67,6 +78,7 @@ struct UiSettings { }; struct EngineSettings { + AudioSettings audio; DisplaySettings display; ChunksSettings chunks; CameraSettings camera;