]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix material storage going BRRT (#29167)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Tue, 18 Jun 2024 21:47:19 +0000 (07:47 +1000)
committerGitHub <noreply@github.com>
Tue, 18 Jun 2024 21:47:19 +0000 (17:47 -0400)
If the volume hits 0 we just remove it.

Content.Client/Lathe/UI/LatheMenu.xaml.cs
Content.Shared/Materials/SharedMaterialStorageSystem.cs

index 9e15f8239e5ee4c002adad3e04c7ae6fd03aaa8d..40f553fcd663180bf772c741f813dbded4fd835e 100644 (file)
@@ -78,9 +78,6 @@ public sealed partial class LatheMenu : DefaultWindow
     /// </summary>
     public void PopulateRecipes()
     {
-        if (!_entityManager.TryGetComponent<LatheComponent>(_owner, out var component))
-            return;
-
         var recipesToShow = new List<LatheRecipePrototype>();
         foreach (var recipe in Recipes)
         {
index a27e0fb9cf0b7f67257dd62db97529f7ebc66835..dc4858fd7458dd4eeaedd8caa2c4a06a2ccbcd32 100644 (file)
@@ -1,11 +1,13 @@
 using System.Linq;
 using Content.Shared.Interaction;
 using Content.Shared.Interaction.Components;
+using Content.Shared.Mobs;
 using Content.Shared.Stacks;
 using Content.Shared.Whitelist;
 using JetBrains.Annotations;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Timing;
+using Robust.Shared.Utility;
 
 namespace Content.Shared.Materials;
 
@@ -166,8 +168,14 @@ public abstract class SharedMaterialStorageSystem : EntitySystem
             return false;
         if (!CanChangeMaterialAmount(uid, materialId, volume, component))
             return false;
-        component.Storage.TryAdd(materialId, 0);
-        component.Storage[materialId] += volume;
+
+        var existing = component.Storage.GetOrNew(materialId);
+        existing += volume;
+
+        if (existing == 0)
+            component.Storage.Remove(materialId);
+        else
+            component.Storage[materialId] = existing;
 
         var ev = new MaterialAmountChangedEvent();
         RaiseLocalEvent(uid, ref ev);