actually fix magic mirrors (#28282)

This commit is contained in:
Nemanja
2024-05-26 00:46:41 -04:00
committed by GitHub
parent b177fb8179
commit d747fa98f8
2 changed files with 26 additions and 27 deletions

View File

@@ -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<MagicMirrorComponent, AfterInteractEvent>(OnMagicMirrorInteract);
SubscribeLocalEvent<MagicMirrorComponent, BeforeActivatableUIOpenEvent>(OnBeforeUIOpen);
SubscribeLocalEvent<MagicMirrorComponent, BoundUserInterfaceCheckRangeEvent>(OnMirrorRangeCheck);
}
private void OnMagicMirrorInteract(Entity<MagicMirrorComponent> 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<MagicMirrorComponent> 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<HumanoidAppearanceComponent>(targetUid, out var humanoid))
return;
component.Target ??= targetUid;
var hair = humanoid.MarkingSet.TryGetCategory(MarkingCategories.Hair, out var hairMarkings)
? new List<Marking>(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);
}
}