yet another attempt at fixing the adminmenu
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user