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,
}