]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix admin objects tab (#39832)
authorslarticodefast <161409025+slarticodefast@users.noreply.github.com>
Fri, 22 Aug 2025 22:37:51 +0000 (00:37 +0200)
committerGitHub <noreply@github.com>
Fri, 22 Aug 2025 22:37:51 +0000 (15:37 -0700)
fix objects tab

Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml

index de9ccbbf50ce5e44c4b795c9b62f11d499ff1b51..fa92a3e18fb775a38aeaa3f14bb802512d2c0092 100644 (file)
@@ -57,12 +57,43 @@ public sealed partial class ObjectsTab : Control
 
     private void TeleportTo(NetEntity nent)
     {
-        _console.ExecuteCommand($"tpto {nent}");
+        var selection = _selections[ObjectTypeOptions.SelectedId];
+        switch (selection)
+        {
+            case ObjectsTabSelection.Grids:
+                {
+                    // directly teleport to the entity
+                    _console.ExecuteCommand($"tpto {nent}");
+                }
+                break;
+            case ObjectsTabSelection.Maps:
+                {
+                    // teleport to the map, not to the map entity (which is in nullspace)
+                    if (!_entityManager.TryGetEntity(nent, out var map) || !_entityManager.TryGetComponent<MapComponent>(map, out var mapComp))
+                        break;
+                    _console.ExecuteCommand($"tp 0 0 {mapComp.MapId}");
+                    break;
+                }
+            case ObjectsTabSelection.Stations:
+                {
+                    // teleport to the station's largest grid, not to the station entity (which is in nullspace)
+                    if (!_entityManager.TryGetEntity(nent, out var station))
+                        break;
+                    var largestGrid = _entityManager.EntitySysManager.GetEntitySystem<StationSystem>().GetLargestGrid(station.Value);
+                    if (largestGrid == null)
+                        break;
+                    _console.ExecuteCommand($"tpto {largestGrid.Value}");
+                    break;
+                }
+            default:
+                throw new NotImplementedException();
+        }
     }
 
     private void Delete(NetEntity nent)
     {
         _console.ExecuteCommand($"delete {nent}");
+        RefreshObjectList();
     }
 
     public void RefreshObjectList()
@@ -79,25 +110,21 @@ public sealed partial class ObjectsTab : Control
                 entities.AddRange(_entityManager.EntitySysManager.GetEntitySystem<StationSystem>().GetStationNames());
                 break;
             case ObjectsTabSelection.Grids:
-            {
-                var query = _entityManager.AllEntityQueryEnumerator<MapGridComponent, MetaDataComponent>();
-                while (query.MoveNext(out var uid, out _, out var metadata))
                 {
-                    entities.Add((metadata.EntityName, _entityManager.GetNetEntity(uid)));
-                }
+                    var query = _entityManager.AllEntityQueryEnumerator<MapGridComponent, MetaDataComponent>();
+                    while (query.MoveNext(out var uid, out _, out var metadata))
+                        entities.Add((metadata.EntityName, _entityManager.GetNetEntity(uid)));
 
-                break;
-            }
+                    break;
+                }
             case ObjectsTabSelection.Maps:
-            {
-                var query = _entityManager.AllEntityQueryEnumerator<MapComponent, MetaDataComponent>();
-                while (query.MoveNext(out var uid, out _, out var metadata))
                 {
-                    entities.Add((metadata.EntityName, _entityManager.GetNetEntity(uid)));
-                }
+                    var query = _entityManager.AllEntityQueryEnumerator<MapComponent, MetaDataComponent>();
+                    while (query.MoveNext(out var uid, out _, out var metadata))
+                        entities.Add((metadata.EntityName, _entityManager.GetNetEntity(uid)));
 
-                break;
-            }
+                    break;
+                }
             default:
                 throw new ArgumentOutOfRangeException(nameof(selection), selection, null);
         }
index c561125a30c7d28fdb4a0e1ad7791a03b0e1f997..7c9dde79b58270fb7d20f09498c8a95a4906bfa0 100644 (file)
@@ -1,5 +1,6 @@
 <PanelContainer xmlns="https://spacestation14.io"
                 xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls"
+                xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
                 Name="BackgroundColorPanel">
     <BoxContainer Orientation="Horizontal"
                   HorizontalExpand="True"
@@ -20,7 +21,7 @@
                HorizontalExpand="True"
                ClipText="True"/>
         <customControls:VSeparator/>
-        <Button Name="DeleteButton"
+        <controls:ConfirmButton Name="DeleteButton"
                 Text="{Loc object-tab-entity-delete}"
                 SizeFlagsStretchRatio="3"
                 HorizontalExpand="True"