| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using System.Numerics;
- using Content.Server.UserInterface;
- using Content.Shared.Shuttles.BUIStates;
- using Content.Shared.Shuttles.Components;
- using Content.Shared.Shuttles.Systems;
- using Content.Shared.PowerCell;
- using Content.Shared.Movement.Components;
- using Robust.Server.GameObjects;
- using Robust.Shared.Map;
- namespace Content.Server.Shuttles.Systems;
- public sealed class RadarConsoleSystem : SharedRadarConsoleSystem
- {
- [Dependency] private readonly ShuttleConsoleSystem _console = default!;
- [Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
- public override void Initialize()
- {
- base.Initialize();
- SubscribeLocalEvent<RadarConsoleComponent, ComponentStartup>(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;
- if (component.FollowEntity)
- {
- coordinates = new EntityCoordinates(uid, Vector2.Zero);
- angle = Angle.Zero;
- }
- if (_uiSystem.HasUi(uid, RadarConsoleUiKey.Key))
- {
- NavInterfaceState state;
- var docks = _console.GetAllDocks();
- if (coordinates != null && angle != null)
- {
- state = _console.GetNavState(uid, docks, coordinates.Value, angle.Value);
- }
- else
- {
- state = _console.GetNavState(uid, docks);
- }
- state.RotateWithEntity = !component.FollowEntity;
- _uiSystem.SetUiState(uid, RadarConsoleUiKey.Key, new NavBoundUserInterfaceState(state));
- }
- }
- }
|