From 07f84c7738f7dd1aeaba3f7cae6a26d6a7e5835b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 3 Jan 2021 18:12:53 +0100 Subject: load fallback sfx if no file can be found --- mumd/src/audio.rs | 41 +++++++++++++++++++++++------------ mumd/src/fallback_sfx.wav | Bin 0 -> 32002 bytes mumd/src/resources/channel_join.wav | Bin 32002 -> 0 bytes mumd/src/resources/channel_leave.wav | Bin 32002 -> 0 bytes mumd/src/resources/connect.wav | Bin 32002 -> 0 bytes mumd/src/resources/deafen.wav | Bin 32002 -> 0 bytes mumd/src/resources/disconnect.wav | Bin 303364 -> 0 bytes mumd/src/resources/mute.wav | Bin 32002 -> 0 bytes mumd/src/resources/undeafen.wav | Bin 32002 -> 0 bytes mumd/src/resources/unmute.wav | Bin 32002 -> 0 bytes 10 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 mumd/src/fallback_sfx.wav delete mode 100644 mumd/src/resources/channel_join.wav delete mode 100644 mumd/src/resources/channel_leave.wav delete mode 100644 mumd/src/resources/connect.wav delete mode 100644 mumd/src/resources/deafen.wav delete mode 100644 mumd/src/resources/disconnect.wav delete mode 100644 mumd/src/resources/mute.wav delete mode 100644 mumd/src/resources/undeafen.wav delete mode 100644 mumd/src/resources/unmute.wav (limited to 'mumd') diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 67c3e59..61e2179 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -11,23 +11,23 @@ use log::*; use mumble_protocol::voice::VoicePacketPayload; use mumlib::config::SoundEffect; use opus::Channels; -use std::{collections::hash_map::Entry, fs::File, io}; +use std::{collections::hash_map::Entry, fs::File, io::Read}; use std::collections::{HashMap, VecDeque}; use std::sync::{Arc, Mutex}; use tokio::sync::{mpsc, watch}; //TODO? move to mumlib pub const DEFAULT_SOUND_FILES: &[(NotificationEvents, &str)] = &[ - (NotificationEvents::ServerConnect, "connect.wav"), - (NotificationEvents::ServerDisconnect, "disconnect.wav"), - (NotificationEvents::UserConnected, "channel_join.wav"), - (NotificationEvents::UserDisconnected, "channel_leave.wav"), - (NotificationEvents::UserJoinedChannel, "channel_join.wav"), - (NotificationEvents::UserLeftChannel, "channel_leave.wav"), - (NotificationEvents::Mute, "mute.wav"), - (NotificationEvents::Unmute, "unmute.wav"), - (NotificationEvents::Deafen, "deafen.wav"), - (NotificationEvents::Undeafen, "undeafen.wav"), + (NotificationEvents::ServerConnect, "fallback_sfx.wav"), + (NotificationEvents::ServerDisconnect, "fallback_sfx.wav"), + (NotificationEvents::UserConnected, "fallback_sfx.wav"), + (NotificationEvents::UserDisconnected, "fallback_sfx.wav"), + (NotificationEvents::UserJoinedChannel, "fallback_sfx.wav"), + (NotificationEvents::UserLeftChannel, "fallback_sfx.wav"), + (NotificationEvents::Mute, "fallback_sfx.wav"), + (NotificationEvents::Unmute, "fallback_sfx.wav"), + (NotificationEvents::Deafen, "fallback_sfx.wav"), + (NotificationEvents::Undeafen, "fallback_sfx.wav"), ]; const SAMPLE_RATE: u32 = 48000; @@ -251,7 +251,12 @@ impl Audio { } else { *file }; - let reader = hound::WavReader::new(get_resource(file).unwrap()).unwrap(); + let bytes = if let Some(bytes_vec) = get_resource(file) { + &*bytes_vec.leak() // needs immutability + } else { + include_bytes!("fallback_sfx.wav") + }; + let reader = hound::WavReader::new(bytes).unwrap(); let spec = reader.spec(); let samples = match spec.sample_format { hound::SampleFormat::Float => reader @@ -382,6 +387,14 @@ impl Audio { } } -fn get_resource(file: &str) -> io::Result { - File::open(file) +fn get_resource(file: &str) -> Option> { + let mut buf: Vec = Vec::new(); + if let Ok(mut file) = File::open(file) + .or_else(|_| File::open(format!("/home/gustav/dev/mum/mumd/src/resources/{}", file))) + { + file.read_to_end(&mut buf).unwrap(); + Some(buf) + } else { + None + } } diff --git a/mumd/src/fallback_sfx.wav b/mumd/src/fallback_sfx.wav new file mode 100644 index 0000000..82ee4d4 Binary files /dev/null and b/mumd/src/fallback_sfx.wav differ diff --git a/mumd/src/resources/channel_join.wav b/mumd/src/resources/channel_join.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/channel_join.wav and /dev/null differ diff --git a/mumd/src/resources/channel_leave.wav b/mumd/src/resources/channel_leave.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/channel_leave.wav and /dev/null differ diff --git a/mumd/src/resources/connect.wav b/mumd/src/resources/connect.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/connect.wav and /dev/null differ diff --git a/mumd/src/resources/deafen.wav b/mumd/src/resources/deafen.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/deafen.wav and /dev/null differ diff --git a/mumd/src/resources/disconnect.wav b/mumd/src/resources/disconnect.wav deleted file mode 100644 index fb2ca76..0000000 Binary files a/mumd/src/resources/disconnect.wav and /dev/null differ diff --git a/mumd/src/resources/mute.wav b/mumd/src/resources/mute.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/mute.wav and /dev/null differ diff --git a/mumd/src/resources/undeafen.wav b/mumd/src/resources/undeafen.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/undeafen.wav and /dev/null differ diff --git a/mumd/src/resources/unmute.wav b/mumd/src/resources/unmute.wav deleted file mode 100644 index 82ee4d4..0000000 Binary files a/mumd/src/resources/unmute.wav and /dev/null differ -- cgit v1.2.1