using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.Reflection; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Server.RandomAppearance; [RegisterComponent, ComponentProtoName("RandomAppearance")] [Friend(typeof(RandomAppearanceSystem))] public class RandomAppearanceComponent : Component, ISerializationHooks { [DataField("spriteStates")] public string[] SpriteStates = {"0", "1", "2", "3", "4"}; /// /// What appearance enum key should be set to the random sprite state? /// [DataField("key", required: true)] public string EnumKeyRaw = default!; /// /// The actual enum after reflection. /// public System.Enum? EnumKey; void ISerializationHooks.AfterDeserialization() { if (IoCManager.Resolve().TryParseEnumReference(EnumKeyRaw, out var @enum)) { EnumKey = @enum; } else { Logger.Error($"RandomAppearance enum key {EnumKeyRaw} could not be parsed!"); } } }