diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
index 7082617c94..4b50771b0f 100644
--- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
+++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
@@ -1,19 +1,21 @@
+using Content.Client.Administration.Managers;
using Content.Client.Station;
using Content.Client.UserInterface.Controls;
using Robust.Client.AutoGenerated;
+using Robust.Client.Console;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
-using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Map.Components;
-using Robust.Shared.Timing;
namespace Content.Client.Administration.UI.Tabs.ObjectsTab;
[GenerateTypedNameReferences]
public sealed partial class ObjectsTab : Control
{
+ [Dependency] private readonly IClientAdminManager _admin = default!;
[Dependency] private readonly IEntityManager _entityManager = default!;
+ [Dependency] private readonly IClientConsoleHost _console = default!;
private readonly Color _altColor = Color.FromHex("#292B38");
private readonly Color _defaultColor = Color.FromHex("#2F2F3B");
@@ -49,10 +51,20 @@ public sealed partial class ObjectsTab : Control
RefreshListButton.OnPressed += _ => RefreshObjectList();
var defaultSelection = ObjectsTabSelection.Grids;
- ObjectTypeOptions.SelectId((int) defaultSelection);
+ ObjectTypeOptions.SelectId((int)defaultSelection);
RefreshObjectList(defaultSelection);
}
+ private void TeleportTo(NetEntity nent)
+ {
+ _console.ExecuteCommand($"tpto {nent}");
+ }
+
+ private void Delete(NetEntity nent)
+ {
+ _console.ExecuteCommand($"delete {nent}");
+ }
+
public void RefreshObjectList()
{
RefreshObjectList(_selections[ObjectTypeOptions.SelectedId]);
@@ -116,9 +128,9 @@ public sealed partial class ObjectsTab : Control
if (data is not ObjectsListData { Info: var info, BackgroundColor: var backgroundColor })
return;
- var entry = new ObjectsTabEntry(info.Name,
- info.Entity,
- new StyleBoxFlat { BackgroundColor = backgroundColor });
+ var entry = new ObjectsTabEntry(_admin, info.Name, info.Entity, new StyleBoxFlat { BackgroundColor = backgroundColor });
+ entry.OnTeleport += TeleportTo;
+ entry.OnDelete += Delete;
button.ToolTip = $"{info.Name}, {info.Entity}";
button.AddChild(entry);
diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml
index 83c4cc5697..c561125a30 100644
--- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml
+++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml
@@ -5,13 +5,25 @@
HorizontalExpand="True"
SeparationOverride="4">
+
+
+
+
diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml.cs b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml.cs
index aab06c6ccd..29774bb587 100644
--- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml.cs
+++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml.cs
@@ -1,4 +1,5 @@
-using Robust.Client.AutoGenerated;
+using Content.Client.Administration.Managers;
+using Robust.Client.AutoGenerated;
using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
@@ -10,12 +11,22 @@ public sealed partial class ObjectsTabEntry : PanelContainer
{
public NetEntity AssocEntity;
- public ObjectsTabEntry(string name, NetEntity nent, StyleBox styleBox)
+ public Action? OnTeleport;
+ public Action? OnDelete;
+
+ public ObjectsTabEntry(IClientAdminManager manager, string name, NetEntity nent, StyleBox styleBox)
{
RobustXamlLoader.Load(this);
+
AssocEntity = nent;
EIDLabel.Text = nent.ToString();
NameLabel.Text = name;
BackgroundColorPanel.PanelOverride = styleBox;
+
+ TeleportButton.Disabled = !manager.CanCommand("tpto");
+ DeleteButton.Disabled = !manager.CanCommand("delete");
+
+ TeleportButton.OnPressed += _ => OnTeleport?.Invoke(nent);
+ DeleteButton.OnPressed += _ => OnDelete?.Invoke(nent);
}
}
diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabHeader.xaml b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabHeader.xaml
index 71a1f5c7bc..2cc7d76180 100644
--- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabHeader.xaml
+++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabHeader.xaml
@@ -5,17 +5,23 @@
HorizontalExpand="True"
SeparationOverride="4">
+
+
diff --git a/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl
index da84ea4f16..3f49a4ad9c 100644
--- a/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl
+++ b/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl
@@ -8,3 +8,6 @@ object-tab-object-type-grids = Grids
object-tab-object-type-maps = Maps
object-tab-object-type-stations = Stations
object-tab-refresh-button = Refresh
+
+object-tab-entity-teleport = Teleport
+object-tab-entity-delete = Delete