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
This commit is contained in:
42
Content.Client/StationEvents/StationEventManager.cs
Normal file
42
Content.Client/StationEvents/StationEventManager.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
#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>());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user