FTLComponent.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Content.Shared.Shuttles.Systems;
  2. using Content.Shared.Tag;
  3. using Content.Shared.Timing;
  4. using Robust.Shared.Audio;
  5. using Robust.Shared.GameStates;
  6. using Robust.Shared.Map;
  7. using Robust.Shared.Prototypes;
  8. namespace Content.Shared.Shuttles.Components;
  9. /// <summary>
  10. /// Added to a component when it is queued or is travelling via FTL.
  11. /// </summary>
  12. [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
  13. public sealed partial class FTLComponent : Component
  14. {
  15. // TODO Full game save / add datafields
  16. [ViewVariables]
  17. public FTLState State = FTLState.Available;
  18. [ViewVariables(VVAccess.ReadWrite)]
  19. public StartEndTime StateTime;
  20. [ViewVariables(VVAccess.ReadWrite)]
  21. public float StartupTime = 0f;
  22. // Because of sphagetti, actual travel time is Math.Max(TravelTime, DefaultArrivalTime)
  23. [ViewVariables(VVAccess.ReadWrite)]
  24. public float TravelTime = 0f;
  25. [DataField]
  26. public EntProtoId? VisualizerProto = "FtlVisualizerEntity";
  27. [DataField, AutoNetworkedField]
  28. public EntityUid? VisualizerEntity;
  29. /// <summary>
  30. /// Coordinates to arrive it: May be relative to another grid (for docking) or map coordinates.
  31. /// </summary>
  32. [DataField, AutoNetworkedField]
  33. public EntityCoordinates TargetCoordinates;
  34. [DataField, AutoNetworkedField]
  35. public Angle TargetAngle;
  36. /// <summary>
  37. /// If we're docking after FTL what is the prioritised dock tag (if applicable).
  38. /// </summary>
  39. [ViewVariables(VVAccess.ReadWrite), DataField]
  40. public ProtoId<TagPrototype>? PriorityTag;
  41. [ViewVariables(VVAccess.ReadWrite), DataField("soundTravel")]
  42. public SoundSpecifier? TravelSound = new SoundPathSpecifier("/Audio/Effects/Shuttle/hyperspace_progress.ogg")
  43. {
  44. Params = AudioParams.Default.WithVolume(-3f).WithLoop(true)
  45. };
  46. [DataField]
  47. public EntityUid? StartupStream;
  48. [DataField]
  49. public EntityUid? TravelStream;
  50. }