| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using Content.Shared.Silicons.StationAi;
- using Robust.Client.Graphics;
- using Robust.Client.Player;
- using Robust.Shared.Player;
- namespace Content.Client.Silicons.StationAi;
- public sealed partial class StationAiSystem : SharedStationAiSystem
- {
- [Dependency] private readonly IOverlayManager _overlayMgr = default!;
- [Dependency] private readonly IPlayerManager _player = default!;
- private StationAiOverlay? _overlay;
- public override void Initialize()
- {
- base.Initialize();
- InitializeAirlock();
- InitializePowerToggle();
- SubscribeLocalEvent<StationAiOverlayComponent, LocalPlayerAttachedEvent>(OnAiAttached);
- SubscribeLocalEvent<StationAiOverlayComponent, LocalPlayerDetachedEvent>(OnAiDetached);
- SubscribeLocalEvent<StationAiOverlayComponent, ComponentInit>(OnAiOverlayInit);
- SubscribeLocalEvent<StationAiOverlayComponent, ComponentRemove>(OnAiOverlayRemove);
- }
- private void OnAiOverlayInit(Entity<StationAiOverlayComponent> ent, ref ComponentInit args)
- {
- var attachedEnt = _player.LocalEntity;
- if (attachedEnt != ent.Owner)
- return;
- AddOverlay();
- }
- private void OnAiOverlayRemove(Entity<StationAiOverlayComponent> ent, ref ComponentRemove args)
- {
- var attachedEnt = _player.LocalEntity;
- if (attachedEnt != ent.Owner)
- return;
- RemoveOverlay();
- }
- private void AddOverlay()
- {
- if (_overlay != null)
- return;
- _overlay = new StationAiOverlay();
- _overlayMgr.AddOverlay(_overlay);
- }
- private void RemoveOverlay()
- {
- if (_overlay == null)
- return;
- _overlayMgr.RemoveOverlay(_overlay);
- _overlay = null;
- }
- private void OnAiAttached(Entity<StationAiOverlayComponent> ent, ref LocalPlayerAttachedEvent args)
- {
- AddOverlay();
- }
- private void OnAiDetached(Entity<StationAiOverlayComponent> ent, ref LocalPlayerDetachedEvent args)
- {
- RemoveOverlay();
- }
- public override void Shutdown()
- {
- base.Shutdown();
- _overlayMgr.RemoveOverlay<StationAiOverlay>();
- }
- }
|