]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Tweaks to ContainerAmmoProvider (#15945)
authorAJCM-git <60196617+AJCM-git@users.noreply.github.com>
Sun, 30 Apr 2023 10:49:26 +0000 (06:49 -0400)
committerGitHub <noreply@github.com>
Sun, 30 Apr 2023 10:49:26 +0000 (20:49 +1000)
Content.Shared/Weapons/Ranged/Components/ContainerAmmoProviderComponent.cs
Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Container.cs

index ee9158a6ebff789379c3e73e7c789b1c37f1e53d..8b5a6761a4016ed7023892fa0b7d8c49282c728e 100644 (file)
@@ -9,5 +9,10 @@ namespace Content.Shared.Weapons.Ranged.Components;
 public sealed class ContainerAmmoProviderComponent : AmmoProviderComponent
 {
     [DataField("container", required: true)]
+    [ViewVariables]
     public string Container = default!;
+
+    [DataField("provider")]
+    [ViewVariables]
+    public EntityUid? ProviderUid;
 }
index 204faecdb6bbfa661e32327802991a0230f29a25..23e2d94e1f399032cc48c431ae9bbdfe4f934a50 100644 (file)
@@ -11,7 +11,7 @@ public partial class SharedGunSystem
     [Dependency] private readonly INetManager _netMan = default!;
     [Dependency] private readonly SharedContainerSystem _container = default!;
 
-    public void InitializeContainer()
+    private void InitializeContainer()
     {
         SubscribeLocalEvent<ContainerAmmoProviderComponent, TakeAmmoEvent>(OnContainerTakeAmmo);
         SubscribeLocalEvent<ContainerAmmoProviderComponent, GetAmmoCountEvent>(OnContainerAmmoCount);
@@ -19,10 +19,11 @@ public partial class SharedGunSystem
 
     private void OnContainerTakeAmmo(EntityUid uid, ContainerAmmoProviderComponent component, TakeAmmoEvent args)
     {
-        if (!_container.TryGetContainer(uid, component.Container, out var container))
+        component.ProviderUid ??= uid;
+        if (!_container.TryGetContainer(component.ProviderUid.Value, component.Container, out var container))
             return;
 
-        for (int i = 0; i < args.Shots; i++)
+        for (var i = 0; i < args.Shots; i++)
         {
             if (!container.ContainedEntities.Any())
                 break;
@@ -38,7 +39,8 @@ public partial class SharedGunSystem
 
     private void OnContainerAmmoCount(EntityUid uid, ContainerAmmoProviderComponent component, ref GetAmmoCountEvent args)
     {
-        if (!_container.TryGetContainer(uid, component.Container, out var container))
+        component.ProviderUid ??= uid;
+        if (!_container.TryGetContainer(component.ProviderUid.Value, component.Container, out var container))
         {
             args.Capacity = 0;
             args.Count = 0;