Tweaks to ContainerAmmoProvider (#15945)
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user