]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Prevent Identity.Name NRE exception (#28433)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Fri, 31 May 2024 03:11:21 +0000 (15:11 +1200)
committerGitHub <noreply@github.com>
Fri, 31 May 2024 03:11:21 +0000 (13:11 +1000)
Fix Identity.Name exception

Content.Client/Inventory/StrippableBoundUserInterface.cs
Content.Shared/IdentityManagement/Identity.cs

index 33f38688edf62fd410161897de35c160a320be80..7e50eb1c68a5290ae0a0dc76d13ffadfb4539ef5 100644 (file)
@@ -21,7 +21,6 @@ using Robust.Client.UserInterface;
 using Robust.Client.UserInterface.Controls;
 using Robust.Shared.Input;
 using Robust.Shared.Map;
-using Robust.Shared.Prototypes;
 using static Content.Client.Inventory.ClientInventorySystem;
 using static Robust.Client.UserInterface.Control;
 
@@ -53,9 +52,13 @@ namespace Content.Client.Inventory
             _inv = EntMan.System<InventorySystem>();
             _cuffable = EntMan.System<SharedCuffableSystem>();
 
+            // TODO update name when identity changes
             var title = Loc.GetString("strippable-bound-user-interface-stripping-menu-title", ("ownerName", Identity.Name(Owner, EntMan)));
             _strippingMenu = new StrippingMenu(title, this);
             _strippingMenu.OnClose += Close;
+
+            // TODO use global entity
+            // BUIs are opened and closed while applying comp sates, so spawning entities here is probably not the best idea.
             _virtualHiddenEntity = EntMan.SpawnEntity(HiddenPocketEntityId, MapCoordinates.Nullspace);
         }
 
index 20220e0326ad362f8bebeeed878887871452cac8..2fb53e3d5a9b93d12768b7fc47adcdc58ad33a90 100644 (file)
@@ -15,7 +15,11 @@ public static class Identity
     /// </summary>
     public static string Name(EntityUid uid, IEntityManager ent, EntityUid? viewer=null)
     {
-        var uidName = ent.GetComponent<MetaDataComponent>(uid).EntityName;
+        var meta = ent.GetComponent<MetaDataComponent>(uid);
+        if (meta.EntityLifeStage <= EntityLifeStage.Initializing)
+            return meta.EntityName; // Identity component and such will not yet have initialized and may throw NREs
+
+        var uidName = meta.EntityName;
 
         if (!ent.TryGetComponent<IdentityComponent>(uid, out var identity))
             return uidName;
@@ -34,7 +38,7 @@ public static class Identity
             return uidName;
         }
 
-        return uidName + $" ({identName})";
+        return $"{uidName} ({identName})";
     }
 
     /// <summary>