]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix rockets and lasers looking like they have nothing loaded (#26933)
authorDrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com>
Sun, 14 Apr 2024 03:17:17 +0000 (20:17 -0700)
committerGitHub <noreply@github.com>
Sun, 14 Apr 2024 03:17:17 +0000 (13:17 +1000)
Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs
Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs

index a81e8ae8875e0bb004300c812822320019a10c3f..2d670d1e7760c86b11f09fef06b7ca27160e31cf 100644 (file)
@@ -40,7 +40,7 @@ public sealed partial class GunSystem
 
         if (sprite == null) return;
 
-        if (args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) &&
+        if (!args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) ||
             magloaded is true)
         {
             if (!args.AppearanceData.TryGetValue(AmmoVisuals.AmmoMax, out var capacity))
index 57db1d2b9cf4cb1c9b24ecd22f5356d3c5aa9d90..9eb290ab65c05990a0f5d7b55289df039f6e68c7 100644 (file)
@@ -1,7 +1,6 @@
 using Content.Shared.Examine;
 using Content.Shared.Interaction.Events;
 using Content.Shared.Verbs;
-using Content.Shared.Weapons.Ranged.Components;
 using Content.Shared.Weapons.Ranged.Events;
 using Robust.Shared.Containers;
 
@@ -13,6 +12,7 @@ public abstract partial class SharedGunSystem
 
     protected virtual void InitializeMagazine()
     {
+        SubscribeLocalEvent<MagazineAmmoProviderComponent, MapInitEvent>(OnMagazineMapInit);
         SubscribeLocalEvent<MagazineAmmoProviderComponent, TakeAmmoEvent>(OnMagazineTakeAmmo);
         SubscribeLocalEvent<MagazineAmmoProviderComponent, GetAmmoCountEvent>(OnMagazineAmmoCount);
         SubscribeLocalEvent<MagazineAmmoProviderComponent, GetVerbsEvent<AlternativeVerb>>(OnMagazineVerb);
@@ -22,6 +22,11 @@ public abstract partial class SharedGunSystem
         SubscribeLocalEvent<MagazineAmmoProviderComponent, ExaminedEvent>(OnMagazineExamine);
     }
 
+    private void OnMagazineMapInit(Entity<MagazineAmmoProviderComponent> ent, ref MapInitEvent args)
+    {
+        MagazineSlotChanged(ent);
+    }
+
     private void OnMagazineExamine(EntityUid uid, MagazineAmmoProviderComponent component, ExaminedEvent args)
     {
         if (!args.IsInDetailsRange)
@@ -62,16 +67,21 @@ public abstract partial class SharedGunSystem
         if (MagazineSlot != args.Container.ID)
             return;
 
-        UpdateAmmoCount(uid);
-        if (!TryComp<AppearanceComponent>(uid, out var appearance))
+        MagazineSlotChanged((uid, component));
+    }
+
+    private void MagazineSlotChanged(Entity<MagazineAmmoProviderComponent> ent)
+    {
+        UpdateAmmoCount(ent);
+        if (!TryComp<AppearanceComponent>(ent, out var appearance))
             return;
 
-        var magEnt = GetMagazineEntity(uid);
-        Appearance.SetData(uid, AmmoVisuals.MagLoaded, magEnt != null, appearance);
+        var magEnt = GetMagazineEntity(ent);
+        Appearance.SetData(ent, AmmoVisuals.MagLoaded, magEnt != null, appearance);
 
         if (magEnt != null)
         {
-            UpdateMagazineAppearance(uid, component, magEnt.Value);
+            UpdateMagazineAppearance(ent, ent, magEnt.Value);
         }
     }