aboutsummaryrefslogtreecommitdiffstats
path: root/mumd
diff options
context:
space:
mode:
authorEskil Queseth <eskilq@kth.se>2020-11-16 02:13:25 +0100
committerEskil Queseth <eskilq@kth.se>2020-11-16 02:13:25 +0100
commit1bf223de5aca7d39347efa468558e14c02fe8d6a (patch)
treead9ace68dc41ad87cccab5b1a93ec9f0e55aa681 /mumd
parentc3fabb1f9224cdf8fd68ad186baeffc93c96ce5c (diff)
downloadmum-1bf223de5aca7d39347efa468558e14c02fe8d6a.tar.gz
add sound for muting and unmuting self
Diffstat (limited to 'mumd')
-rw-r--r--mumd/src/audio.rs8
-rw-r--r--mumd/src/state.rs10
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();