#nullable enable using Content.Shared.StationEvents; using Robust.Shared.Interfaces.Network; using Robust.Shared.IoC; using System; using System.Collections.Generic; namespace Content.Client.StationEvents { class StationEventManager : SharedStationEvent, IStationEventManager { private List? _events; public List? StationEvents { get { if (_events == null) RequestEvents(); return _events; } } public event Action? OnStationEventsReceived; public void Initialize() { var netManager = IoCManager.Resolve(); netManager.RegisterNetMessage(nameof(MsgGetStationEvents), EventHandler); netManager.Disconnect += (sender, msg) => _events = null; } private void EventHandler(MsgGetStationEvents msg) { _events = msg.Events; OnStationEventsReceived?.Invoke(); } public void RequestEvents() { var netManager = IoCManager.Resolve(); netManager.ClientSendMessage(netManager.CreateNetMessage()); } } }