using System; using System.Collections.Generic; using Robust.Shared.Enums; using Robust.Shared.GameStates; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.ViewVariables; namespace Robust.Shared.GameObjects.Components.Localization { /// /// Overrides grammar attributes specified in prototypes or localization files. /// [RegisterComponent] [NetworkedComponent()] public sealed class GrammarComponent : Component { [ViewVariables] [DataField("attributes")] public Dictionary Attributes { get; } = new(); [ViewVariables] public Gender? Gender { get => Attributes.TryGetValue("gender", out var g) ? Enum.Parse(g, true) : null; set { if (value.HasValue) Attributes["gender"] = value.Value.ToString(); else Attributes.Remove("gender"); } } [ViewVariables] public bool? ProperNoun { get => Attributes.TryGetValue("proper", out var g) ? bool.Parse(g) : null; set { if (value.HasValue) Attributes["proper"] = value.Value.ToString(); else Attributes.Remove("proper"); } } } }