diff --git a/Content.Client/Administration/UI/CustomControls/PlayerListControl.xaml.cs b/Content.Client/Administration/UI/CustomControls/PlayerListControl.xaml.cs index 282bd29b59..72d2acabfc 100644 --- a/Content.Client/Administration/UI/CustomControls/PlayerListControl.xaml.cs +++ b/Content.Client/Administration/UI/CustomControls/PlayerListControl.xaml.cs @@ -16,10 +16,9 @@ namespace Content.Client.Administration.UI.CustomControls [GenerateTypedNameReferences] public partial class PlayerListControl : BoxContainer { - [Dependency] private readonly IPlayerManager _playerManager = default!; private readonly AdminSystem _adminSystem; - public event Action? OnSelectionChanged; + public event Action? OnSelectionChanged; public PlayerListControl() { @@ -45,7 +44,7 @@ namespace Content.Client.Administration.UI.CustomControls private void PlayerItemListOnOnItemSelected(ItemList.ItemListSelectedEventArgs obj) { - var selectedPlayer = (ICommonSession) obj.ItemList[obj.ItemIndex].Metadata!; + var selectedPlayer = (PlayerInfo) obj.ItemList[obj.ItemIndex].Metadata!; OnSelectionChanged?.Invoke(selectedPlayer); } @@ -68,7 +67,7 @@ namespace Content.Client.Administration.UI.CustomControls PlayerItemList.Add(new ItemList.Item(PlayerItemList) { - Metadata = _playerManager.SessionsDict[info.SessionId], + Metadata = info, Text = displayName }); } diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/PlayerActionsWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/PlayerActionsWindow.xaml.cs index 8988a257b0..041fc3dff3 100644 --- a/Content.Client/Administration/UI/Tabs/AdminTab/PlayerActionsWindow.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminTab/PlayerActionsWindow.xaml.cs @@ -1,4 +1,5 @@ -using JetBrains.Annotations; +using Content.Shared.Administration; +using JetBrains.Annotations; using Robust.Client.AutoGenerated; using Robust.Client.Console; using Robust.Client.UserInterface.Controls; @@ -13,7 +14,7 @@ namespace Content.Client.Administration.UI.Tabs.AdminTab [UsedImplicitly] public partial class PlayerActionsWindow : SS14Window { - private ICommonSession? _selectedSession; + private PlayerInfo? _selectedPlayer; protected override void EnteredTree() { @@ -23,10 +24,10 @@ namespace Content.Client.Administration.UI.Tabs.AdminTab PlayerList.OnSelectionChanged += OnListOnOnSelectionChanged; } - private void OnListOnOnSelectionChanged(ICommonSession? obj) + private void OnListOnOnSelectionChanged(PlayerInfo? obj) { - _selectedSession = obj; - var disableButtons = _selectedSession == null; + _selectedPlayer = obj; + var disableButtons = _selectedPlayer == null; SubmitKickButton.Disabled = disableButtons; SubmitAHelpButton.Disabled = disableButtons; SubmitRespawnButton.Disabled = disableButtons; @@ -34,26 +35,27 @@ namespace Content.Client.Administration.UI.Tabs.AdminTab private void SubmitKickButtonOnPressed(BaseButton.ButtonEventArgs obj) { - if (_selectedSession == null) + if (_selectedPlayer == null) return; IoCManager.Resolve().ExecuteCommand( - $"kick \"{_selectedSession.Name}\" \"{CommandParsing.Escape(ReasonLine.Text)}\""); + $"kick \"{_selectedPlayer.Username}\" \"{CommandParsing.Escape(ReasonLine.Text)}\""); } private void SubmitAhelpButtonOnPressed(BaseButton.ButtonEventArgs obj) { - if (_selectedSession == null) + if (_selectedPlayer == null) return; + IoCManager.Resolve().ExecuteCommand( - $"openahelp \"{_selectedSession.UserId}\""); + $"openahelp \"{_selectedPlayer.SessionId}\""); } private void SubmitRespawnButtonOnPressed(BaseButton.ButtonEventArgs obj) { - if (_selectedSession == null) + if (_selectedPlayer == null) return; IoCManager.Resolve().ExecuteCommand( - $"respawn \"{_selectedSession.Name}\""); + $"respawn \"{_selectedPlayer.Username}\""); } } } diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs index f0b044c500..c9ca5abdf7 100644 --- a/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs @@ -1,4 +1,5 @@ -using JetBrains.Annotations; +using Content.Shared.Administration; +using JetBrains.Annotations; using Robust.Client.AutoGenerated; using Robust.Client.Console; using Robust.Client.UserInterface.Controls; @@ -12,7 +13,7 @@ namespace Content.Client.Administration.UI.Tabs.AdminTab [UsedImplicitly] public partial class TeleportWindow : SS14Window { - private ICommonSession? _selectedSession; + private PlayerInfo? _selectedPlayer; protected override void EnteredTree() { @@ -20,19 +21,19 @@ namespace Content.Client.Administration.UI.Tabs.AdminTab PlayerList.OnSelectionChanged += OnListOnOnSelectionChanged; } - private void OnListOnOnSelectionChanged(ICommonSession? obj) + private void OnListOnOnSelectionChanged(PlayerInfo? obj) { - _selectedSession = obj; - SubmitButton.Disabled = _selectedSession == null; + _selectedPlayer = obj; + SubmitButton.Disabled = _selectedPlayer == null; } private void SubmitButtonOnOnPressed(BaseButton.ButtonEventArgs obj) { - if (_selectedSession == null) + if (_selectedPlayer == null) return; // Execute command IoCManager.Resolve().ExecuteCommand( - $"tpto \"{_selectedSession.Name}\""); + $"tpto \"{_selectedPlayer.Username}\""); } } } diff --git a/Content.Server/Administration/AdminSystem.cs b/Content.Server/Administration/AdminSystem.cs index c855ae4c8e..5070d2e29a 100644 --- a/Content.Server/Administration/AdminSystem.cs +++ b/Content.Server/Administration/AdminSystem.cs @@ -28,6 +28,8 @@ namespace Content.Server.Administration private void OnPlayerDetached(PlayerDetachedEvent ev) { + if(ev.Player.Status == SessionStatus.Disconnected) return; + foreach (var admin in _adminManager.ActiveAdmins) { RaiseNetworkEvent(GetChangedEvent(ev.Player), admin.ConnectedClient); @@ -36,6 +38,8 @@ namespace Content.Server.Administration private void OnPlayerAttached(PlayerAttachedEvent ev) { + if(ev.Player.Status == SessionStatus.Disconnected) return; + foreach (var admin in _adminManager.ActiveAdmins) { RaiseNetworkEvent(GetChangedEvent(ev.Player), admin.ConnectedClient);