Updated how mute and deafen for self works, more similar to official client behavior.

This commit is contained in:
Storm Dragon
2026-09-05 22:11:03 -04:00
parent cf9746c8de
commit 97e0dc9281
5 changed files with 111 additions and 23 deletions
+32 -6
View File
@@ -233,6 +233,13 @@ func (b *Barnard) setSelfMute(muted bool) {
b.UpdateGeneralStatus("cannot change self mute while disconnected", true)
return
}
if !muted && b.selfDeafened() {
b.setUnmuteOnUndeafen(false)
b.Client.Self.SetSelfMutedAndDeafened(false, false)
b.Notify("unmuteundeafen", "me", "")
b.AddOutputLine("You unmuted and undeafened yourself")
return
}
if b.selfMuted() == muted {
return
}
@@ -272,17 +279,36 @@ func (b *Barnard) setSelfDeafen(deafened bool) {
if b.selfDeafened() == deafened {
return
}
if b.isTransmitting() {
if deafened && b.isTransmitting() {
b.StopTransmission()
}
b.Client.Self.SetSelfMutedAndDeafened(true, deafened)
muted, unmuteOnUndeafen := selfDeafenTarget(deafened, b.selfMuted(), b.shouldUnmuteOnUndeafen())
b.setUnmuteOnUndeafen(unmuteOnUndeafen)
b.Client.Self.SetSelfMutedAndDeafened(muted, deafened)
if deafened {
b.Notify("mutedeafen", "me", "")
b.AddOutputLine("You muted and deafened yourself")
if unmuteOnUndeafen {
b.Notify("mutedeafen", "me", "")
b.AddOutputLine("You muted and deafened yourself")
} else {
b.Notify("deafen", "me", "")
b.AddOutputLine("You deafened yourself")
}
return
}
b.Notify("muteundeafen", "me", "")
b.AddOutputLine("You undeafened yourself; microphone remains muted")
if muted {
b.Notify("muteundeafen", "me", "")
b.AddOutputLine("You undeafened yourself; microphone remains muted")
} else {
b.Notify("unmuteundeafen", "me", "")
b.AddOutputLine("You unmuted and undeafened yourself")
}
}
func selfDeafenTarget(deafened, currentlyMuted, unmuteOnUndeafen bool) (muted, rememberUnmute bool) {
if deafened {
return true, !currentlyMuted
}
return !unmuteOnUndeafen, false
}
func (b *Barnard) toggleSelfDeafen() {