using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; namespace Content.Shared.StatusIcon; /// /// A data structure that holds relevant /// information for status icons. /// [Virtual, DataDefinition] public class StatusIconData : IComparable { /// /// The icon that's displayed on the entity. /// [DataField("icon", required: true)] public SpriteSpecifier Icon = default!; /// /// A priority for the order in which the icons will be displayed. /// [DataField("priority")] public int Priority = 10; /// /// A preference for where the icon will be displayed. None | Left | Right /// [DataField("locationPreference")] public StatusIconLocationPreference LocationPreference = StatusIconLocationPreference.None; public int CompareTo(StatusIconData? other) { return Priority.CompareTo(other?.Priority ?? int.MaxValue); } } /// /// but in new convenient prototype form! /// [Prototype("statusIcon")] public sealed class StatusIconPrototype : StatusIconData, IPrototype { /// [IdDataField] public string ID { get; } = default!; } [Serializable, NetSerializable] public enum StatusIconLocationPreference : byte { None, Left, Right, }