| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using Content.Server.Shuttles.Components;
- using Content.Shared.CCVar;
- 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<IFFConsoleComponent, AnchorStateChangedEvent>(OnIFFConsoleAnchor);
- SubscribeLocalEvent<IFFConsoleComponent, IFFShowIFFMessage>(OnIFFShow);
- SubscribeLocalEvent<IFFConsoleComponent, IFFShowVesselMessage>(OnIFFShowVessel);
- SubscribeLocalEvent<GridSplitEvent>(OnGridSplit);
- }
- private void OnGridSplit(ref GridSplitEvent ev)
- {
- var splitMass = _cfg.GetCVar(CCVars.HideSplitGridsUnder);
- if (splitMass < 0)
- return;
- foreach (var grid in ev.NewGrids)
- {
- if (!_physicsQuery.TryGetComponent(grid, out var physics) ||
- physics.Mass > splitMass)
- {
- continue;
- }
- AddIFFFlag(grid, IFFFlags.HideLabel);
- }
- }
- private void OnIFFShow(EntityUid uid, IFFConsoleComponent component, IFFShowIFFMessage args)
- {
- if (!TryComp(uid, out TransformComponent? 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 TransformComponent? 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 TransformComponent? xform) ||
- !TryComp<IFFComponent>(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<IFFConsoleComponent, TransformComponent>();
- 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,
- });
- }
- }
- }
|