using Content.Server.Animals.Components; using Content.Server.Popups; using Content.Shared.Animals.Events; using Content.Shared.IdentityManagement; using Robust.Server.Audio; namespace Content.Server.Animals.Systems; /// /// Handles entity production actions and their feedback. /// public sealed partial class EntityProducerActionSystem : EntitySystem { [Dependency] private AudioSystem _audio = default!; [Dependency] private SatiationProductionSystem _satiationProduction = default!; [Dependency] private PopupSystem _popup = default!; [SubscribeLocalEvent] private void OnProductionAction(Entity ent, ref EntityProductionActionEvent args) { args.Handled = _satiationProduction.TryProduce(ent.Owner, out var failure); if (failure == SatiationProductionFailure.InsufficientSatiation) _popup.PopupEntity(Loc.GetString(ent.Comp.InsufficientSatiationPopup), ent.Owner, ent.Owner); } [SubscribeLocalEvent] private void OnEntitiesProduced(Entity ent, ref EntitiesProducedEvent args) { _audio.PlayPvs(ent.Comp.ProductionSound, args.Owner); _popup.PopupEntity( Loc.GetString(ent.Comp.UserPopup), Loc.GetString(ent.Comp.OthersPopup, ("entity", Identity.Entity(args.Owner, EntityManager))), args.Owner, args.Owner); } }