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 Dictionary States = new(); } /// /// Event raised to relay an equipment ui message /// public sealed class MechEquipmentUiMessageRelayEvent : EntityEventArgs { public MechEquipmentUiMessage Message; public MechEquipmentUiMessageRelayEvent(MechEquipmentUiMessage message) { Message = message; } } /// /// 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(); } [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(); }