using System.Text.RegularExpressions; using Content.Shared.Tools; using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Configurable { [RegisterComponent, NetworkedComponent] public sealed partial class ConfigurationComponent : Component { [DataField("config")] public Dictionary Config = new(); [DataField("qualityNeeded", customTypeSerializer: typeof(PrototypeIdSerializer))] public string QualityNeeded = "Pulsing"; [DataField("validation")] public Regex Validation = new("^[a-zA-Z0-9 ]*$", RegexOptions.Compiled); [Serializable, NetSerializable] public sealed class ConfigurationBoundUserInterfaceState : BoundUserInterfaceState { public Dictionary Config { get; } public ConfigurationBoundUserInterfaceState(Dictionary config) { Config = config; } } /// /// Message data sent from client to server when the device configuration is updated. /// [Serializable, NetSerializable] public sealed class ConfigurationUpdatedMessage : BoundUserInterfaceMessage { public Dictionary Config { get; } public ConfigurationUpdatedMessage(Dictionary config) { Config = config; } } [Serializable, NetSerializable] public sealed class ValidationUpdateMessage : BoundUserInterfaceMessage { public string ValidationString { get; } public ValidationUpdateMessage(string validationString) { ValidationString = validationString; } } [Serializable, NetSerializable] public enum ConfigurationUiKey { Key } } }