mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Added mute buttons for all of the audio sliders in settings
This commit is contained in:
parent
e35e533d88
commit
6605c2657f
BIN
assets/voxygen/element/ui/generic/buttons/mute_btn.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/ui/generic/buttons/mute_btn.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/ui/generic/buttons/mute_btn_hover.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/ui/generic/buttons/mute_btn_hover.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/ui/generic/buttons/muted_btn.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/ui/generic/buttons/muted_btn.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/ui/generic/buttons/muted_btn_hover.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/ui/generic/buttons/muted_btn_hover.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -556,6 +556,13 @@ image_ids! {
|
||||
button_hover: "voxygen.element.ui.generic.buttons.button_hover",
|
||||
button_press: "voxygen.element.ui.generic.buttons.button_press",
|
||||
|
||||
// Mute Buttons
|
||||
button_mute: "voxygen.element.ui.generic.buttons.mute_btn",
|
||||
button_mute_hover: "voxygen.element.ui.generic.buttons.mute_btn_hover",
|
||||
button_muted: "voxygen.element.ui.generic.buttons.muted_btn",
|
||||
button_muted_hover: "voxygen.element.ui.generic.buttons.muted_btn_hover",
|
||||
|
||||
|
||||
// Enemy Healthbar
|
||||
enemy_health: "voxygen.element.ui.generic.frames.enemybar",
|
||||
enemy_health_bg: "voxygen.element.ui.generic.frames.enemybar_bg",
|
||||
|
@ -3,7 +3,7 @@ use super::{RESET_BUTTONS_HEIGHT, RESET_BUTTONS_WIDTH};
|
||||
use crate::{
|
||||
hud::{img_ids::Imgs, TEXT_COLOR},
|
||||
session::settings_change::{Audio as AudioChange, Audio::*},
|
||||
ui::{fonts::Fonts, ImageSlider},
|
||||
ui::{fonts::Fonts, ImageSlider, ToggleButton},
|
||||
GlobalState,
|
||||
};
|
||||
use conrod_core::{
|
||||
@ -22,18 +22,23 @@ widget_ids! {
|
||||
master_volume_text,
|
||||
master_volume_slider,
|
||||
master_volume_number,
|
||||
master_volume_muted,
|
||||
inactive_master_volume_text,
|
||||
inactive_master_volume_slider,
|
||||
inactive_master_volume_number,
|
||||
inactive_master_volume_muted,
|
||||
music_volume_text,
|
||||
music_volume_slider,
|
||||
music_volume_number,
|
||||
music_volume_muted,
|
||||
sfx_volume_text,
|
||||
sfx_volume_slider,
|
||||
sfx_volume_number,
|
||||
sfx_volume_muted,
|
||||
ambience_volume_text,
|
||||
ambience_volume_slider,
|
||||
ambience_volume_number,
|
||||
ambience_volume_muted,
|
||||
music_spacing_text,
|
||||
music_spacing_slider,
|
||||
music_spacing_number,
|
||||
@ -116,14 +121,14 @@ impl<'a> Widget for Sound<'a> {
|
||||
.set(state.ids.master_volume_text, ui);
|
||||
// Master Volume Slider
|
||||
if let Some(new_val) = ImageSlider::continuous(
|
||||
self.global_state.settings.audio.master_volume,
|
||||
self.global_state.settings.audio.master_volume.volume,
|
||||
0.0,
|
||||
1.0,
|
||||
self.imgs.slider_indicator,
|
||||
self.imgs.slider,
|
||||
)
|
||||
.w_h(104.0, 22.0)
|
||||
.down_from(state.ids.master_volume_text, 10.0)
|
||||
.right_from(state.ids.master_volume_muted, 8.0)
|
||||
.track_breadth(12.0)
|
||||
.slider_length(10.0)
|
||||
.pad_track((5.0, 5.0))
|
||||
@ -134,13 +139,26 @@ impl<'a> Widget for Sound<'a> {
|
||||
// Master Volume Number
|
||||
Text::new(&format!(
|
||||
"{:2.0}%",
|
||||
self.global_state.settings.audio.master_volume * 100.0
|
||||
self.global_state.settings.audio.master_volume.volume * 100.0
|
||||
))
|
||||
.right_from(state.ids.master_volume_slider, 8.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.master_volume_number, ui);
|
||||
// Master Volume Muted Indicator
|
||||
let master_muted = ToggleButton::new(
|
||||
self.global_state.settings.audio.master_volume.muted,
|
||||
self.imgs.button_mute,
|
||||
self.imgs.button_muted,
|
||||
)
|
||||
.w_h(24.0, 25.0)
|
||||
.down_from(state.ids.master_volume_text, 10.0)
|
||||
.press_images(self.imgs.button_mute_hover, self.imgs.button_muted_hover)
|
||||
.set(state.ids.master_volume_muted, ui);
|
||||
if master_muted != self.global_state.settings.audio.master_volume.muted {
|
||||
events.push(MuteMasterVolume(master_muted));
|
||||
}
|
||||
|
||||
// Master Volume (inactive window)
|
||||
Text::new(
|
||||
@ -148,21 +166,25 @@ impl<'a> Widget for Sound<'a> {
|
||||
.localized_strings
|
||||
.get_msg("hud-settings-inactive_master_volume_perc"),
|
||||
)
|
||||
.down_from(state.ids.master_volume_slider, 10.0)
|
||||
.down_from(state.ids.master_volume_muted, 10.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.inactive_master_volume_text, ui);
|
||||
// Master Volume (inactive window) Slider
|
||||
if let Some(new_val) = ImageSlider::continuous(
|
||||
self.global_state.settings.audio.inactive_master_volume_perc,
|
||||
self.global_state
|
||||
.settings
|
||||
.audio
|
||||
.inactive_master_volume_perc
|
||||
.volume,
|
||||
0.0,
|
||||
1.0,
|
||||
self.imgs.slider_indicator,
|
||||
self.imgs.slider,
|
||||
)
|
||||
.w_h(104.0, 22.0)
|
||||
.down_from(state.ids.inactive_master_volume_text, 10.0)
|
||||
.right_from(state.ids.inactive_master_volume_muted, 8.0)
|
||||
.track_breadth(12.0)
|
||||
.slider_length(10.0)
|
||||
.pad_track((5.0, 5.0))
|
||||
@ -173,31 +195,60 @@ impl<'a> Widget for Sound<'a> {
|
||||
// Master Volume (inactive window) Number
|
||||
Text::new(&format!(
|
||||
"{:2.0}%",
|
||||
self.global_state.settings.audio.inactive_master_volume_perc * 100.0
|
||||
self.global_state
|
||||
.settings
|
||||
.audio
|
||||
.inactive_master_volume_perc
|
||||
.volume
|
||||
* 100.0
|
||||
))
|
||||
.right_from(state.ids.inactive_master_volume_slider, 8.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.inactive_master_volume_number, ui);
|
||||
// Master Volume (inactive window) Muted Indicator
|
||||
let inactive_master_muted = ToggleButton::new(
|
||||
self.global_state
|
||||
.settings
|
||||
.audio
|
||||
.inactive_master_volume_perc
|
||||
.muted,
|
||||
self.imgs.button_mute,
|
||||
self.imgs.button_muted,
|
||||
)
|
||||
.w_h(24.0, 25.0)
|
||||
.down_from(state.ids.inactive_master_volume_text, 10.0)
|
||||
.press_images(self.imgs.button_mute_hover, self.imgs.button_muted_hover)
|
||||
.set(state.ids.inactive_master_volume_muted, ui);
|
||||
if inactive_master_muted
|
||||
!= self
|
||||
.global_state
|
||||
.settings
|
||||
.audio
|
||||
.inactive_master_volume_perc
|
||||
.muted
|
||||
{
|
||||
events.push(MuteInactiveMasterVolume(inactive_master_muted));
|
||||
}
|
||||
|
||||
// Music Volume
|
||||
Text::new(&self.localized_strings.get_msg("hud-settings-music_volume"))
|
||||
.down_from(state.ids.inactive_master_volume_slider, 10.0)
|
||||
.down_from(state.ids.inactive_master_volume_muted, 10.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.music_volume_text, ui);
|
||||
// Music Volume Slider
|
||||
if let Some(new_val) = ImageSlider::continuous(
|
||||
self.global_state.settings.audio.music_volume,
|
||||
self.global_state.settings.audio.music_volume.volume,
|
||||
0.0,
|
||||
1.0,
|
||||
self.imgs.slider_indicator,
|
||||
self.imgs.slider,
|
||||
)
|
||||
.w_h(104.0, 22.0)
|
||||
.down_from(state.ids.music_volume_text, 10.0)
|
||||
.right_from(state.ids.music_volume_muted, 8.0)
|
||||
.track_breadth(12.0)
|
||||
.slider_length(10.0)
|
||||
.pad_track((5.0, 5.0))
|
||||
@ -208,13 +259,26 @@ impl<'a> Widget for Sound<'a> {
|
||||
// Music Volume Number
|
||||
Text::new(&format!(
|
||||
"{:2.0}%",
|
||||
self.global_state.settings.audio.music_volume * 100.0
|
||||
self.global_state.settings.audio.music_volume.volume * 100.0
|
||||
))
|
||||
.right_from(state.ids.music_volume_slider, 8.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.music_volume_number, ui);
|
||||
// Music Muted Indicator
|
||||
let music_muted = ToggleButton::new(
|
||||
self.global_state.settings.audio.music_volume.muted,
|
||||
self.imgs.button_mute,
|
||||
self.imgs.button_muted,
|
||||
)
|
||||
.w_h(24.0, 25.0)
|
||||
.down_from(state.ids.music_volume_text, 10.0)
|
||||
.press_images(self.imgs.button_mute_hover, self.imgs.button_muted_hover)
|
||||
.set(state.ids.music_volume_muted, ui);
|
||||
if music_muted != self.global_state.settings.audio.music_volume.muted {
|
||||
events.push(MuteMusicVolume(music_muted));
|
||||
}
|
||||
|
||||
// SFX Volume
|
||||
Text::new(
|
||||
@ -222,21 +286,21 @@ impl<'a> Widget for Sound<'a> {
|
||||
.localized_strings
|
||||
.get_msg("hud-settings-sound_effect_volume"),
|
||||
)
|
||||
.down_from(state.ids.music_volume_slider, 10.0)
|
||||
.down_from(state.ids.music_volume_muted, 10.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.sfx_volume_text, ui);
|
||||
// SFX Volume Slider
|
||||
if let Some(new_val) = ImageSlider::continuous(
|
||||
self.global_state.settings.audio.sfx_volume,
|
||||
self.global_state.settings.audio.sfx_volume.volume,
|
||||
0.0,
|
||||
1.0,
|
||||
self.imgs.slider_indicator,
|
||||
self.imgs.slider,
|
||||
)
|
||||
.w_h(104.0, 22.0)
|
||||
.down_from(state.ids.sfx_volume_text, 10.0)
|
||||
.right_from(state.ids.sfx_volume_muted, 8.0)
|
||||
.track_breadth(12.0)
|
||||
.slider_length(10.0)
|
||||
.pad_track((5.0, 5.0))
|
||||
@ -247,13 +311,27 @@ impl<'a> Widget for Sound<'a> {
|
||||
// SFX Volume Number
|
||||
Text::new(&format!(
|
||||
"{:2.0}%",
|
||||
self.global_state.settings.audio.sfx_volume * 100.0
|
||||
self.global_state.settings.audio.sfx_volume.volume * 100.0
|
||||
))
|
||||
.right_from(state.ids.sfx_volume_slider, 8.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.sfx_volume_number, ui);
|
||||
// SFX Volume Muted Indicator
|
||||
let sfx_muted = ToggleButton::new(
|
||||
self.global_state.settings.audio.sfx_volume.muted,
|
||||
self.imgs.button_mute,
|
||||
self.imgs.button_muted,
|
||||
)
|
||||
.w_h(24.0, 25.0)
|
||||
.down_from(state.ids.sfx_volume_text, 10.0)
|
||||
.press_images(self.imgs.button_mute_hover, self.imgs.button_muted_hover)
|
||||
.set(state.ids.sfx_volume_muted, ui);
|
||||
if sfx_muted != self.global_state.settings.audio.sfx_volume.muted {
|
||||
events.push(MuteSfxVolume(sfx_muted));
|
||||
}
|
||||
|
||||
// Ambience Volume
|
||||
Text::new(
|
||||
&self
|
||||
@ -267,7 +345,7 @@ impl<'a> Widget for Sound<'a> {
|
||||
.set(state.ids.ambience_volume_text, ui);
|
||||
// Ambience Volume Slider
|
||||
if let Some(new_val) = ImageSlider::continuous(
|
||||
self.global_state.settings.audio.ambience_volume,
|
||||
self.global_state.settings.audio.ambience_volume.volume,
|
||||
0.0,
|
||||
1.0,
|
||||
self.imgs.slider_indicator,
|
||||
@ -285,13 +363,26 @@ impl<'a> Widget for Sound<'a> {
|
||||
// Ambience Volume Number
|
||||
Text::new(&format!(
|
||||
"{:2.0}%",
|
||||
self.global_state.settings.audio.ambience_volume * 100.0
|
||||
self.global_state.settings.audio.ambience_volume.volume * 100.0
|
||||
))
|
||||
.right_from(state.ids.ambience_volume_slider, 8.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.ambience_volume_number, ui);
|
||||
// Ambience Volume Muted Indicator
|
||||
let ambience_muted = ToggleButton::new(
|
||||
self.global_state.settings.audio.ambience_volume.muted,
|
||||
self.imgs.button_mute,
|
||||
self.imgs.button_muted,
|
||||
)
|
||||
.w_h(24.0, 25.0)
|
||||
.down_from(state.ids.ambience_volume_text, 10.0)
|
||||
.press_images(self.imgs.button_mute_hover, self.imgs.button_muted_hover)
|
||||
.set(state.ids.ambience_volume_muted, ui);
|
||||
if ambience_muted != self.global_state.settings.audio.ambience_volume.muted {
|
||||
events.push(MuteAmbienceVolume(ambience_muted));
|
||||
}
|
||||
|
||||
// Music spacing
|
||||
Text::new(&self.localized_strings.get_msg("hud-settings-music_spacing"))
|
||||
|
@ -230,10 +230,10 @@ fn main() {
|
||||
// AudioOutput::Device(ref dev) => Some(dev.clone()),
|
||||
};
|
||||
|
||||
audio.set_master_volume(settings.audio.master_volume);
|
||||
audio.set_music_volume(settings.audio.music_volume);
|
||||
audio.set_sfx_volume(settings.audio.sfx_volume);
|
||||
audio.set_ambience_volume(settings.audio.ambience_volume);
|
||||
audio.set_master_volume(settings.audio.master_volume.get_checked());
|
||||
audio.set_music_volume(settings.audio.music_volume.get_checked());
|
||||
audio.set_sfx_volume(settings.audio.sfx_volume.get_checked());
|
||||
audio.set_ambience_volume(settings.audio.ambience_volume.get_checked());
|
||||
audio.set_music_spacing(settings.audio.music_spacing);
|
||||
|
||||
// Load the profile.
|
||||
|
@ -89,10 +89,14 @@ pub fn run(mut global_state: GlobalState, event_loop: EventLoop) {
|
||||
|
||||
if let winit::event::WindowEvent::Focused(focused) = event {
|
||||
global_state.audio.set_master_volume(if focused {
|
||||
global_state.settings.audio.master_volume
|
||||
global_state.settings.audio.master_volume.get_checked()
|
||||
} else {
|
||||
global_state.settings.audio.inactive_master_volume_perc
|
||||
* global_state.settings.audio.master_volume
|
||||
global_state
|
||||
.settings
|
||||
.audio
|
||||
.inactive_master_volume_perc
|
||||
.get_checked()
|
||||
* global_state.settings.audio.master_volume.get_checked()
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -8,8 +8,8 @@ use crate::{
|
||||
},
|
||||
render::RenderMode,
|
||||
settings::{
|
||||
AudioSettings, ChatSettings, ControlSettings, Fps, GamepadSettings, GameplaySettings,
|
||||
GraphicsSettings, InterfaceSettings,
|
||||
audio::AudioVolume, AudioSettings, ChatSettings, ControlSettings, Fps, GamepadSettings,
|
||||
GameplaySettings, GraphicsSettings, InterfaceSettings,
|
||||
},
|
||||
window::FullScreenSettings,
|
||||
GlobalState,
|
||||
@ -19,10 +19,15 @@ use i18n::{LanguageMetadata, LocalizationHandle};
|
||||
#[derive(Clone)]
|
||||
pub enum Audio {
|
||||
AdjustMasterVolume(f32),
|
||||
MuteMasterVolume(bool),
|
||||
AdjustInactiveMasterVolume(f32),
|
||||
MuteInactiveMasterVolume(bool),
|
||||
AdjustMusicVolume(f32),
|
||||
MuteMusicVolume(bool),
|
||||
AdjustSfxVolume(f32),
|
||||
MuteSfxVolume(bool),
|
||||
AdjustAmbienceVolume(f32),
|
||||
MuteAmbienceVolume(bool),
|
||||
AdjustMusicSpacing(f32),
|
||||
//ChangeAudioDevice(String),
|
||||
ResetAudioSettings,
|
||||
@ -194,31 +199,73 @@ settings_change_from!(Networking);
|
||||
impl SettingsChange {
|
||||
pub fn process(self, global_state: &mut GlobalState, session_state: &mut SessionState) {
|
||||
let mut settings = &mut global_state.settings;
|
||||
|
||||
match self {
|
||||
SettingsChange::Audio(audio_change) => {
|
||||
fn update_volume(audio: &mut AudioVolume, volume: f32) -> f32 {
|
||||
audio.volume = volume;
|
||||
audio.get_checked()
|
||||
}
|
||||
fn update_muted(audio: &mut AudioVolume, muted: bool) -> f32 {
|
||||
audio.muted = muted;
|
||||
audio.get_checked()
|
||||
}
|
||||
|
||||
match audio_change {
|
||||
Audio::AdjustMasterVolume(master_volume) => {
|
||||
global_state.audio.set_master_volume(master_volume);
|
||||
let volume_checked =
|
||||
update_volume(&mut settings.audio.master_volume, master_volume);
|
||||
|
||||
settings.audio.master_volume = master_volume;
|
||||
global_state.audio.set_master_volume(volume_checked);
|
||||
},
|
||||
Audio::MuteMasterVolume(master_muted) => {
|
||||
let volume_checked =
|
||||
update_muted(&mut settings.audio.master_volume, master_muted);
|
||||
|
||||
global_state.audio.set_master_volume(volume_checked);
|
||||
},
|
||||
Audio::AdjustInactiveMasterVolume(inactive_master_volume_perc) => {
|
||||
settings.audio.inactive_master_volume_perc = inactive_master_volume_perc;
|
||||
settings.audio.inactive_master_volume_perc.volume =
|
||||
inactive_master_volume_perc;
|
||||
},
|
||||
Audio::MuteInactiveMasterVolume(inactive_master_volume_muted) => {
|
||||
settings.audio.inactive_master_volume_perc.muted =
|
||||
inactive_master_volume_muted;
|
||||
},
|
||||
Audio::AdjustMusicVolume(music_volume) => {
|
||||
global_state.audio.set_music_volume(music_volume);
|
||||
let volume_checked =
|
||||
update_volume(&mut settings.audio.music_volume, music_volume);
|
||||
|
||||
settings.audio.music_volume = music_volume;
|
||||
global_state.audio.set_music_volume(volume_checked);
|
||||
},
|
||||
Audio::MuteMusicVolume(music_muted) => {
|
||||
let volume_checked =
|
||||
update_muted(&mut settings.audio.music_volume, music_muted);
|
||||
|
||||
global_state.audio.set_music_volume(volume_checked);
|
||||
},
|
||||
Audio::AdjustSfxVolume(sfx_volume) => {
|
||||
global_state.audio.set_sfx_volume(sfx_volume);
|
||||
let volume_checked =
|
||||
update_volume(&mut settings.audio.sfx_volume, sfx_volume);
|
||||
|
||||
settings.audio.sfx_volume = sfx_volume;
|
||||
global_state.audio.set_sfx_volume(volume_checked);
|
||||
},
|
||||
Audio::MuteSfxVolume(sfx_muted) => {
|
||||
let volume_checked =
|
||||
update_muted(&mut settings.audio.sfx_volume, sfx_muted);
|
||||
|
||||
global_state.audio.set_sfx_volume(volume_checked);
|
||||
},
|
||||
Audio::AdjustAmbienceVolume(ambience_volume) => {
|
||||
global_state.audio.set_ambience_volume(ambience_volume);
|
||||
|
||||
settings.audio.ambience_volume = ambience_volume;
|
||||
settings.audio.ambience_volume.volume = ambience_volume;
|
||||
},
|
||||
Audio::MuteAmbienceVolume(ambience_muted) => {
|
||||
let volume_checked =
|
||||
update_muted(&mut settings.audio.ambience_volume, ambience_muted);
|
||||
|
||||
global_state.audio.set_ambience_volume(volume_checked);
|
||||
},
|
||||
Audio::AdjustMusicSpacing(multiplier) => {
|
||||
global_state.audio.set_music_spacing(multiplier);
|
||||
@ -232,9 +279,14 @@ impl SettingsChange {
|
||||
//},
|
||||
Audio::ResetAudioSettings => {
|
||||
settings.audio = AudioSettings::default();
|
||||
let audio = &settings.audio;
|
||||
global_state.audio.set_music_volume(audio.music_volume);
|
||||
global_state.audio.set_sfx_volume(audio.sfx_volume);
|
||||
|
||||
let audio = &mut global_state.audio;
|
||||
|
||||
// TODO: check if updating the master volume is necessary
|
||||
// (it wasn't done before)
|
||||
audio.set_master_volume(settings.audio.master_volume.get_checked());
|
||||
audio.set_music_volume(settings.audio.music_volume.get_checked());
|
||||
audio.set_sfx_volume(settings.audio.sfx_volume.get_checked());
|
||||
},
|
||||
}
|
||||
},
|
||||
|
@ -15,17 +15,35 @@ pub enum AudioOutput {
|
||||
impl AudioOutput {
|
||||
pub fn is_enabled(&self) -> bool { !matches!(self, Self::Off) }
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
|
||||
pub struct AudioVolume {
|
||||
pub volume: f32,
|
||||
pub muted: bool,
|
||||
}
|
||||
|
||||
impl AudioVolume {
|
||||
pub fn new(volume: f32, muted: bool) -> Self { Self { volume, muted } }
|
||||
|
||||
pub fn get_checked(&self) -> f32 {
|
||||
match self.muted {
|
||||
true => 0.0,
|
||||
false => self.volume,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// `AudioSettings` controls the volume of different audio subsystems and which
|
||||
/// device is used.
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
#[serde(default)]
|
||||
pub struct AudioSettings {
|
||||
pub master_volume: f32,
|
||||
pub master_volume: AudioVolume,
|
||||
#[serde(rename = "inactive_master_volume")]
|
||||
pub inactive_master_volume_perc: f32,
|
||||
pub music_volume: f32,
|
||||
pub sfx_volume: f32,
|
||||
pub ambience_volume: f32,
|
||||
pub inactive_master_volume_perc: AudioVolume,
|
||||
pub music_volume: AudioVolume,
|
||||
pub sfx_volume: AudioVolume,
|
||||
pub ambience_volume: AudioVolume,
|
||||
pub num_sfx_channels: usize,
|
||||
pub num_ui_channels: usize,
|
||||
pub music_spacing: f32,
|
||||
@ -37,11 +55,11 @@ pub struct AudioSettings {
|
||||
impl Default for AudioSettings {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
master_volume: 1.0,
|
||||
inactive_master_volume_perc: 0.5,
|
||||
music_volume: 0.25,
|
||||
sfx_volume: 0.6,
|
||||
ambience_volume: 0.6,
|
||||
master_volume: AudioVolume::new(1.0, false),
|
||||
inactive_master_volume_perc: AudioVolume::new(0.5, false),
|
||||
music_volume: AudioVolume::new(0.4, false),
|
||||
sfx_volume: AudioVolume::new(0.6, false),
|
||||
ambience_volume: AudioVolume::new(0.6, false),
|
||||
num_sfx_channels: 60,
|
||||
num_ui_channels: 10,
|
||||
music_spacing: 1.0,
|
||||
|
Loading…
Reference in New Issue
Block a user