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