aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mumctl/src/main.rs20
-rw-r--r--mumd/src/state.rs9
-rw-r--r--mumlib/src/command.rs6
3 files changed, 31 insertions, 4 deletions
diff --git a/mumctl/src/main.rs b/mumctl/src/main.rs
index 9b5a018..3bdaab3 100644
--- a/mumctl/src/main.rs
+++ b/mumctl/src/main.rs
@@ -289,7 +289,15 @@ fn main() {
} else {
unreachable!()
});
- err_print!(send_command(command));
+ match send_command(command) {
+ Ok(Some(CommandResponse::MuteStatus { is_muted })) => println!("{}", if is_muted {
+ "Muted"
+ } else {
+ "Unmuted"
+ }),
+ Ok(_) => {},
+ Err(e) => println!("{} {}", "error".red(), e),
+ }
} else if let Some(matches) = matches.subcommand_matches("deafen") {
let command =
Command::DeafenSelf(if let Some(_matches) = matches.subcommand_matches("true") {
@@ -301,7 +309,15 @@ fn main() {
} else {
unreachable!()
});
- err_print!(send_command(command));
+ match send_command(command) {
+ Ok(Some(CommandResponse::DeafenStatus { is_deafened })) => println!("{}", if is_deafened {
+ "Deafened"
+ } else {
+ "Undeafened"
+ }),
+ Ok(_) => {},
+ Err(e) => println!("{} {}", "error".red(), e),
+ }
} else if let Some(matches) = matches.subcommand_matches("user") {
let name = matches.value_of("user").unwrap();
if let Some(matches) = matches.subcommand_matches("mute") {
diff --git a/mumd/src/state.rs b/mumd/src/state.rs
index 91cf734..36d3ee9 100644
--- a/mumd/src/state.rs
+++ b/mumd/src/state.rs
@@ -254,6 +254,7 @@ impl State {
(None, true, true) => Some((true, false)),
};
+ let mut new_deaf = None;
if let Some((mute, deafen)) = action {
if server.deafened() != deafen {
self.audio.play_effect(if deafen {
@@ -276,6 +277,7 @@ impl State {
}
if server.deafened() != deafen {
msg.set_self_deaf(deafen);
+ new_deaf = Some(deafen);
}
let server = self.server_mut().unwrap();
server.set_muted(mute);
@@ -283,7 +285,7 @@ impl State {
self.packet_sender.send(msg.into()).unwrap();
}
- now!(Ok(None))
+ now!(Ok(new_deaf.map(|b| CommandResponse::DeafenStatus { is_deafened: b })))
}
Command::MuteSelf(toggle) => {
if !matches!(*self.phase_receiver().borrow(), StatePhase::Connected) {
@@ -306,6 +308,7 @@ impl State {
(None, true, true) => Some((false, false)),
};
+ let mut new_mute = None;
if let Some((mute, deafen)) = action {
if server.deafened() != deafen {
self.audio.play_effect(if deafen {
@@ -323,8 +326,10 @@ impl State {
let mut msg = msgs::UserState::new();
if server.muted() != mute {
msg.set_self_mute(mute);
+ new_mute = Some(mute)
} else if !mute && !deafen && server.deafened() {
msg.set_self_mute(false);
+ new_mute = Some(false)
}
if server.deafened() != deafen {
msg.set_self_deaf(deafen);
@@ -335,7 +340,7 @@ impl State {
self.packet_sender.send(msg.into()).unwrap();
}
- now!(Ok(None))
+ now!(Ok(new_mute.map(|b| CommandResponse::MuteStatus { is_muted: b })))
}
Command::MuteOther(string, toggle) => {
if !matches!(*self.phase_receiver().borrow(), StatePhase::Connected) {
diff --git a/mumlib/src/command.rs b/mumlib/src/command.rs
index 675fb7d..2e824fc 100644
--- a/mumlib/src/command.rs
+++ b/mumlib/src/command.rs
@@ -46,4 +46,10 @@ pub enum CommandResponse {
max_users: u32,
bandwidth: u32,
},
+ MuteStatus {
+ is_muted: bool,
+ },
+ DeafenStatus {
+ is_deafened: bool,
+ },
}