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);
}
}