diff options
Diffstat (limited to 'mumd')
| -rw-r--r-- | mumd/src/audio.rs | 8 | ||||
| -rw-r--r-- | mumd/src/state.rs | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index d1ef106..7f6dd51 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -21,6 +21,10 @@ pub const EVENT_SOUNDS: &[(&str, NotificationEvents)] = &[ ("resources/channel_leave.wav", NotificationEvents::UserDisconnected), ("resources/channel_join.wav", NotificationEvents::UserJoinedChannel), ("resources/channel_leave.wav", NotificationEvents::UserLeftChannel), + ("resources/mute.wav", NotificationEvents::Mute), + ("resources/unmute.wav", NotificationEvents::Unmute), + ("resources/deafen.wav", NotificationEvents::Deafen), + ("resources/undeafen.wav", NotificationEvents::Undeafen), ]; const SAMPLE_RATE: u32 = 48000; @@ -33,6 +37,10 @@ pub enum NotificationEvents { UserDisconnected, UserJoinedChannel, UserLeftChannel, + Mute, + Unmute, + Deafen, + Undeafen, } pub struct Audio { diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 69bf4df..d719851 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -238,7 +238,7 @@ impl State { return now!(Err(Error::DisconnectedError)); } - let server = self.server_mut().unwrap(); + let server = self.server().unwrap(); let action = match (toggle, server.muted(), server.deafened()) { (Some(false), false, false) => None, (Some(false), false, true) => Some((false, false)), @@ -258,12 +258,15 @@ impl State { let mut msg = msgs::UserState::new(); if server.muted() != mute { msg.set_self_mute(mute); + self.audio.play_effect(if mute { NotificationEvents::Mute } else { NotificationEvents::Unmute }); } else if !mute && !deafen && server.deafened() { msg.set_self_mute(false); } if server.deafened() != deafen { msg.set_self_deaf(deafen); + self.audio.play_effect(if deafen { NotificationEvents::Deafen } else { NotificationEvents::Undeafen }); } + let server = self.server_mut().unwrap(); server.set_muted(mute); server.set_deafened(deafen); self.packet_sender.send(msg.into()).unwrap(); @@ -276,7 +279,7 @@ impl State { return now!(Err(Error::DisconnectedError)); } - let server = self.server_mut().unwrap(); + let server = self.server().unwrap(); let action = match (toggle, server.muted(), server.deafened()) { (Some(false), false, false) => None, (Some(false), false, true) => Some((false, false)), @@ -296,12 +299,15 @@ impl State { let mut msg = msgs::UserState::new(); if server.muted() != mute { msg.set_self_mute(mute); + self.audio.play_effect(if mute { NotificationEvents::Mute } else { NotificationEvents::Unmute }); } else if !mute && !deafen && server.deafened() { msg.set_self_mute(false); } if server.deafened() != deafen { msg.set_self_deaf(deafen); + self.audio.play_effect(if deafen { NotificationEvents::Deafen } else { NotificationEvents::Undeafen }); } + let server = self.server_mut().unwrap(); server.set_muted(mute); server.set_deafened(deafen); self.packet_sender.send(msg.into()).unwrap(); |
