allow the game to start without an audio device

This commit is contained in:
Marli Frost 2020-03-28 13:12:35 +00:00
parent 3e768349be
commit c82d1b9316
No known key found for this signature in database
GPG Key ID: CB0BEA7CF9BD1245
2 changed files with 11 additions and 13 deletions

View File

@ -238,11 +238,8 @@ impl AudioFrontend {
/// Returns the default audio device. /// Returns the default audio device.
/// Does not return rodio Device struct in case our audio backend changes. /// Does not return rodio Device struct in case our audio backend changes.
pub fn get_default_device() -> String { pub fn get_default_device() -> Option<String> {
rodio::default_output_device() rodio::default_output_device().map(|dev| dev.name().expect("Unable to get device name"))
.expect("No audio output devices detected.")
.name()
.expect("Unable to get device name")
} }
/// Returns a vec of the audio devices available. /// Returns a vec of the audio devices available.

View File

@ -44,15 +44,16 @@ fn main() {
panic!("Failed to save settings: {:?}", err); panic!("Failed to save settings: {:?}", err);
} }
let audio_device = || match &settings.audio.audio_device { let audio_device = settings
Some(d) => d.to_string(), .audio
None => audio::get_default_device(), .audio_device
}; .as_ref()
.map(|s| s.clone())
.or_else(audio::get_default_device);
let mut audio = if settings.audio.audio_on { let mut audio = match (audio_device, settings.audio.audio_on) {
AudioFrontend::new(audio_device(), settings.audio.max_sfx_channels) (Some(dev), true) => AudioFrontend::new(dev, settings.audio.max_sfx_channels),
} else { _ => AudioFrontend::no_audio()
AudioFrontend::no_audio()
}; };
audio.set_music_volume(settings.audio.music_volume); audio.set_music_volume(settings.audio.music_volume);