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:
@@ -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>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) =>
|
||||
{
|
||||
|
||||
13
Content.Client/StationEvents/IStationEventManager.cs
Normal file
13
Content.Client/StationEvents/IStationEventManager.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
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