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-sound_effect_volume = Sound Effects 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-reset_sound = Reset to Defaults
|
||||
hud-settings-english_fallback = Display English for missing translations
|
||||
|
@ -55,7 +55,7 @@ pub struct AudioFrontend {
|
||||
ambience_volume: f32,
|
||||
music_volume: f32,
|
||||
master_volume: f32,
|
||||
music_frequency: f32,
|
||||
music_spacing: f32,
|
||||
listener: Listener,
|
||||
|
||||
mtm: AssetHandle<MusicTransitionManifest>,
|
||||
@ -108,7 +108,7 @@ impl AudioFrontend {
|
||||
ambience_volume: 1.0,
|
||||
music_volume: 1.0,
|
||||
master_volume: 1.0,
|
||||
music_frequency: 1.0,
|
||||
music_spacing: 1.0,
|
||||
listener: Listener::default(),
|
||||
mtm: AssetExt::load_expect("voxygen.audio.music_transition_manifest"),
|
||||
}
|
||||
@ -140,7 +140,7 @@ impl AudioFrontend {
|
||||
ambience_volume: 1.0,
|
||||
music_volume: 1.0,
|
||||
master_volume: 1.0,
|
||||
music_frequency: 1.0,
|
||||
music_spacing: 1.0,
|
||||
listener: Listener::default(),
|
||||
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
|
||||
pub fn set_master_volume(&mut self, master_volume: f32) {
|
||||
|
@ -341,30 +341,33 @@ impl MusicMgr {
|
||||
// a town, or exploring.
|
||||
// TODO: make this something that is decided when a song ends, instead of when
|
||||
// it begins
|
||||
let frequency_multipler = audio.music_frequency;
|
||||
let silence_between_tracks_seconds: f32 =
|
||||
if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||
&& matches!(client.current_site(), SitesKind::Settlement)
|
||||
{
|
||||
rng.gen_range(120.0 * frequency_multipler..180.0 * frequency_multipler)
|
||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||
&& matches!(client.current_site(), SitesKind::Dungeon)
|
||||
{
|
||||
rng.gen_range(10.0 * frequency_multipler..20.0 * frequency_multipler)
|
||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||
&& matches!(client.current_site(), SitesKind::Cave)
|
||||
{
|
||||
rng.gen_range(20.0 * frequency_multipler..40.0 * frequency_multipler)
|
||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore)) {
|
||||
rng.gen_range(120.0 * frequency_multipler..240.0 * frequency_multipler)
|
||||
} else if matches!(
|
||||
music_state,
|
||||
MusicState::Activity(MusicActivity::Combat(_)) | MusicState::Transition(_, _)
|
||||
) {
|
||||
0.0
|
||||
} else {
|
||||
rng.gen_range(30.0 * frequency_multipler..60.0 * frequency_multipler)
|
||||
};
|
||||
let spacing_multiplier = audio.music_spacing;
|
||||
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))
|
||||
&& matches!(client.current_site(), SitesKind::Settlement)
|
||||
{
|
||||
rng.gen_range(120.0 * spacing_multiplier..180.0 * spacing_multiplier)
|
||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||
&& matches!(client.current_site(), SitesKind::Dungeon)
|
||||
{
|
||||
rng.gen_range(10.0 * spacing_multiplier..20.0 * spacing_multiplier)
|
||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore))
|
||||
&& matches!(client.current_site(), SitesKind::Cave)
|
||||
{
|
||||
rng.gen_range(20.0 * spacing_multiplier..40.0 * spacing_multiplier)
|
||||
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore)) {
|
||||
rng.gen_range(120.0 * spacing_multiplier..240.0 * spacing_multiplier)
|
||||
} else if matches!(
|
||||
music_state,
|
||||
MusicState::Activity(MusicActivity::Combat(_)) | MusicState::Transition(_, _)
|
||||
) {
|
||||
0.0
|
||||
} else {
|
||||
rng.gen_range(30.0 * spacing_multiplier..60.0 * spacing_multiplier)
|
||||
};
|
||||
}
|
||||
|
||||
let is_dark = (state.get_day_period().is_dark()) as bool;
|
||||
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)
|
||||
.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"))
|
||||
.down_from(state.ids.ambience_volume_slider, 10.0)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
.font_id(self.fonts.cyri.conrod_id)
|
||||
.color(TEXT_COLOR)
|
||||
.set(state.ids.music_frequency_text, ui);
|
||||
// Music frequency Slider
|
||||
// Music spacing Slider
|
||||
if let Some(new_val) = ImageSlider::continuous(
|
||||
self.global_state.settings.audio.music_frequency,
|
||||
self.global_state.settings.audio.music_spacing,
|
||||
0.0,
|
||||
2.0,
|
||||
self.imgs.slider_indicator,
|
||||
@ -313,10 +313,10 @@ impl<'a> Widget for Sound<'a> {
|
||||
{
|
||||
events.push(AdjustMusicFrequency(new_val));
|
||||
}
|
||||
// Music frequency Number
|
||||
// Music spacing Number
|
||||
Text::new(&format!(
|
||||
"{: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)
|
||||
.font_size(self.fonts.cyri.scale(14))
|
||||
|
@ -210,9 +210,9 @@ impl SettingsChange {
|
||||
settings.audio.ambience_volume = ambience_volume;
|
||||
},
|
||||
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) => {
|
||||
// global_state.audio.set_device(name.clone());
|
||||
|
@ -28,7 +28,7 @@ pub struct AudioSettings {
|
||||
pub ambience_volume: f32,
|
||||
pub num_sfx_channels: usize,
|
||||
pub num_ui_channels: usize,
|
||||
pub music_frequency: f32,
|
||||
pub music_spacing: f32,
|
||||
|
||||
/// Audio Device that Voxygen will use to play audio.
|
||||
pub output: AudioOutput,
|
||||
@ -44,7 +44,7 @@ impl Default for AudioSettings {
|
||||
ambience_volume: 0.6,
|
||||
num_sfx_channels: 60,
|
||||
num_ui_channels: 10,
|
||||
music_frequency: 1.0,
|
||||
music_spacing: 1.0,
|
||||
output: AudioOutput::Automatic,
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user