mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-17 22:31:00 +03:00
* commit * refactor: remove unused using in MutedStatusEffectSystem + early return for StatusEffectsSystem.RelayEvent * refactor: one forgotten micro optimization! --------- Co-authored-by: iaada <iaada@users.noreply.github.com> Co-authored-by: Fildrance <fildrance@gmail.com>
55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
using Content.Shared.Chat;
|
|
using Content.Shared.Chat.Prototypes;
|
|
using Content.Shared.Popups;
|
|
using Content.Shared.StatusEffectNew;
|
|
|
|
namespace Content.Shared.Speech.Muting;
|
|
|
|
/// <summary>
|
|
/// Handles the speech restrictions imposed by <see cref="MutedStatusEffectComponent"/>.
|
|
/// </summary>
|
|
public sealed partial class MutedStatusEffectSystem : EntitySystem
|
|
{
|
|
[Dependency] private SharedPopupSystem _popup = default!;
|
|
|
|
/// <inheritdoc />
|
|
public override void Initialize()
|
|
{
|
|
SubscribeLocalEvent<MutedStatusEffectComponent, StatusEffectRelayedEvent<SpeakAttemptEvent>>(OnSpeakAttempt);
|
|
SubscribeLocalEvent<MutedStatusEffectComponent, StatusEffectRelayedEvent<EmoteEvent>>(OnEmote);
|
|
SubscribeLocalEvent<MutedStatusEffectComponent, StatusEffectRelayedEvent<EmoteActionEvent>>(OnEmoteAction);
|
|
}
|
|
|
|
private void OnEmote(Entity<MutedStatusEffectComponent> ent, ref StatusEffectRelayedEvent<EmoteEvent> args)
|
|
{
|
|
if (args.Args.Handled)
|
|
return;
|
|
|
|
// Still leaves the text so it looks like they are pantomiming a laugh.
|
|
if (args.Args.Emote.Category.HasFlag(EmoteCategory.Vocal))
|
|
{
|
|
args.Args = args.Args with { Handled = true };
|
|
}
|
|
}
|
|
|
|
private void OnEmoteAction(Entity<MutedStatusEffectComponent> ent, ref StatusEffectRelayedEvent<EmoteActionEvent> args)
|
|
{
|
|
if (args.Args.Handled)
|
|
return;
|
|
|
|
_popup.PopupEntity(Loc.GetString(ent.Comp.ActionPopup), args.AppliedTo, args.AppliedTo);
|
|
args.Args.Handled = true;
|
|
}
|
|
|
|
private void OnSpeakAttempt(Entity<MutedStatusEffectComponent> ent, ref StatusEffectRelayedEvent<SpeakAttemptEvent> args)
|
|
{
|
|
if (args.Args.Cancelled)
|
|
return;
|
|
|
|
var target = args.Args.Uid;
|
|
|
|
_popup.PopupEntity(Loc.GetString(ent.Comp.SpeakPopup), target, target);
|
|
|
|
args.Args.Cancel();
|
|
}
|
|
}
|