PlayerPanel Follow button (#36466)

* Follow button

* remove event stuff
This commit is contained in:
Errant
2025-04-12 22:00:46 +02:00
committed by GitHub
parent 76e72893c9
commit 0c6e21dec2
6 changed files with 24 additions and 4 deletions

View File

@@ -19,12 +19,13 @@
<Label Name="SharedConnections"/> <Label Name="SharedConnections"/>
<BoxContainer Align="Center"> <BoxContainer Align="Center">
<GridContainer Rows="5"> <GridContainer Rows="6">
<Button Name="NotesButton" Text="{Loc player-panel-show-notes}" SetWidth="136" Disabled="True"/> <Button Name="NotesButton" Text="{Loc player-panel-show-notes}" SetWidth="136" Disabled="True"/>
<Button Name="AhelpButton" Text="{Loc player-panel-help}" Disabled="True"/> <Button Name="AhelpButton" Text="{Loc player-panel-help}" Disabled="True"/>
<Button Name="FreezeButton" Text = "{Loc player-panel-freeze}" Disabled="True"/> <Button Name="FreezeButton" Text = "{Loc player-panel-freeze}" Disabled="True"/>
<controls:ConfirmButton Name="KickButton" Text="{Loc player-panel-kick}" Disabled="True"/> <controls:ConfirmButton Name="KickButton" Text="{Loc player-panel-kick}" Disabled="True"/>
<controls:ConfirmButton Name="DeleteButton" Text="{Loc player-panel-delete}" Disabled="True"/> <controls:ConfirmButton Name="DeleteButton" Text="{Loc player-panel-delete}" Disabled="True"/>
<Button Name="FollowButton" Text="{Loc player-panel-follow}"/>
<Button Name="ShowBansButton" Text="{Loc player-panel-show-bans}" SetWidth="136" Disabled="True"/> <Button Name="ShowBansButton" Text="{Loc player-panel-show-bans}" SetWidth="136" Disabled="True"/>
<Button Name="LogsButton" Text="{Loc player-panel-logs}" Disabled="True"/> <Button Name="LogsButton" Text="{Loc player-panel-logs}" Disabled="True"/>
<Button Name="FreezeAndMuteToggleButton" Text="{Loc player-panel-freeze-and-mute}" Disabled="True"/> <Button Name="FreezeAndMuteToggleButton" Text="{Loc player-panel-freeze-and-mute}" Disabled="True"/>

View File

@@ -2,7 +2,6 @@ using Content.Client.Administration.Managers;
using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Controls;
using Content.Shared.Administration; using Content.Shared.Administration;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Network; using Robust.Shared.Network;
using Robust.Shared.Utility; using Robust.Shared.Utility;
@@ -21,6 +20,7 @@ public sealed partial class PlayerPanel : FancyWindow
public event Action<string?>? OnKick; public event Action<string?>? OnKick;
public event Action<NetUserId?>? OnOpenBanPanel; public event Action<NetUserId?>? OnOpenBanPanel;
public event Action<NetUserId?, bool>? OnWhitelistToggle; public event Action<NetUserId?, bool>? OnWhitelistToggle;
public event Action? OnFollow;
public event Action? OnFreezeAndMuteToggle; public event Action? OnFreezeAndMuteToggle;
public event Action? OnFreeze; public event Action? OnFreeze;
public event Action? OnLogs; public event Action? OnLogs;
@@ -47,6 +47,7 @@ public sealed partial class PlayerPanel : FancyWindow
OnWhitelistToggle?.Invoke(TargetPlayer, _isWhitelisted); OnWhitelistToggle?.Invoke(TargetPlayer, _isWhitelisted);
SetWhitelisted(!_isWhitelisted); SetWhitelisted(!_isWhitelisted);
}; };
FollowButton.OnPressed += _ => OnFollow?.Invoke();
FreezeButton.OnPressed += _ => OnFreeze?.Invoke(); FreezeButton.OnPressed += _ => OnFreeze?.Invoke();
FreezeAndMuteToggleButton.OnPressed += _ => OnFreezeAndMuteToggle?.Invoke(); FreezeAndMuteToggleButton.OnPressed += _ => OnFreezeAndMuteToggle?.Invoke();
LogsButton.OnPressed += _ => OnLogs?.Invoke(); LogsButton.OnPressed += _ => OnLogs?.Invoke();

View File

@@ -38,6 +38,7 @@ public sealed class PlayerPanelEui : BaseEui
PlayerPanel.OnLogs += () => SendMessage(new PlayerPanelLogsMessage()); PlayerPanel.OnLogs += () => SendMessage(new PlayerPanelLogsMessage());
PlayerPanel.OnRejuvenate += () => SendMessage(new PlayerPanelRejuvenationMessage()); PlayerPanel.OnRejuvenate += () => SendMessage(new PlayerPanelRejuvenationMessage());
PlayerPanel.OnDelete+= () => SendMessage(new PlayerPanelDeleteMessage()); PlayerPanel.OnDelete+= () => SendMessage(new PlayerPanelDeleteMessage());
PlayerPanel.OnFollow += () => SendMessage(new PlayerPanelFollowMessage());
PlayerPanel.OnClose += () => SendMessage(new CloseEuiMessage()); PlayerPanel.OnClose += () => SendMessage(new CloseEuiMessage());
} }

View File

@@ -8,6 +8,7 @@ using Content.Server.EUI;
using Content.Shared.Administration; using Content.Shared.Administration;
using Content.Shared.Database; using Content.Shared.Database;
using Content.Shared.Eui; using Content.Shared.Eui;
using Content.Shared.Follower;
using Robust.Server.Player; using Robust.Server.Player;
using Robust.Shared.Player; using Robust.Shared.Player;
@@ -33,11 +34,13 @@ public sealed class PlayerPanelEui : BaseEui
private bool _frozen; private bool _frozen;
private bool _canFreeze; private bool _canFreeze;
private bool _canAhelp; private bool _canAhelp;
private FollowerSystem _follower;
public PlayerPanelEui(LocatedPlayerData player) public PlayerPanelEui(LocatedPlayerData player)
{ {
IoCManager.InjectDependencies(this); IoCManager.InjectDependencies(this);
_targetPlayer = player; _targetPlayer = player;
_follower = _entity.System<FollowerSystem>();
} }
public override void Opened() public override void Opened()
@@ -141,6 +144,16 @@ public sealed class PlayerPanelEui : BaseEui
_entity.DeleteEntity(session.AttachedEntity); _entity.DeleteEntity(session.AttachedEntity);
} }
break; break;
case PlayerPanelFollowMessage:
if (!_admins.HasAdminFlag(Player, AdminFlags.Admin) ||
!_player.TryGetSessionById(_targetPlayer.UserId, out session) ||
session.AttachedEntity == null ||
Player.AttachedEntity is null ||
session.AttachedEntity == Player.AttachedEntity)
return;
_follower.StartFollowingEntity(Player.AttachedEntity.Value, session.AttachedEntity.Value);
break;
} }
} }

View File

@@ -1,12 +1,12 @@
using Content.Shared.Eui; using Content.Shared.Eui;
using Robust.Shared.Network; using Robust.Shared.Network;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using YamlDotNet.Serialization.Callbacks;
namespace Content.Shared.Administration; namespace Content.Shared.Administration;
[Serializable, NetSerializable] [Serializable, NetSerializable]
public sealed class PlayerPanelEuiState(NetUserId guid, public sealed class PlayerPanelEuiState(
NetUserId guid,
string username, string username,
TimeSpan playtime, TimeSpan playtime,
int? totalNotes, int? totalNotes,
@@ -52,3 +52,6 @@ public sealed class PlayerPanelDeleteMessage : EuiMessageBase;
[Serializable, NetSerializable] [Serializable, NetSerializable]
public sealed class PlayerPanelRejuvenationMessage: EuiMessageBase; public sealed class PlayerPanelRejuvenationMessage: EuiMessageBase;
[Serializable, NetSerializable]
public sealed class PlayerPanelFollowMessage: EuiMessageBase;

View File

@@ -21,3 +21,4 @@ player-panel-delete = Delete
player-panel-rejuvenate = Rejuvenate player-panel-rejuvenate = Rejuvenate
player-panel-false = False player-panel-false = False
player-panel-true = True player-panel-true = True
player-panel-follow = Follow