Tweaks to ContainerAmmoProvider (#15945)

This commit is contained in:
AJCM-git
2023-04-30 06:49:26 -04:00
committed by GitHub
parent 3457c6c636
commit 2564ff8918
2 changed files with 11 additions and 4 deletions

View File

@@ -9,5 +9,10 @@ namespace Content.Shared.Weapons.Ranged.Components;
public sealed class ContainerAmmoProviderComponent : AmmoProviderComponent public sealed class ContainerAmmoProviderComponent : AmmoProviderComponent
{ {
[DataField("container", required: true)] [DataField("container", required: true)]
[ViewVariables]
public string Container = default!; public string Container = default!;
[DataField("provider")]
[ViewVariables]
public EntityUid? ProviderUid;
} }

View File

@@ -11,7 +11,7 @@ public partial class SharedGunSystem
[Dependency] private readonly INetManager _netMan = default!; [Dependency] private readonly INetManager _netMan = default!;
[Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedContainerSystem _container = default!;
public void InitializeContainer() private void InitializeContainer()
{ {
SubscribeLocalEvent<ContainerAmmoProviderComponent, TakeAmmoEvent>(OnContainerTakeAmmo); SubscribeLocalEvent<ContainerAmmoProviderComponent, TakeAmmoEvent>(OnContainerTakeAmmo);
SubscribeLocalEvent<ContainerAmmoProviderComponent, GetAmmoCountEvent>(OnContainerAmmoCount); SubscribeLocalEvent<ContainerAmmoProviderComponent, GetAmmoCountEvent>(OnContainerAmmoCount);
@@ -19,10 +19,11 @@ public partial class SharedGunSystem
private void OnContainerTakeAmmo(EntityUid uid, ContainerAmmoProviderComponent component, TakeAmmoEvent args) 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; return;
for (int i = 0; i < args.Shots; i++) for (var i = 0; i < args.Shots; i++)
{ {
if (!container.ContainedEntities.Any()) if (!container.ContainedEntities.Any())
break; break;
@@ -38,7 +39,8 @@ public partial class SharedGunSystem
private void OnContainerAmmoCount(EntityUid uid, ContainerAmmoProviderComponent component, ref GetAmmoCountEvent args) 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.Capacity = 0;
args.Count = 0; args.Count = 0;