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.
/// Does not return rodio Device struct in case our audio backend changes.
pub fn get_default_device() -> String {
rodio::default_output_device()
.expect("No audio output devices detected.")
.name()
.expect("Unable to get device name")
pub fn get_default_device() -> Option<String> {
rodio::default_output_device().map(|dev| dev.name().expect("Unable to get device name"))
}
/// Returns a vec of the audio devices available.

View File

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