yet another attempt at fixing the adminmenu
This commit is contained in:
@@ -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)
|
||||
@@ -97,15 +96,20 @@ namespace Content.Server.Administration
|
||||
ev.PlayersInfo.Clear();
|
||||
foreach (var session in _playerManager.GetAllPlayers())
|
||||
{
|
||||
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));
|
||||
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;
|
||||
|
||||
return new PlayerInfo(name, username, antag, uid, session.UserId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user