mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'DaforLynx/music-gap-fix' into 'master'
Fix crash when Gap Between Songs is set to 0.0; changed name to Music Spacing See merge request veloren/veloren!3528
This commit is contained in:
commit
2d2d6b5c64
@ -111,7 +111,7 @@ hud-settings-inactive_master_volume_perc = Inactive Window Volume
|
|||||||
hud-settings-music_volume = Music Volume
|
hud-settings-music_volume = Music Volume
|
||||||
hud-settings-sound_effect_volume = Sound Effects Volume
|
hud-settings-sound_effect_volume = Sound Effects Volume
|
||||||
hud-settings-ambience_volume = Ambience Volume
|
hud-settings-ambience_volume = Ambience Volume
|
||||||
hud-settings-music_frequency = Gap Between Songs
|
hud-settings-music_spacing = Music Spacing
|
||||||
hud-settings-audio_device = Audio Device
|
hud-settings-audio_device = Audio Device
|
||||||
hud-settings-reset_sound = Reset to Defaults
|
hud-settings-reset_sound = Reset to Defaults
|
||||||
hud-settings-english_fallback = Display English for missing translations
|
hud-settings-english_fallback = Display English for missing translations
|
||||||
|
@ -55,7 +55,7 @@ pub struct AudioFrontend {
|
|||||||
ambience_volume: f32,
|
ambience_volume: f32,
|
||||||
music_volume: f32,
|
music_volume: f32,
|
||||||
master_volume: f32,
|
master_volume: f32,
|
||||||
music_frequency: f32,
|
music_spacing: f32,
|
||||||
listener: Listener,
|
listener: Listener,
|
||||||
|
|
||||||
mtm: AssetHandle<MusicTransitionManifest>,
|
mtm: AssetHandle<MusicTransitionManifest>,
|
||||||
@ -108,7 +108,7 @@ impl AudioFrontend {
|
|||||||
ambience_volume: 1.0,
|
ambience_volume: 1.0,
|
||||||
music_volume: 1.0,
|
music_volume: 1.0,
|
||||||
master_volume: 1.0,
|
master_volume: 1.0,
|
||||||
music_frequency: 1.0,
|
music_spacing: 1.0,
|
||||||
listener: Listener::default(),
|
listener: Listener::default(),
|
||||||
mtm: AssetExt::load_expect("voxygen.audio.music_transition_manifest"),
|
mtm: AssetExt::load_expect("voxygen.audio.music_transition_manifest"),
|
||||||
}
|
}
|
||||||
@ -140,7 +140,7 @@ impl AudioFrontend {
|
|||||||
ambience_volume: 1.0,
|
ambience_volume: 1.0,
|
||||||
music_volume: 1.0,
|
music_volume: 1.0,
|
||||||
master_volume: 1.0,
|
master_volume: 1.0,
|
||||||
music_frequency: 1.0,
|
music_spacing: 1.0,
|
||||||
listener: Listener::default(),
|
listener: Listener::default(),
|
||||||
mtm,
|
mtm,
|
||||||
}
|
}
|
||||||
@ -516,7 +516,7 @@ impl AudioFrontend {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_music_frequency(&mut self, multiplier: f32) { self.music_frequency = multiplier }
|
pub fn set_music_spacing(&mut self, multiplier: f32) { self.music_spacing = multiplier }
|
||||||
|
|
||||||
/// Updates master volume in all channels
|
/// Updates master volume in all channels
|
||||||
pub fn set_master_volume(&mut self, master_volume: f32) {
|
pub fn set_master_volume(&mut self, master_volume: f32) {
|
||||||
|
@ -341,30 +341,33 @@ impl MusicMgr {
|
|||||||
// a town, or exploring.
|
// a town, or exploring.
|
||||||
// TODO: make this something that is decided when a song ends, instead of when
|
// TODO: make this something that is decided when a song ends, instead of when
|
||||||
// it begins
|
// it begins
|
||||||
let frequency_multipler = audio.music_frequency;
|
let spacing_multiplier = audio.music_spacing;
|
||||||
let silence_between_tracks_seconds: f32 =
|
let mut silence_between_tracks_seconds: f32 = 0.0;
|
||||||
|
if spacing_multiplier > f32::EPSILON {
|
||||||
|
silence_between_tracks_seconds =
|
||||||
if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||||
&& matches!(client.current_site(), SitesKind::Settlement)
|
&& matches!(client.current_site(), SitesKind::Settlement)
|
||||||
{
|
{
|
||||||
rng.gen_range(120.0 * frequency_multipler..180.0 * frequency_multipler)
|
rng.gen_range(120.0 * spacing_multiplier..180.0 * spacing_multiplier)
|
||||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||||
&& matches!(client.current_site(), SitesKind::Dungeon)
|
&& matches!(client.current_site(), SitesKind::Dungeon)
|
||||||
{
|
{
|
||||||
rng.gen_range(10.0 * frequency_multipler..20.0 * frequency_multipler)
|
rng.gen_range(10.0 * spacing_multiplier..20.0 * spacing_multiplier)
|
||||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||||
&& matches!(client.current_site(), SitesKind::Cave)
|
&& matches!(client.current_site(), SitesKind::Cave)
|
||||||
{
|
{
|
||||||
rng.gen_range(20.0 * frequency_multipler..40.0 * frequency_multipler)
|
rng.gen_range(20.0 * spacing_multiplier..40.0 * spacing_multiplier)
|
||||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore)) {
|
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore)) {
|
||||||
rng.gen_range(120.0 * frequency_multipler..240.0 * frequency_multipler)
|
rng.gen_range(120.0 * spacing_multiplier..240.0 * spacing_multiplier)
|
||||||
} else if matches!(
|
} else if matches!(
|
||||||
music_state,
|
music_state,
|
||||||
MusicState::Activity(MusicActivity::Combat(_)) | MusicState::Transition(_, _)
|
MusicState::Activity(MusicActivity::Combat(_)) | MusicState::Transition(_, _)
|
||||||
) {
|
) {
|
||||||
0.0
|
0.0
|
||||||
} else {
|
} else {
|
||||||
rng.gen_range(30.0 * frequency_multipler..60.0 * frequency_multipler)
|
rng.gen_range(30.0 * spacing_multiplier..60.0 * spacing_multiplier)
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
let is_dark = (state.get_day_period().is_dark()) as bool;
|
let is_dark = (state.get_day_period().is_dark()) as bool;
|
||||||
let current_period_of_day = Self::get_current_day_period(is_dark);
|
let current_period_of_day = Self::get_current_day_period(is_dark);
|
||||||
|
@ -289,16 +289,16 @@ impl<'a> Widget for Sound<'a> {
|
|||||||
.color(TEXT_COLOR)
|
.color(TEXT_COLOR)
|
||||||
.set(state.ids.ambience_volume_number, ui);
|
.set(state.ids.ambience_volume_number, ui);
|
||||||
|
|
||||||
// Music frequency (actually gap between songs)
|
// Music spacing
|
||||||
Text::new(&self.localized_strings.get("hud.settings.music_frequency"))
|
Text::new(&self.localized_strings.get("hud.settings.music_frequency"))
|
||||||
.down_from(state.ids.ambience_volume_slider, 10.0)
|
.down_from(state.ids.ambience_volume_slider, 10.0)
|
||||||
.font_size(self.fonts.cyri.scale(14))
|
.font_size(self.fonts.cyri.scale(14))
|
||||||
.font_id(self.fonts.cyri.conrod_id)
|
.font_id(self.fonts.cyri.conrod_id)
|
||||||
.color(TEXT_COLOR)
|
.color(TEXT_COLOR)
|
||||||
.set(state.ids.music_frequency_text, ui);
|
.set(state.ids.music_frequency_text, ui);
|
||||||
// Music frequency Slider
|
// Music spacing Slider
|
||||||
if let Some(new_val) = ImageSlider::continuous(
|
if let Some(new_val) = ImageSlider::continuous(
|
||||||
self.global_state.settings.audio.music_frequency,
|
self.global_state.settings.audio.music_spacing,
|
||||||
0.0,
|
0.0,
|
||||||
2.0,
|
2.0,
|
||||||
self.imgs.slider_indicator,
|
self.imgs.slider_indicator,
|
||||||
@ -313,10 +313,10 @@ impl<'a> Widget for Sound<'a> {
|
|||||||
{
|
{
|
||||||
events.push(AdjustMusicFrequency(new_val));
|
events.push(AdjustMusicFrequency(new_val));
|
||||||
}
|
}
|
||||||
// Music frequency Number
|
// Music spacing Number
|
||||||
Text::new(&format!(
|
Text::new(&format!(
|
||||||
"{:1.2}x",
|
"{:1.2}x",
|
||||||
self.global_state.settings.audio.music_frequency
|
self.global_state.settings.audio.music_spacing
|
||||||
))
|
))
|
||||||
.right_from(state.ids.music_frequency_slider, 8.0)
|
.right_from(state.ids.music_frequency_slider, 8.0)
|
||||||
.font_size(self.fonts.cyri.scale(14))
|
.font_size(self.fonts.cyri.scale(14))
|
||||||
|
@ -210,9 +210,9 @@ impl SettingsChange {
|
|||||||
settings.audio.ambience_volume = ambience_volume;
|
settings.audio.ambience_volume = ambience_volume;
|
||||||
},
|
},
|
||||||
Audio::AdjustMusicFrequency(multiplier) => {
|
Audio::AdjustMusicFrequency(multiplier) => {
|
||||||
global_state.audio.set_music_frequency(multiplier);
|
global_state.audio.set_music_spacing(multiplier);
|
||||||
|
|
||||||
settings.audio.music_frequency = multiplier;
|
settings.audio.music_spacing = multiplier;
|
||||||
},
|
},
|
||||||
//Audio::ChangeAudioDevice(name) => {
|
//Audio::ChangeAudioDevice(name) => {
|
||||||
// global_state.audio.set_device(name.clone());
|
// global_state.audio.set_device(name.clone());
|
||||||
|
@ -28,7 +28,7 @@ pub struct AudioSettings {
|
|||||||
pub ambience_volume: f32,
|
pub ambience_volume: f32,
|
||||||
pub num_sfx_channels: usize,
|
pub num_sfx_channels: usize,
|
||||||
pub num_ui_channels: usize,
|
pub num_ui_channels: usize,
|
||||||
pub music_frequency: f32,
|
pub music_spacing: f32,
|
||||||
|
|
||||||
/// Audio Device that Voxygen will use to play audio.
|
/// Audio Device that Voxygen will use to play audio.
|
||||||
pub output: AudioOutput,
|
pub output: AudioOutput,
|
||||||
@ -44,7 +44,7 @@ impl Default for AudioSettings {
|
|||||||
ambience_volume: 0.6,
|
ambience_volume: 0.6,
|
||||||
num_sfx_channels: 60,
|
num_sfx_channels: 60,
|
||||||
num_ui_channels: 10,
|
num_ui_channels: 10,
|
||||||
music_frequency: 1.0,
|
music_spacing: 1.0,
|
||||||
output: AudioOutput::Automatic,
|
output: AudioOutput::Automatic,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user