MechUI.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using Robust.Shared.Serialization;
  2. namespace Content.Shared.Mech;
  3. [Serializable, NetSerializable]
  4. public enum MechUiKey : byte
  5. {
  6. Key
  7. }
  8. /// <summary>
  9. /// Event raised to collect BUI states for each of the mech's equipment items
  10. /// </summary>
  11. public sealed class MechEquipmentUiStateReadyEvent : EntityEventArgs
  12. {
  13. public Dictionary<NetEntity, BoundUserInterfaceState> States = new();
  14. }
  15. /// <summary>
  16. /// Event raised to relay an equipment ui message
  17. /// </summary>
  18. public sealed class MechEquipmentUiMessageRelayEvent : EntityEventArgs
  19. {
  20. public MechEquipmentUiMessage Message;
  21. public MechEquipmentUiMessageRelayEvent(MechEquipmentUiMessage message)
  22. {
  23. Message = message;
  24. }
  25. }
  26. /// <summary>
  27. /// UI event raised to remove a piece of equipment from a mech
  28. /// </summary>
  29. [Serializable, NetSerializable]
  30. public sealed class MechEquipmentRemoveMessage : BoundUserInterfaceMessage
  31. {
  32. public NetEntity Equipment;
  33. public MechEquipmentRemoveMessage(NetEntity equipment)
  34. {
  35. Equipment = equipment;
  36. }
  37. }
  38. /// <summary>
  39. /// base for all mech ui messages
  40. /// </summary>
  41. [Serializable, NetSerializable]
  42. public abstract class MechEquipmentUiMessage : BoundUserInterfaceMessage
  43. {
  44. public NetEntity Equipment;
  45. }
  46. /// <summary>
  47. /// event raised for the grabber equipment to eject an item from it's storage
  48. /// </summary>
  49. [Serializable, NetSerializable]
  50. public sealed class MechGrabberEjectMessage : MechEquipmentUiMessage
  51. {
  52. public NetEntity Item;
  53. public MechGrabberEjectMessage(NetEntity equipment, NetEntity uid)
  54. {
  55. Equipment = equipment;
  56. Item = uid;
  57. }
  58. }
  59. /// <summary>
  60. /// Event raised for the soundboard equipment to play a sound from its component
  61. /// </summary>
  62. [Serializable, NetSerializable]
  63. public sealed class MechSoundboardPlayMessage : MechEquipmentUiMessage
  64. {
  65. public int Sound;
  66. public MechSoundboardPlayMessage(NetEntity equipment, int sound)
  67. {
  68. Equipment = equipment;
  69. Sound = sound;
  70. }
  71. }
  72. /// <summary>
  73. /// BUI state for mechs that also contains all equipment ui states.
  74. /// </summary>
  75. /// <remarks>
  76. /// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⢐⠤⢃⢰⠐⡄⣀⠀⠀
  77. /// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⣨⠀⢁⠁⠐⡐⠠⠜⠐⠀
  78. /// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠐⢀⡁⣀⠔⡌⠡⢀⢐⠁⠀
  79. /// ⠀⠀⠀⠀⢀⠔⠀⡂⡄⠠⢀⡀⠀⣄⡀⠠⠤⠴⡋⠑⡠⠀⠔⠐⢂⠕⢀⡂⠀⠀
  80. /// ⠀⠀⠀⡔⠁⠠⡐⠁⠀⠀⠀⢘⠀⠀⠀⠀⠠⠀⠈⠪⠀⠑⠡⣃⠈⠤⡈⠀⠀⠀
  81. /// ⠀⠀⠨⠀⠄⡒⠀⡂⢈⠀⣀⢌⠀⠀⠁⡈⠀⢆⢀⠀⡀⠉⠒⢆⠑⠀⠀⠀⠀⠀
  82. /// ⠀⠀⠀⡁⠐⠠⠐⡀⠀⢀⣀⠣⡀⠢⡀⠀⢀⡃⠰⠀⠈⠠⢁⠎⠀⠀⠀⠀⠀⠀
  83. /// ⠀⠀⠀⠅⠒⣈⢣⠠⠈⠕⠁⠱⠄⢤⠈⠪⠡⠎⢘⠈⡁⢙⠈⠀⠀⠀⠀⠀⠀⠀
  84. /// ⠀⠀⠀⠃⠀⢡⠀⠧⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢕⡈⠌⠀⠀⠀⠀⠀⠀⠀⠀
  85. /// ⠀⠀⠀⠀⠀⠀⠈⡀⡀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⡐⠀⠀⠀⠀⠀⠀⠀⠀
  86. /// ⠀⠀⠀⠀⠀⠀⠀⢈⢂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⡃⠀⠀⠀⠀⠀⠀⠀⠀
  87. /// ⠀⠀⠀⠀⠀⠀⠀⠎⠐⢅⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⠅⠚⠄⠀⠀⠀⠀⠀⠀⠀
  88. /// ⠀⠀⢈⠩⠈⠀⠐⠁⠀⢀⠀⠄⡂⠒⠐⠀⠆⠁⠰⠠⠀⢅⠈⠐⠄⢁⢡⠀⠀⠀
  89. /// ⠀⠀⢈⡀⠰⡁⠀⠁⠴⠁⠔⠀⠀⠄⠄⡁⠀⠂⠀⠢⠠⠁⠀⠠⠈⠂⠬⠀⠀⠀
  90. /// ⠀⠀⠠⡂⢄⠤⠒⣁⠐⢕⢀⡈⡐⡠⠄⢐⠀⠈⠠⠈⡀⠂⢀⣀⠰⠁⠠⠀⠀
  91. /// trojan horse bui state⠀
  92. /// </remarks>
  93. [Serializable, NetSerializable]
  94. public sealed class MechBoundUiState : BoundUserInterfaceState
  95. {
  96. public Dictionary<NetEntity, BoundUserInterfaceState> EquipmentStates = new();
  97. }
  98. [Serializable, NetSerializable]
  99. public sealed class MechGrabberUiState : BoundUserInterfaceState
  100. {
  101. public List<NetEntity> Contents = new();
  102. public int MaxContents;
  103. }
  104. /// <summary>
  105. /// List of sound collection ids to be localized and displayed.
  106. /// </summary>
  107. [Serializable, NetSerializable]
  108. public sealed class MechSoundboardUiState : BoundUserInterfaceState
  109. {
  110. public List<string> Sounds = new();
  111. }