protected override void Cycle(BallisticAmmoProviderComponent component, MapCoordinates coordinates) { EntityUid?ent = null; // TODO: Combine with TakeAmmo if (component.Entities.Count > 0) { var existing = component.Entities[^ 1];
private void OnBallisticAmmoCount(EntityUid uid, BallisticAmmoProviderComponent component, UpdateAmmoCounterEvent args) { if (args.Control is DefaultStatusControl control) { control.Update(GetBallisticShots(component), component.Capacity); return; } }
protected override void Cycle(BallisticAmmoProviderComponent component, MapCoordinates coordinates) { if (!Timing.IsFirstTimePredicted) { return; } EntityUid?ent = null; // TODO: Combine with TakeAmmo if (component.Entities.Count > 0) { var existing = component.Entities[^ 1];
private void OnBallisticVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent <Verb> args) { if (!args.CanAccess || !args.CanInteract || args.Hands == null) { return; } args.Verbs.Add(new Verb() { Text = Loc.GetString("gun-ballistic-cycle"), Disabled = GetBallisticShots(component) == 0, Act = () => ManualCycle(component, Transform(uid).MapPosition, args.User), }); }
private void OnBallisticInteractUsing(EntityUid uid, BallisticAmmoProviderComponent component, InteractUsingEvent args) { if (args.Handled || component.Whitelist?.IsValid(args.Used, EntityManager) != true) { return; } if (GetBallisticShots(component) >= component.Capacity) { return; } component.Entities.Add(args.Used); component.Container.Insert(args.Used); // Not predicted so PlaySound(uid, component.SoundInsert?.GetSound(Random, ProtoManager), args.User); args.Handled = true; UpdateBallisticAppearance(component); Dirty(component); }
private void ManualCycle(BallisticAmmoProviderComponent component, MapCoordinates coordinates, EntityUid?user = null) { // Reset shotting for cycling if (TryComp <GunComponent>(component.Owner, out var gunComp) && gunComp is { FireRate : > 0f })
private void OnBallisticExamine(EntityUid uid, BallisticAmmoProviderComponent component, ExaminedEvent args) { args.PushMarkup(Loc.GetString("gun-magazine-examine", ("color", AmmoExamineColor), ("count", GetBallisticShots(component)))); }
private void OnBallisticActivate(EntityUid uid, BallisticAmmoProviderComponent component, ActivateInWorldEvent args) { ManualCycle(component, Transform(uid).MapPosition, args.User); args.Handled = true; }