using Robust.Shared.Serialization; using Robust.Shared.Map; using Content.Shared.Shuttles.BUIStates; namespace Content.Shared._Mono.FireControl; [Serializable, NetSerializable] public sealed class FireControlConsoleUpdateEvent : EntityEventArgs { } [Serializable, NetSerializable] public sealed class FireControlConsoleBoundInterfaceState : BoundUserInterfaceState { public bool Connected; public FireControllableEntry[] FireControllables; public NavInterfaceState NavState; public FireControlConsoleBoundInterfaceState(bool connected, FireControllableEntry[] fireControllables, NavInterfaceState navState) { Connected = connected; FireControllables = fireControllables; NavState = navState; } } [Serializable, NetSerializable] public enum FireControlConsoleUiKey : byte { Key, } [Serializable, NetSerializable] public sealed class FireControlConsoleRefreshServerMessage : BoundUserInterfaceMessage { } [Serializable, NetSerializable] public sealed class FireControlConsoleFireMessage : BoundUserInterfaceMessage { public List Selected; public NetCoordinates Coordinates; public FireControlConsoleFireMessage(List selected, NetCoordinates coordinates) { Selected = selected; Coordinates = coordinates; } } /// /// Event raised when a fire control console wants to fire weapons at specific coordinates. /// Used for tracking cursor position. /// public sealed class FireControlConsoleFireEvent : EntityEventArgs { /// /// The coordinates of the cursor/firing position /// public NetCoordinates Coordinates; /// /// The weapons selected to fire /// public List Selected; public FireControlConsoleFireEvent(NetCoordinates coordinates, List selected) { Coordinates = coordinates; Selected = selected; } } [Serializable, NetSerializable] public struct FireControllableEntry { /// /// The entity in question /// public NetEntity NetEntity; /// /// Location of the entity /// public NetCoordinates Coordinates; /// /// Display name of the entity /// public string Name; public FireControllableEntry(NetEntity entity, NetCoordinates coordinates, string name) { NetEntity = entity; Coordinates = coordinates; Name = name; } }