using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Materials.OreSilo; /// /// Provides additional materials to linked clients across long distances. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedOreSiloSystem))] public sealed partial class OreSiloComponent : Component { /// /// The that are connected to this silo. /// [DataField, AutoNetworkedField] public HashSet Clients = new(); /// /// The maximum distance you can be to the silo and still receive transmission. /// /// /// Default value should be big enough to span a single large department. /// [DataField, AutoNetworkedField] public float Range = 20f; } [Serializable, NetSerializable] public sealed class OreSiloBuiState : BoundUserInterfaceState { public readonly HashSet<(NetEntity, string, string)> Clients; public OreSiloBuiState(HashSet<(NetEntity, string, string)> clients) { Clients = clients; } } [Serializable, NetSerializable] public sealed class ToggleOreSiloClientMessage : BoundUserInterfaceMessage { public readonly NetEntity Client; public ToggleOreSiloClientMessage(NetEntity client) { Client = client; } } [Serializable, NetSerializable] public enum OreSiloUiKey : byte { Key }