PriceGunSystem.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Content.Server.Popups;
  2. using Content.Shared.Cargo.Components;
  3. using Content.Shared.IdentityManagement;
  4. using Content.Shared.Timing;
  5. using Content.Shared.Cargo.Systems;
  6. using Robust.Shared.Audio.Systems;
  7. namespace Content.Server.Cargo.Systems;
  8. public sealed class PriceGunSystem : SharedPriceGunSystem
  9. {
  10. [Dependency] private readonly UseDelaySystem _useDelay = default!;
  11. [Dependency] private readonly PricingSystem _pricingSystem = default!;
  12. [Dependency] private readonly PopupSystem _popupSystem = default!;
  13. [Dependency] private readonly CargoSystem _bountySystem = default!;
  14. [Dependency] private readonly SharedAudioSystem _audio = default!;
  15. protected override bool GetPriceOrBounty(Entity<PriceGunComponent> entity, EntityUid target, EntityUid user)
  16. {
  17. if (!TryComp(entity.Owner, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((entity.Owner, useDelay)))
  18. return false;
  19. // Check if we're scanning a bounty crate
  20. if (_bountySystem.IsBountyComplete(target, out _))
  21. {
  22. _popupSystem.PopupEntity(Loc.GetString("price-gun-bounty-complete"), user, user);
  23. }
  24. else // Otherwise appraise the price
  25. {
  26. var price = _pricingSystem.GetPrice(target);
  27. _popupSystem.PopupEntity(Loc.GetString("price-gun-pricing-result",
  28. ("object", Identity.Entity(target, EntityManager)),
  29. ("price", $"{price:F2}")),
  30. user,
  31. user);
  32. }
  33. _audio.PlayPvs(entity.Comp.AppraisalSound, entity.Owner);
  34. _useDelay.TryResetDelay((entity.Owner, useDelay));
  35. return true;
  36. }
  37. }