GasCanisterComponent.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Content.Shared.Atmos;
  2. using Content.Shared.Containers.ItemSlots;
  3. using Content.Shared.Guidebook;
  4. using Robust.Shared.Audio;
  5. namespace Content.Server.Atmos.Piping.Unary.Components
  6. {
  7. [RegisterComponent]
  8. public sealed partial class GasCanisterComponent : Component, IGasMixtureHolder
  9. {
  10. [ViewVariables(VVAccess.ReadWrite)]
  11. [DataField("port")]
  12. public string PortName { get; set; } = "port";
  13. /// <summary>
  14. /// Container name for the gas tank holder.
  15. /// </summary>
  16. [ViewVariables(VVAccess.ReadWrite)]
  17. [DataField("container")]
  18. public string ContainerName { get; set; } = "tank_slot";
  19. [ViewVariables(VVAccess.ReadWrite)]
  20. [DataField]
  21. public ItemSlot GasTankSlot = new();
  22. [ViewVariables(VVAccess.ReadWrite)]
  23. [DataField("gasMixture")]
  24. public GasMixture Air { get; set; } = new();
  25. /// <summary>
  26. /// Last recorded pressure, for appearance-updating purposes.
  27. /// </summary>
  28. public float LastPressure { get; set; } = 0f;
  29. /// <summary>
  30. /// Minimum release pressure possible for the release valve.
  31. /// </summary>
  32. [ViewVariables(VVAccess.ReadWrite)]
  33. [DataField("minReleasePressure")]
  34. public float MinReleasePressure { get; set; } = Atmospherics.OneAtmosphere / 10;
  35. /// <summary>
  36. /// Maximum release pressure possible for the release valve.
  37. /// </summary>
  38. [ViewVariables(VVAccess.ReadWrite)]
  39. [DataField("maxReleasePressure")]
  40. public float MaxReleasePressure { get; set; } = Atmospherics.OneAtmosphere * 10;
  41. /// <summary>
  42. /// Valve release pressure.
  43. /// </summary>
  44. [ViewVariables(VVAccess.ReadWrite)]
  45. [DataField("releasePressure")]
  46. public float ReleasePressure { get; set; } = Atmospherics.OneAtmosphere;
  47. /// <summary>
  48. /// Whether the release valve is open on the canister.
  49. /// </summary>
  50. [ViewVariables(VVAccess.ReadWrite)]
  51. [DataField("releaseValve")]
  52. public bool ReleaseValve { get; set; } = false;
  53. [DataField("accessDeniedSound")]
  54. public SoundSpecifier AccessDeniedSound = new SoundPathSpecifier("/Audio/Machines/custom_deny.ogg");
  55. #region GuidebookData
  56. [GuidebookData]
  57. public float Volume => Air.Volume;
  58. #endregion
  59. }
  60. }