using Content.Shared.Teleportation.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Teleportation.Components; // TODO: In the future assimilate ghost UI to use this. /// /// Used where you want an entity to display a list of player-safe teleport locations /// They teleport to the location clicked /// Looks for non Ghost-Only WarpPointComponents /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedTeleportLocationsSystem)), AutoGenerateComponentState] public sealed partial class TeleportLocationsComponent : Component { /// /// List of available warp points /// [DataField, AutoNetworkedField] public HashSet AvailableWarps = new(); /// /// What should spawn as an effect when the user teleports? /// [DataField] public EntProtoId? TeleportEffect; /// /// Should this close the BUI after teleport? /// [DataField] public bool CloseAfterTeleport; /// /// Name of the Teleport Location menu /// [DataField] public LocId Name; /// /// Should the user have some speech if they teleport? /// If enabled it will be prepended to the location name. /// So something like "I am going to" would become "I am going to (Bridge)" /// [DataField] public LocId? Speech; } /// /// A teleport point, which has a location (the destination) and the entity that it represents. /// [Serializable, NetSerializable, DataDefinition] public partial record struct TeleportPoint { [DataField] public string Location; [DataField] public NetEntity TelePoint; public TeleportPoint(string Location, NetEntity TelePoint) { this.Location = Location; this.TelePoint = TelePoint; } }