private void OnBasicEntityAmmoCount(EntityUid uid, BasicEntityAmmoProviderComponent component, UpdateAmmoCounterEvent args)
 {
     if (args.Control is DefaultStatusControl control && component.Count != null && component.Capacity != null)
     {
         control.Update(component.Count.Value, component.Capacity.Value);
     }
 }
Exemplo n.º 2
0
 private void OnBasicEntityHandleState(EntityUid uid, BasicEntityAmmoProviderComponent component, ref ComponentHandleState args)
 {
     if (args.Current is BasicEntityAmmoProviderComponentState state)
     {
         component.Capacity = state.Capacity;
         component.Count    = state.Count;
     }
 }
Exemplo n.º 3
0
 private void UpdateBasicEntityAppearance(BasicEntityAmmoProviderComponent component)
 {
     if (!Timing.IsFirstTimePredicted || !TryComp <AppearanceComponent>(component.Owner, out var appearance))
     {
         return;
     }
     appearance.SetData(AmmoVisuals.HasAmmo, component.Count != 0);
     appearance.SetData(AmmoVisuals.AmmoCount, component.Count ?? int.MaxValue);
     appearance.SetData(AmmoVisuals.AmmoMax, component.Capacity ?? int.MaxValue);
 }
Exemplo n.º 4
0
    private void OnBasicEntityInit(EntityUid uid, BasicEntityAmmoProviderComponent component, ComponentInit args)
    {
        if (component.Count is null)
        {
            component.Count = component.Capacity;
            Dirty(component);
        }

        UpdateBasicEntityAppearance(component);
    }
Exemplo n.º 5
0
    private void OnBasicEntityTakeAmmo(EntityUid uid, BasicEntityAmmoProviderComponent component, TakeAmmoEvent args)
    {
        for (int i = 0; i < args.Shots; i++)
        {
            if (component.Count <= 0)
            {
                return;
            }

            if (component.Count != null)
            {
                component.Count--;
            }

            var ent = Spawn(component.Proto, args.Coordinates);
            args.Ammo.Add(EnsureComp <AmmoComponent>(ent));
        }

        UpdateBasicEntityAppearance(component);
        Dirty(component);
    }
Exemplo n.º 6
0
 private void OnBasicEntityAmmoCount(EntityUid uid, BasicEntityAmmoProviderComponent component, ref GetAmmoCountEvent args)
 {
     args.Capacity = component.Capacity ?? int.MaxValue;
     args.Count    = component.Count ?? int.MaxValue;
 }
Exemplo n.º 7
0
 private void OnBasicEntityGetState(EntityUid uid, BasicEntityAmmoProviderComponent component, ref ComponentGetState args)
 {
     args.State = new BasicEntityAmmoProviderComponentState(component.Capacity, component.Count);
 }