1
0

JukeboxComponent.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Robust.Shared.GameStates;
  2. using Robust.Shared.Prototypes;
  3. using Robust.Shared.Serialization;
  4. namespace Content.Shared.Audio.Jukebox;
  5. [NetworkedComponent, RegisterComponent, AutoGenerateComponentState(true)]
  6. [Access(typeof(SharedJukeboxSystem))]
  7. public sealed partial class JukeboxComponent : Component
  8. {
  9. [DataField, AutoNetworkedField]
  10. public ProtoId<JukeboxPrototype>? SelectedSongId;
  11. [DataField, AutoNetworkedField]
  12. public EntityUid? AudioStream;
  13. /// <summary>
  14. /// RSI state for the jukebox being on.
  15. /// </summary>
  16. [DataField]
  17. public string? OnState;
  18. /// <summary>
  19. /// RSI state for the jukebox being on.
  20. /// </summary>
  21. [DataField]
  22. public string? OffState;
  23. /// <summary>
  24. /// RSI state for the jukebox track being selected.
  25. /// </summary>
  26. [DataField]
  27. public string? SelectState;
  28. [ViewVariables]
  29. public bool Selecting;
  30. [ViewVariables]
  31. public float SelectAccumulator;
  32. }
  33. [Serializable, NetSerializable]
  34. public sealed class JukeboxPlayingMessage : BoundUserInterfaceMessage;
  35. [Serializable, NetSerializable]
  36. public sealed class JukeboxPauseMessage : BoundUserInterfaceMessage;
  37. [Serializable, NetSerializable]
  38. public sealed class JukeboxStopMessage : BoundUserInterfaceMessage;
  39. [Serializable, NetSerializable]
  40. public sealed class JukeboxSelectedMessage(ProtoId<JukeboxPrototype> songId) : BoundUserInterfaceMessage
  41. {
  42. public ProtoId<JukeboxPrototype> SongId { get; } = songId;
  43. }
  44. [Serializable, NetSerializable]
  45. public sealed class JukeboxSetTimeMessage(float songTime) : BoundUserInterfaceMessage
  46. {
  47. public float SongTime { get; } = songTime;
  48. }
  49. [Serializable, NetSerializable]
  50. public enum JukeboxVisuals : byte
  51. {
  52. VisualState
  53. }
  54. [Serializable, NetSerializable]
  55. public enum JukeboxVisualState : byte
  56. {
  57. On,
  58. Off,
  59. Select,
  60. }
  61. public enum JukeboxVisualLayers : byte
  62. {
  63. Base
  64. }