using Content.Server.Damage.Systems;
using Content.Server.Movement.Systems;
using Content.Server.Popups;
using Content.Shared.Damage.Systems;
using Content.Shared.Interaction.Events;
using Content.Shared.Maps;
using Content.Shared.Popups;
using Content.Shared.Tiles;
using Robust.Server.GameObjects;
namespace Content.Server._Sunrise.Soil;
///
/// Система для мешка с землей
///
public sealed class SoilSystem : EntitySystem
{
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly IEntityManager _entity = default!;
[Dependency] private readonly StaminaSystem _stamina = default!;
public override void Initialize()
{
SubscribeLocalEvent(OnUseInHand);
}
private void OnUseInHand(Entity ent, ref UseInHandEvent args)
{
var xform = Transform(ent);
var grid = _transform.GetGrid((ent.Owner, xform));
if (grid == null)
{
_popup.PopupEntity(Loc.GetString(ent.Comp.PopupStringFailed), ent, args.User, PopupType.SmallCaution);
return;
}
var spawned = _entity.SpawnEntity(ent.Comp.SpawnPrototype, xform.Coordinates);
var targetMeta = MetaData(ent);
var userMeta = MetaData(args.User);
_popup.PopupEntity(Loc.GetString(ent.Comp.PopupStringSuccess, ("user", userMeta.EntityName), ("name", targetMeta.EntityName)), args.User, PopupType.LargeGreen);
_stamina.TryTakeStamina(args.User, ent.Comp.StaminaDamage);
_entity.QueueDeleteEntity(ent.Owner);
}
}