1
0

BeeperComponent.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Content.Shared.Beeper.Systems;
  2. using Content.Shared.FixedPoint;
  3. using Content.Shared.ProximityDetection.Systems;
  4. using Robust.Shared.Audio;
  5. using Robust.Shared.GameStates;
  6. namespace Content.Shared.Beeper.Components;
  7. /// <summary>
  8. /// This is used for an item that beeps based on
  9. /// proximity to a specified component.
  10. /// </summary>
  11. /// <remarks>
  12. /// Requires <c>ItemToggleComponent</c> to control it.
  13. /// </remarks>
  14. [RegisterComponent, NetworkedComponent, Access(typeof(BeeperSystem)), AutoGenerateComponentState]
  15. public sealed partial class BeeperComponent : Component
  16. {
  17. /// <summary>
  18. /// How much to scale the interval by (< 0 = min, > 1 = max)
  19. /// </summary>
  20. [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  21. public FixedPoint2 IntervalScaling = 0;
  22. /// <summary>
  23. /// The maximum interval between beeps.
  24. /// </summary>
  25. [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  26. public TimeSpan MaxBeepInterval = TimeSpan.FromSeconds(1.5f);
  27. /// <summary>
  28. /// The minimum interval between beeps.
  29. /// </summary>
  30. [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  31. public TimeSpan MinBeepInterval = TimeSpan.FromSeconds(0.25f);
  32. /// <summary>
  33. /// Interval for the next beep
  34. /// </summary>
  35. [ViewVariables(VVAccess.ReadWrite)]
  36. public TimeSpan Interval;
  37. /// <summary>
  38. /// Time when we beeped last
  39. /// </summary>
  40. [ViewVariables(VVAccess.ReadWrite)]
  41. public TimeSpan LastBeepTime;
  42. [ViewVariables(VVAccess.ReadOnly)]
  43. public TimeSpan NextBeep => LastBeepTime == TimeSpan.MaxValue ? TimeSpan.MaxValue : LastBeepTime + Interval;
  44. /// <summary>
  45. /// Is the beep muted
  46. /// </summary>
  47. [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  48. public bool IsMuted;
  49. /// <summary>
  50. /// The sound played when the locator beeps.
  51. /// </summary>
  52. [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  53. public SoundSpecifier? BeepSound;
  54. }