MonstermosInfo.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Content.Shared.Atmos;
  2. namespace Content.Server.Atmos
  3. {
  4. public struct MonstermosInfo
  5. {
  6. [ViewVariables]
  7. public int LastCycle;
  8. [ViewVariables]
  9. public long LastQueueCycle;
  10. [ViewVariables]
  11. public long LastSlowQueueCycle;
  12. [ViewVariables]
  13. public float MoleDelta;
  14. [ViewVariables]
  15. public float TransferDirectionEast;
  16. [ViewVariables]
  17. public float TransferDirectionWest;
  18. [ViewVariables]
  19. public float TransferDirectionNorth;
  20. [ViewVariables]
  21. public float TransferDirectionSouth;
  22. [ViewVariables]
  23. public float CurrentTransferAmount;
  24. [ViewVariables]
  25. public AtmosDirection CurrentTransferDirection;
  26. [ViewVariables]
  27. public bool FastDone;
  28. public float this[AtmosDirection direction]
  29. {
  30. get =>
  31. direction switch
  32. {
  33. AtmosDirection.East => TransferDirectionEast,
  34. AtmosDirection.West => TransferDirectionWest,
  35. AtmosDirection.North => TransferDirectionNorth,
  36. AtmosDirection.South => TransferDirectionSouth,
  37. _ => throw new ArgumentOutOfRangeException(nameof(direction))
  38. };
  39. set
  40. {
  41. switch (direction)
  42. {
  43. case AtmosDirection.East:
  44. TransferDirectionEast = value;
  45. break;
  46. case AtmosDirection.West:
  47. TransferDirectionWest = value;
  48. break;
  49. case AtmosDirection.North:
  50. TransferDirectionNorth = value;
  51. break;
  52. case AtmosDirection.South:
  53. TransferDirectionSouth = value;
  54. break;
  55. default:
  56. throw new ArgumentOutOfRangeException(nameof(direction));
  57. }
  58. }
  59. }
  60. public float this[int index]
  61. {
  62. get => this[(AtmosDirection) (1 << index)];
  63. set => this[(AtmosDirection) (1 << index)] = value;
  64. }
  65. }
  66. }