using System.Numerics; using Content.Server.UserInterface; using Content.Shared.Shuttles.BUIStates; using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Systems; using Robust.Server.GameObjects; using Robust.Shared.Map; namespace Content.Server.Shuttles.Systems; public sealed class RadarConsoleSystem : SharedRadarConsoleSystem { [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnRadarStartup); } private void OnRadarStartup(EntityUid uid, RadarConsoleComponent component, ComponentStartup args) { UpdateState(uid, component); } protected override void UpdateState(EntityUid uid, RadarConsoleComponent component) { var xform = Transform(uid); var onGrid = xform.ParentUid == xform.GridUid; EntityCoordinates? coordinates = onGrid ? xform.Coordinates : null; Angle? angle = onGrid ? xform.LocalRotation : null; // Use ourself I guess. if (TryComp(uid, out var intrinsic)) { foreach (var uiKey in intrinsic.UIs) { if (uiKey.Key?.Equals(RadarConsoleUiKey.Key) == true) { coordinates = new EntityCoordinates(uid, Vector2.Zero); angle = Angle.Zero; break; } } } if (_uiSystem.TryGetUi(uid, RadarConsoleUiKey.Key, out var bui)) _uiSystem.SetUiState(bui, new RadarConsoleBoundInterfaceState( component.MaxRange, GetNetCoordinates(coordinates), angle, new List() )); } }