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:
Exp
2020-08-18 14:29:13 +02:00
committed by GitHub
parent fc0c9c7a04
commit bbdfe44224
7 changed files with 144 additions and 10 deletions

View File

@@ -5,6 +5,7 @@ using Content.Client.Interfaces.Chat;
using Content.Client.Interfaces.Parallax;
using Content.Client.Parallax;
using Content.Client.Sandbox;
using Content.Client.StationEvents;
using Content.Client.UserInterface;
using Content.Client.UserInterface.Stylesheets;
using Content.Client.Utility;
@@ -31,6 +32,7 @@ namespace Content.Client
IoCManager.Register<IStylesheetManager, StylesheetManager>();
IoCManager.Register<IScreenshotHook, ScreenshotHook>();
IoCManager.Register<IClickMapManager, ClickMapManager>();
IoCManager.Register<IStationEventManager, StationEventManager>();
}
}
}

View File

@@ -7,6 +7,7 @@ using Content.Client.Interfaces.Parallax;
using Content.Client.Parallax;
using Content.Client.Sandbox;
using Content.Client.State;
using Content.Client.StationEvents;
using Content.Client.UserInterface;
using Content.Client.UserInterface.Stylesheets;
using Content.Shared.GameObjects.Components;
@@ -150,6 +151,7 @@ namespace Content.Client
IoCManager.Resolve<IChatManager>().Initialize();
IoCManager.Resolve<ISandboxManager>().Initialize();
IoCManager.Resolve<IClientPreferencesManager>().Initialize();
IoCManager.Resolve<IStationEventManager>().Initialize();
_baseClient.RunLevelChanged += (sender, args) =>
{

View File

@@ -0,0 +1,13 @@
#nullable enable
using System;
using System.Collections.Generic;
namespace Content.Client.StationEvents
{
public interface IStationEventManager
{
public List<string>? StationEvents { get; }
public void Initialize();
public event Action OnStationEventsReceived;
}
}

View 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>());
}
}
}