yet another attempt at fixing the adminmenu

This commit is contained in:
Paul
2021-11-11 00:03:03 +01:00
parent aeffabbea4
commit 3f6b9b0d8e

View File

@@ -22,10 +22,17 @@ namespace Content.Server.Administration
base.Initialize(); base.Initialize();
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged; _playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
_adminManager.OnPermsChanged += OnAdminPermsChanged;
SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttached); SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttached);
SubscribeLocalEvent<PlayerDetachedEvent>(OnPlayerDetached); SubscribeLocalEvent<PlayerDetachedEvent>(OnPlayerDetached);
} }
private void OnAdminPermsChanged(AdminPermsChangedEventArgs obj)
{
if(!obj.IsAdmin) return;
SendFullPlayerList(obj.Player);
}
private void OnPlayerDetached(PlayerDetachedEvent ev) private void OnPlayerDetached(PlayerDetachedEvent ev)
{ {
if(ev.Player.Status == SessionStatus.Disconnected) return; if(ev.Player.Status == SessionStatus.Disconnected) return;
@@ -50,17 +57,14 @@ namespace Content.Server.Administration
{ {
base.Shutdown(); base.Shutdown();
_playerManager.PlayerStatusChanged -= OnPlayerStatusChanged; _playerManager.PlayerStatusChanged -= OnPlayerStatusChanged;
_adminManager.OnPermsChanged -= OnAdminPermsChanged;
} }
private PlayerInfoChangedEvent GetChangedEvent(IPlayerSession session) private PlayerInfoChangedEvent GetChangedEvent(IPlayerSession session)
{ {
return new() return new()
{ {
PlayerInfo = new PlayerInfo( PlayerInfo = GetPlayerInfo(session),
session.Name, session.AttachedEntity?.Name ?? string.Empty,
session.ContentData()?.Mind?.AllRoles.Any(r => r.Antagonist) ?? false,
session.AttachedEntity?.Uid ?? EntityUid.Invalid,
session.UserId),
}; };
} }
@@ -84,11 +88,6 @@ namespace Content.Server.Administration
{ {
RaiseNetworkEvent(args, admin.ConnectedClient); RaiseNetworkEvent(args, admin.ConnectedClient);
} }
if (e.NewStatus != SessionStatus.Disconnected && _adminManager.IsAdmin(e.Session, true))
{
SendFullPlayerList(e.Session);
}
} }
private void SendFullPlayerList(IPlayerSession playerSession) private void SendFullPlayerList(IPlayerSession playerSession)
@@ -97,15 +96,20 @@ namespace Content.Server.Administration
ev.PlayersInfo.Clear(); ev.PlayersInfo.Clear();
foreach (var session in _playerManager.GetAllPlayers()) foreach (var session in _playerManager.GetAllPlayers())
{ {
var name = session.Name; ev.PlayersInfo.Add(GetPlayerInfo(session));
var username = session.AttachedEntity?.Name ?? string.Empty;
var antag = session.ContentData()?.Mind?.AllRoles.Any(r => r.Antagonist) ?? false;
var uid = session.AttachedEntity?.Uid ?? EntityUid.Invalid;
ev.PlayersInfo.Add(new PlayerInfo(name, username, antag, uid, session.UserId));
} }
RaiseNetworkEvent(ev, playerSession.ConnectedClient); RaiseNetworkEvent(ev, playerSession.ConnectedClient);
} }
private PlayerInfo GetPlayerInfo(IPlayerSession session)
{
var name = session.Name;
var username = session.AttachedEntity?.Name ?? string.Empty;
var antag = session.ContentData()?.Mind?.AllRoles.Any(r => r.Antagonist) ?? false;
var uid = session.AttachedEntity?.Uid ?? EntityUid.Invalid;
return new PlayerInfo(name, username, antag, uid, session.UserId);
}
} }
} }