using Content.Shared.DoAfter;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared._White.FromTileCrafter.Components;
[RegisterComponent, NetworkedComponent]
public sealed partial class FromTileCrafterComponent : Component
{
///
/// Object that will be created
///
[DataField, ViewVariables(VVAccess.ReadOnly)]
[ValidatePrototypeId]
public string EntityToSpawn;
///
/// Tiles that allowed to use to craft an object
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public HashSet AllowedTileIds = new();
///
/// The time it takes to craft.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float Delay = 1f;
///
/// How far spawned item can offset from tile center
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float Spread = 0.3f;
}
[Serializable, NetSerializable]
public sealed partial class FromTileCraftDoAfterEvent : DoAfterEvent
{
public NetEntity Grid;
public Vector2i GridTile;
public FromTileCraftDoAfterEvent(NetEntity grid, Vector2i gridTile)
{
Grid = grid;
GridTile = gridTile;
}
public override DoAfterEvent Clone()
{
return new FromTileCraftDoAfterEvent(Grid, GridTile);
}
}