Make music optional.
[mandelwow.git] / sound.rs
index 4b946860d3221f115516022c1d41767a561534ab..d88850b1631d03640fc1d8abd7dc5f73f0ddad06 100644 (file)
--- a/sound.rs
+++ b/sound.rs
@@ -18,7 +18,7 @@ impl AudioCallback for XmCallback {
 }
 
 pub struct SoundPlayer {
-    _device: AudioDevice<XmCallback>,
+    _device: Option<AudioDevice<XmCallback>>,
 }
 
 fn play_xm(raw_xm: &[u8]) -> SoundPlayer {
@@ -42,14 +42,21 @@ fn play_xm(raw_xm: &[u8]) -> SoundPlayer {
     device.resume();
 
     SoundPlayer {
-        _device: device,
+        _device: Some(device),
     }
 }
 
 pub fn start() -> SoundPlayer {
-    let mut xm = Vec::new();
     let filename = "flora.xm";
-    File::open(filename).unwrap()
-        .read_to_end(&mut xm).unwrap();
-    return play_xm(&xm);
+    match File::open(filename) {
+        Result::Ok(mut f) => {
+            let mut xm = Vec::new();
+            f.read_to_end(&mut xm).unwrap();
+            return play_xm(&xm);
+        },
+        Result::Err(err) => {
+            println!("Couldn't open module {}: {:?}", filename, err);
+        },
+    }
+    return SoundPlayer { _device: None };
 }