From d747fa98f8d62344aeab379731c43335341bfc16 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 26 May 2024 00:46:41 -0400 Subject: [PATCH] actually fix magic mirrors (#28282) --- .../MagicMirror/MagicMirrorSystem.cs | 32 +++++-------------- .../MagicMirror/SharedMagicMirrorSystem.cs | 21 ++++++++++-- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Content.Server/MagicMirror/MagicMirrorSystem.cs b/Content.Server/MagicMirror/MagicMirrorSystem.cs index fc1bff9756..8d8a6bfa3b 100644 --- a/Content.Server/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Server/MagicMirror/MagicMirrorSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Server.DoAfter; using Content.Server.Humanoid; -using Content.Shared.UserInterface; using Content.Shared.DoAfter; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; @@ -24,7 +23,6 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnOpenUIAttempt); Subs.BuiEvents(MagicMirrorUiKey.Key, subs => @@ -36,7 +34,6 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem subs.Event(OnTryMagicMirrorRemoveSlot); }); - SubscribeLocalEvent(OnMagicMirrorInteract); SubscribeLocalEvent(OnSelectSlotDoAfter); SubscribeLocalEvent(OnChangeColorDoAfter); @@ -44,23 +41,6 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem SubscribeLocalEvent(OnAddSlotDoAfter); } - private void OnMagicMirrorInteract(Entity mirror, ref AfterInteractEvent args) - { - if (!args.CanReach || args.Target == null) - return; - - if (!_uiSystem.TryOpenUi(mirror.Owner, MagicMirrorUiKey.Key, args.User)) - return; - - UpdateInterface(mirror.Owner, args.Target.Value, mirror.Comp); - } - - private void OnOpenUIAttempt(EntityUid uid, MagicMirrorComponent mirror, ActivatableUIOpenAttemptEvent args) - { - if (!HasComp(args.User)) - args.Cancel(); - } - private void OnMagicMirrorSelect(EntityUid uid, MagicMirrorComponent component, MagicMirrorSelectMessage message) { if (component.Target is not { } target) @@ -83,7 +63,8 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem BreakOnMove = true, BreakOnHandChange = false, NeedHand = true - }, out var doAfterId); + }, + out var doAfterId); component.DoAfter = doAfterId; _audio.PlayPvs(component.ChangeHairSound, uid); @@ -137,7 +118,8 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem BreakOnMove = true, BreakOnHandChange = false, NeedHand = true - }, out var doAfterId); + }, + out var doAfterId); component.DoAfter = doAfterId; } @@ -189,7 +171,8 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem BreakOnDamage = true, BreakOnHandChange = false, NeedHand = true - }, out var doAfterId); + }, + out var doAfterId); component.DoAfter = doAfterId; _audio.PlayPvs(component.ChangeHairSound, uid); @@ -241,7 +224,8 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem BreakOnMove = true, BreakOnHandChange = false, NeedHand = true - }, out var doAfterId); + }, + out var doAfterId); component.DoAfter = doAfterId; _audio.PlayPvs(component.ChangeHairSound, uid); diff --git a/Content.Shared/MagicMirror/SharedMagicMirrorSystem.cs b/Content.Shared/MagicMirror/SharedMagicMirrorSystem.cs index 433ad6b4fc..ea96d504c6 100644 --- a/Content.Shared/MagicMirror/SharedMagicMirrorSystem.cs +++ b/Content.Shared/MagicMirror/SharedMagicMirrorSystem.cs @@ -11,15 +11,27 @@ namespace Content.Shared.MagicMirror; public abstract class SharedMagicMirrorSystem : EntitySystem { [Dependency] private readonly SharedInteractionSystem _interaction = default!; - [Dependency] protected readonly SharedUserInterfaceSystem _uiSystem = default!; + [Dependency] protected readonly SharedUserInterfaceSystem UISystem = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnMagicMirrorInteract); SubscribeLocalEvent(OnBeforeUIOpen); SubscribeLocalEvent(OnMirrorRangeCheck); } + private void OnMagicMirrorInteract(Entity mirror, ref AfterInteractEvent args) + { + if (!args.CanReach || args.Target == null) + return; + + if (!UISystem.TryOpenUi(mirror.Owner, MagicMirrorUiKey.Key, args.User)) + return; + + UpdateInterface(mirror, args.Target.Value, mirror); + } + private void OnMirrorRangeCheck(EntityUid uid, MagicMirrorComponent component, ref BoundUserInterfaceCheckRangeEvent args) { if (args.Result == BoundUserInterfaceRangeResult.Fail) @@ -33,7 +45,9 @@ public abstract class SharedMagicMirrorSystem : EntitySystem private void OnBeforeUIOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) { - ent.Comp.Target ??= args.User; + if (args.User != ent.Comp.Target && ent.Comp.Target != null) + return; + UpdateInterface(ent, args.User, ent); } @@ -41,6 +55,7 @@ public abstract class SharedMagicMirrorSystem : EntitySystem { if (!TryComp(targetUid, out var humanoid)) return; + component.Target ??= targetUid; var hair = humanoid.MarkingSet.TryGetCategory(MarkingCategories.Hair, out var hairMarkings) ? new List(hairMarkings) @@ -59,7 +74,7 @@ public abstract class SharedMagicMirrorSystem : EntitySystem // TODO: Component states component.Target = targetUid; - _uiSystem.SetUiState(mirrorUid, MagicMirrorUiKey.Key, state); + UISystem.SetUiState(mirrorUid, MagicMirrorUiKey.Key, state); Dirty(mirrorUid, component); } } -- 2.51.2