PinpointerComponent.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using Robust.Shared.GameStates;
  2. using Robust.Shared.Serialization;
  3. namespace Content.Shared.Pinpointer;
  4. /// <summary>
  5. /// Displays a sprite on the item that points towards the target component.
  6. /// </summary>
  7. [RegisterComponent, NetworkedComponent]
  8. [AutoGenerateComponentState]
  9. [Access(typeof(SharedPinpointerSystem))]
  10. public sealed partial class PinpointerComponent : Component
  11. {
  12. // TODO: Type serializer oh god
  13. [DataField("component"), ViewVariables(VVAccess.ReadWrite)]
  14. public string? Component;
  15. [DataField("mediumDistance"), ViewVariables(VVAccess.ReadWrite)]
  16. public float MediumDistance = 16f;
  17. [DataField("closeDistance"), ViewVariables(VVAccess.ReadWrite)]
  18. public float CloseDistance = 8f;
  19. [DataField("reachedDistance"), ViewVariables(VVAccess.ReadWrite)]
  20. public float ReachedDistance = 1f;
  21. /// <summary>
  22. /// Pinpointer arrow precision in radians.
  23. /// </summary>
  24. [DataField("precision"), ViewVariables(VVAccess.ReadWrite)]
  25. public double Precision = 0.09;
  26. /// <summary>
  27. /// Name to display of the target being tracked.
  28. /// </summary>
  29. [DataField("targetName"), ViewVariables(VVAccess.ReadWrite)]
  30. public string? TargetName;
  31. /// <summary>
  32. /// Whether or not the target name should be updated when the target is updated.
  33. /// </summary>
  34. [DataField("updateTargetName"), ViewVariables(VVAccess.ReadWrite)]
  35. public bool UpdateTargetName;
  36. /// <summary>
  37. /// Whether or not the target can be reassigned.
  38. /// </summary>
  39. [DataField("canRetarget"), ViewVariables(VVAccess.ReadWrite)]
  40. public bool CanRetarget;
  41. [ViewVariables]
  42. public EntityUid? Target = null;
  43. [ViewVariables, AutoNetworkedField]
  44. public bool IsActive = false;
  45. [ViewVariables, AutoNetworkedField]
  46. public Angle ArrowAngle;
  47. [ViewVariables, AutoNetworkedField]
  48. public Distance DistanceToTarget = Distance.Unknown;
  49. [ViewVariables]
  50. public bool HasTarget => DistanceToTarget != Distance.Unknown;
  51. }
  52. [Serializable, NetSerializable]
  53. public enum Distance : byte
  54. {
  55. Unknown,
  56. Reached,
  57. Close,
  58. Medium,
  59. Far
  60. }