]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Default warp point names (#21017)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Mon, 16 Oct 2023 05:39:39 +0000 (16:39 +1100)
committerGitHub <noreply@github.com>
Mon, 16 Oct 2023 05:39:39 +0000 (16:39 +1100)
Content.Server/Administration/Commands/WarpCommand.cs
Content.Server/Ghost/GhostSystem.cs
Content.Server/Ninja/Systems/SpaceNinjaSystem.cs
Content.Server/Objectives/Systems/NinjaConditionsSystem.cs
Content.Server/Warps/WarpPointComponent.cs
Resources/Prototypes/Entities/Markers/warp_point.yml

index 5c61208b5b26c3a082b39e3ddc0ba175c9130b8d..30a6d127aa36bc597240b7e3d8e3f3c5dbafc5a6 100644 (file)
@@ -59,9 +59,7 @@ namespace Content.Server.Administration.Commands
                 var currentMap = _entManager.GetComponent<TransformComponent>(playerEntity).MapID;
                 var currentGrid = _entManager.GetComponent<TransformComponent>(playerEntity).GridUid;
 
-                var found = _entManager.EntityQuery<WarpPointComponent>(true)
-                    .Where(p => p.Location == location)
-                    .Select(p => (_entManager.GetComponent<TransformComponent>(p.Owner).Coordinates, p.Follow))
+                var found = GetWarpPointByName(location)
                     .OrderBy(p => p.Item1, Comparer<EntityCoordinates>.Create((a, b) =>
                     {
                         // Sort so that warp points on the same grid/map are first.
@@ -133,11 +131,28 @@ namespace Content.Server.Administration.Commands
 
         private IEnumerable<string> GetWarpPointNames()
         {
-            return _entManager.EntityQuery<WarpPointComponent>(true)
-                .Select(p => p.Location)
-                .Where(p => p != null)
-                .OrderBy(p => p)
-                .Distinct()!;
+            List<string> points = new(_entManager.Count<WarpPointComponent>());
+            var query = _entManager.AllEntityQueryEnumerator<WarpPointComponent, MetaDataComponent>();
+            while (query.MoveNext(out _, out var warp, out var meta))
+            {
+                points.Add(warp.Location ?? meta.EntityName);
+            }
+
+            points.Sort();
+            return points;
+        }
+
+        private List<(EntityCoordinates, bool)> GetWarpPointByName(string name)
+        {
+            List<(EntityCoordinates, bool)> points = new();
+            var query = _entManager.AllEntityQueryEnumerator<WarpPointComponent, MetaDataComponent, TransformComponent>();
+            while (query.MoveNext(out var uid, out var warp, out var meta, out var xform))
+            {
+                if (name == (warp.Location ?? meta.EntityName))
+                    points.Add((xform.Coordinates, warp.Follow));
+            }
+
+            return points;
         }
 
         public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
index 78818039017be10462354671b95b26dc2ee6f437..064e25957a16efbfbcef56efb02758ace67fa48d 100644 (file)
@@ -297,8 +297,7 @@ namespace Content.Server.Ghost
 
             while (allQuery.MoveNext(out var uid, out var warp))
             {
-                if (warp.Location != null)
-                    yield return new GhostWarp(GetNetEntity(uid), warp.Location, true);
+                yield return new GhostWarp(GetNetEntity(uid), warp.Location ?? Name(uid), true);
             }
         }
 
index 8f19850c70cdeadaef5589eca2590e0b4d60e5fb..6de2d7dee00314105181d0dcb63821585a2ef9ca 100644 (file)
@@ -170,12 +170,10 @@ public sealed class SpaceNinjaSystem : SharedSpaceNinjaSystem
 
         // choose spider charge detonation point
         var warps = new List<EntityUid>();
-        var query = EntityQueryEnumerator<BombingTargetComponent, WarpPointComponent, TransformComponent>();
-        var map = Transform(uid).MapID;
-        while (query.MoveNext(out var warpUid, out _, out var warp, out var xform))
+        var query = EntityQueryEnumerator<BombingTargetComponent, WarpPointComponent>();
+        while (query.MoveNext(out var warpUid, out _, out var warp))
         {
-            if (warp.Location != null)
-                warps.Add(warpUid);
+            warps.Add(warpUid);
         }
 
         if (warps.Count > 0)
index eaf97e97e01204ba3fd53f8eb5f9c4e6a2834bf5..24eeb0542ec61c68f6e384ede705b90ebb354e4a 100644 (file)
@@ -58,14 +58,13 @@ public sealed class NinjaConditionsSystem : EntitySystem
     {
         if (!TryComp<NinjaRoleComponent>(mindId, out var role) ||
             role.SpiderChargeTarget == null ||
-            !TryComp<WarpPointComponent>(role.SpiderChargeTarget, out var warp) ||
-            warp.Location == null)
+            !TryComp<WarpPointComponent>(role.SpiderChargeTarget, out var warp))
         {
             // this should never really happen but eh
             return Loc.GetString("objective-condition-spider-charge-title-no-target");
         }
 
-        return Loc.GetString("objective-condition-spider-charge-title", ("location", warp.Location));
+        return Loc.GetString("objective-condition-spider-charge-title", ("location", warp.Location ?? Name(role.SpiderChargeTarget.Value)));
     }
 
     // steal research
index 19c38493ef374e41252a30211941d1785444be58..ce169f2e1956f82d8597731d9b035c7e64c233ef 100644 (file)
@@ -6,12 +6,13 @@ namespace Content.Server.Warps
     [RegisterComponent]
     public sealed partial class WarpPointComponent : Component
     {
-        [ViewVariables(VVAccess.ReadWrite)] [DataField("location")] public string? Location { get; set; }
+        [ViewVariables(VVAccess.ReadWrite), DataField]
+        public string? Location;
 
         /// <summary>
         ///     If true, ghosts warping to this entity will begin following it.
         /// </summary>
-        [DataField("follow")]
-        public bool Follow = false;
+        [DataField]
+        public bool Follow;
     }
 }
index d7651e1245eb1930a6ff0b560998945aff4e2c0a..8e15994dc5fdf1a8e6fd16e33db9a154bf098ec2 100644 (file)
@@ -13,6 +13,8 @@
   name: warp point (beacon)
   components:
   - type: NavMapBeacon
+  - type: WarpPoint
+    location: beacon
 
 - type: entity
   parent: WarpPoint
@@ -21,6 +23,8 @@
   suffix: ninja bombing target
   components:
   - type: BombingTarget
+  - type: WarpPoint
+    location: bombing target
   - type: Sprite
     layers:
     - state: pink
@@ -36,6 +40,8 @@
   - type: NavMapBeacon
     text: bar
     color: "#791500"
+  - type: WarpPoint
+    location: bar
 
 - type: entity
   id: WarpPointBeaconCargo
@@ -45,6 +51,8 @@
   - type: NavMapBeacon
     text: cargo
     color: "#A46106"
+  - type: WarpPoint
+    location: cargo
 
 - type: entity
   id: WarpPointBeaconCommand
@@ -54,6 +62,8 @@
   - type: NavMapBeacon
     text: command
     color: "#334E6D"
+  - type: WarpPoint
+    location: command
 
 - type: entity
   id: WarpPointBeaconEngineering
@@ -63,6 +73,8 @@
   - type: NavMapBeacon
     text: engineering
     color: "#EFB341"
+  - type: WarpPoint
+    location: engineering
 
 - type: entity
   id: WarpPointBeaconMedical
@@ -72,6 +84,8 @@
   - type: NavMapBeacon
     text: medical
     color: "#52B4E9"
+  - type: WarpPoint
+    location: medical
 
 - type: entity
   id: WarpPointBeaconNeutral
@@ -81,6 +95,8 @@
   - type: NavMapBeacon
     text: neutral
     color: "#D4D4D4"
+  - type: WarpPoint
+    location: neutral
 
 - type: entity
   id: WarpPointBeaconScience
   - type: NavMapBeacon
     text: science
     color: "#D381C9"
+  - type: WarpPoint
+    location: science
 
 - type: entity
   id: WarpPointBeaconService
   - type: NavMapBeacon
     text: service
     color: "#9FED58"
+  - type: WarpPoint
+    location: service