using Content.Client._NF.Hands.UI;
using Content.Client.Items;
using Content.Client.Items.Systems;
using Content.Shared._NF.Interaction.Components;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
namespace Content.Client._NF.Interaction.Systems;
///
/// Handles interactions with items that spawn HandPlaceholder items.
///
[UsedImplicitly]
public sealed partial class HandPlaceholderVisualsSystem : EntitySystem
{
[Dependency] ContainerSystem _container = default!;
[Dependency] ItemSystem _item = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnAfterAutoHandleState);
SubscribeLocalEvent(PlaceholderRemove);
Subs.ItemStatus(_ => new HandPlaceholderStatus());
}
private void OnAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args)
{
if (!TryComp(ent, out HandPlaceholderVisualsComponent? placeholder))
return;
if (placeholder.Dummy != EntityUid.Invalid)
QueueDel(placeholder.Dummy);
placeholder.Dummy = Spawn(ent.Comp.Prototype);
if (_container.IsEntityInContainer(ent))
_item.VisualsChanged(ent);
}
private void PlaceholderRemove(Entity ent, ref ComponentRemove args)
{
if (ent.Comp.Dummy != EntityUid.Invalid)
QueueDel(ent.Comp.Dummy);
}
}