using Content.Shared.Shuttles.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Shuttles.Components; /// /// Handles what a grid should look like on radar. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedShuttleSystem))] public sealed partial class IFFComponent : Component { public static readonly Color SelfColor = Color.MediumSpringGreen; /// /// Default color to use for IFF if no component is found. /// public static readonly Color IFFColor = Color.Gold; [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField] public IFFFlags Flags = IFFFlags.None; /// /// Frontier: Shuttle service flags. /// [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField] public ServiceFlags ServiceFlags = ServiceFlags.None; /// /// Color for this to show up on IFF. /// [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField] public Color Color = IFFColor; // Frontier: POI IFF protection /// /// Whether or not this entity's IFF can be changed. /// [ViewVariables(VVAccess.ReadWrite), DataField(serverOnly: true)] public bool ReadOnly; // End Frontier } [Flags] public enum IFFFlags : byte { None = 0, /// /// Should the label for this grid be hidden at all ranges. /// HideLabel = 1, /// /// Should the grid hide entirely (AKA full stealth). /// Will also hide the label if that is not set. /// Hide = 2, /// /// Frontier - Is this a player shuttle /// IsPlayerShuttle = 4, // TODO: Need one that hides its outline, just replace it with a bunch of triangles or lines or something. } /// /// Frontier: Shuttle service flags. /// [Flags] public enum ServiceFlags : byte { None = 0, Services = 1, Trade = 2, Social = 4, }