Files
tbd-station-14/Content.Client/StationEvents/StationEventManager.cs
Exp bbdfe44224 Admins can get a list of the StationEvents (#1670)
* -GetStationEventsMsg
-Fixed random in events help

* Don't send on connect

* Delete StationEvents on disconnect

* Resolve IClientNetManager when needed

* :smilethink:

* Remove setter

* Removed unused imports

* Don't resolve twice

* Add Event
2020-08-18 14:29:13 +02:00

43 lines
1.3 KiB
C#

#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<string>? _events;
public List<string>? StationEvents
{
get
{
if (_events == null)
RequestEvents();
return _events;
}
}
public event Action? OnStationEventsReceived;
public void Initialize()
{
var netManager = IoCManager.Resolve<IClientNetManager>();
netManager.RegisterNetMessage<MsgGetStationEvents>(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<IClientNetManager>();
netManager.ClientSendMessage(netManager.CreateNetMessage<MsgGetStationEvents>());
}
}
}