using Robust.Shared.Serialization; namespace Content.Shared.Mech; [Serializable, NetSerializable] public enum MechUiKey : byte { Key } /// /// Event raised to collect BUI states for each of the mech's equipment items /// public sealed class MechEquipmentUiStateReadyEvent : EntityEventArgs { public BoundUserInterfaceState? State; // Horizon Mech } /// /// Event raised to relay an equipment ui message /// Horizon - считайте что ивент полностью переписан /// //[Serializable, NetSerializable] // Horizon Mech public sealed class MechEquipmentUiMessageRelayEvent : EntityEventArgs where T : MechEquipmentUiMessage { public T Message; public NetEntity? Pilot; // Horizon Mech public MechEquipmentUiMessageRelayEvent(T message, NetEntity? pilot) // Horizon Mech { Message = message; Pilot = pilot; // Horizon Mech } } /// /// UI event raised to remove a piece of equipment from a mech /// [Serializable, NetSerializable] public sealed class MechEquipmentRemoveMessage : BoundUserInterfaceMessage { public NetEntity Equipment; public MechEquipmentRemoveMessage(NetEntity equipment) { Equipment = equipment; } } /// /// base for all mech ui messages /// [Serializable, NetSerializable] public abstract class MechEquipmentUiMessage : BoundUserInterfaceMessage { public NetEntity Equipment; } /// /// event raised for the grabber equipment to eject an item from it's storage /// [Serializable, NetSerializable] public sealed class MechGrabberEjectMessage : MechEquipmentUiMessage { public NetEntity Item; public MechGrabberEjectMessage(NetEntity equipment, NetEntity uid) { Equipment = equipment; Item = uid; } } /// /// Event raised for the soundboard equipment to play a sound from its component /// [Serializable, NetSerializable] public sealed class MechSoundboardPlayMessage : MechEquipmentUiMessage { public int Sound; public MechSoundboardPlayMessage(NetEntity equipment, int sound) { Equipment = equipment; Sound = sound; } } /// /// BUI state for mechs that also contains all equipment ui states. /// /// /// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⢐⠤⢃⢰⠐⡄⣀⠀⠀ /// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⣨⠀⢁⠁⠐⡐⠠⠜⠐⠀ /// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠐⢀⡁⣀⠔⡌⠡⢀⢐⠁⠀ /// ⠀⠀⠀⠀⢀⠔⠀⡂⡄⠠⢀⡀⠀⣄⡀⠠⠤⠴⡋⠑⡠⠀⠔⠐⢂⠕⢀⡂⠀⠀ /// ⠀⠀⠀⡔⠁⠠⡐⠁⠀⠀⠀⢘⠀⠀⠀⠀⠠⠀⠈⠪⠀⠑⠡⣃⠈⠤⡈⠀⠀⠀ /// ⠀⠀⠨⠀⠄⡒⠀⡂⢈⠀⣀⢌⠀⠀⠁⡈⠀⢆⢀⠀⡀⠉⠒⢆⠑⠀⠀⠀⠀⠀ /// ⠀⠀⠀⡁⠐⠠⠐⡀⠀⢀⣀⠣⡀⠢⡀⠀⢀⡃⠰⠀⠈⠠⢁⠎⠀⠀⠀⠀⠀⠀ /// ⠀⠀⠀⠅⠒⣈⢣⠠⠈⠕⠁⠱⠄⢤⠈⠪⠡⠎⢘⠈⡁⢙⠈⠀⠀⠀⠀⠀⠀⠀ /// ⠀⠀⠀⠃⠀⢡⠀⠧⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢕⡈⠌⠀⠀⠀⠀⠀⠀⠀⠀ /// ⠀⠀⠀⠀⠀⠀⠈⡀⡀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⡐⠀⠀⠀⠀⠀⠀⠀⠀ /// ⠀⠀⠀⠀⠀⠀⠀⢈⢂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⡃⠀⠀⠀⠀⠀⠀⠀⠀ /// ⠀⠀⠀⠀⠀⠀⠀⠎⠐⢅⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⠅⠚⠄⠀⠀⠀⠀⠀⠀⠀ /// ⠀⠀⢈⠩⠈⠀⠐⠁⠀⢀⠀⠄⡂⠒⠐⠀⠆⠁⠰⠠⠀⢅⠈⠐⠄⢁⢡⠀⠀⠀ /// ⠀⠀⢈⡀⠰⡁⠀⠁⠴⠁⠔⠀⠀⠄⠄⡁⠀⠂⠀⠢⠠⠁⠀⠠⠈⠂⠬⠀⠀⠀ /// ⠀⠀⠠⡂⢄⠤⠒⣁⠐⢕⢀⡈⡐⡠⠄⢐⠀⠈⠠⠈⡀⠂⢀⣀⠰⠁⠠⠀⠀ /// trojan horse bui state⠀ /// [Serializable, NetSerializable] public sealed class MechBoundUiState : BoundUserInterfaceState { public Dictionary EquipmentStates = new(); // Horizon Mech } [Serializable, NetSerializable] public sealed class MechGrabberUiState : BoundUserInterfaceState { public List Contents = new(); public int MaxContents; } /// /// List of sound collection ids to be localized and displayed. /// [Serializable, NetSerializable] public sealed class MechSoundboardUiState : BoundUserInterfaceState { public List Sounds = new(); }