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