using Content.Server.Shuttles.Components; using Content.Shared.Shuttles.BUIStates; using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Events; namespace Content.Server.Shuttles.Systems; public sealed partial class ShuttleSystem { private void InitializeIFF() { SubscribeLocalEvent(OnIFFConsoleAnchor); SubscribeLocalEvent(OnIFFShow); SubscribeLocalEvent(OnIFFShowVessel); } private void OnIFFShow(EntityUid uid, IFFConsoleComponent component, IFFShowIFFMessage args) { if (!TryComp(uid, out var xform) || xform.GridUid == null || (component.AllowedFlags & IFFFlags.HideLabel) == 0x0) { return; } if (!args.Show) { AddIFFFlag(xform.GridUid.Value, IFFFlags.HideLabel); } else { RemoveIFFFlag(xform.GridUid.Value, IFFFlags.HideLabel); } } private void OnIFFShowVessel(EntityUid uid, IFFConsoleComponent component, IFFShowVesselMessage args) { if (!TryComp(uid, out var xform) || xform.GridUid == null || (component.AllowedFlags & IFFFlags.Hide) == 0x0) { return; } if (!args.Show) { AddIFFFlag(xform.GridUid.Value, IFFFlags.Hide); } else { RemoveIFFFlag(xform.GridUid.Value, IFFFlags.Hide); } } private void OnIFFConsoleAnchor(EntityUid uid, IFFConsoleComponent component, ref AnchorStateChangedEvent args) { // If we anchor / re-anchor then make sure flags up to date. if (!args.Anchored || !TryComp(uid, out var xform) || !TryComp(xform.GridUid, out var iff)) { _uiSystem.SetUiState(uid, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState() { AllowedFlags = component.AllowedFlags, Flags = IFFFlags.None, }); } else { _uiSystem.SetUiState(uid, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState() { AllowedFlags = component.AllowedFlags, Flags = iff.Flags, }); } } protected override void UpdateIFFInterfaces(EntityUid gridUid, IFFComponent component) { base.UpdateIFFInterfaces(gridUid, component); var query = AllEntityQuery(); while (query.MoveNext(out var uid, out var comp, out var xform)) { if (xform.GridUid != gridUid) continue; _uiSystem.SetUiState(uid, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState() { AllowedFlags = comp.AllowedFlags, Flags = component.Flags, }); } } }