using Content.Server.Administration.Managers;
using Content.Shared.Administration;
using Robust.Server.Player;
using Robust.Shared.Network;
using Robust.Shared.Prototypes;
using Robust.Shared.Replays;
using Robust.Shared.Serialization.Markdown.Mapping;
namespace Content.Server.Administration;
///
/// Manages sending runtime-loaded prototypes from game staff to clients.
///
public sealed class GamePrototypeLoadManager : IGamePrototypeLoadManager
{
[Dependency] private readonly IReplayRecordingManager _replay = default!;
[Dependency] private readonly IServerNetManager _netManager = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ILocalizationManager _localizationManager = default!;
private readonly List _loadedPrototypes = new();
public IReadOnlyList LoadedPrototypes => _loadedPrototypes;
public void Initialize()
{
_netManager.RegisterNetMessage(ClientLoadsPrototype);
_netManager.Connected += NetManagerOnConnected;
_replay.OnRecordingStarted += OnStartReplayRecording;
}
private void OnStartReplayRecording((MappingDataNode, List