BlockGameBlock.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using Robust.Shared.Serialization;
  2. namespace Content.Shared.Arcade
  3. {
  4. [Serializable, NetSerializable]
  5. public struct BlockGameBlock
  6. {
  7. public Vector2i Position;
  8. public readonly BlockGameBlockColor GameBlockColor;
  9. public BlockGameBlock(Vector2i position, BlockGameBlockColor gameBlockColor)
  10. {
  11. Position = position;
  12. GameBlockColor = gameBlockColor;
  13. }
  14. [Serializable, NetSerializable]
  15. public enum BlockGameBlockColor
  16. {
  17. Red,
  18. Orange,
  19. Yellow,
  20. Green,
  21. Blue,
  22. LightBlue,
  23. Purple,
  24. GhostRed,
  25. GhostOrange,
  26. GhostYellow,
  27. GhostGreen,
  28. GhostBlue,
  29. GhostLightBlue,
  30. GhostPurple,
  31. }
  32. public static BlockGameBlockColor ToGhostBlockColor(BlockGameBlockColor inColor)
  33. {
  34. return inColor switch
  35. {
  36. BlockGameBlockColor.Red => BlockGameBlockColor.GhostRed,
  37. BlockGameBlockColor.Orange => BlockGameBlockColor.GhostOrange,
  38. BlockGameBlockColor.Yellow => BlockGameBlockColor.GhostYellow,
  39. BlockGameBlockColor.Green => BlockGameBlockColor.GhostGreen,
  40. BlockGameBlockColor.Blue => BlockGameBlockColor.GhostBlue,
  41. BlockGameBlockColor.LightBlue => BlockGameBlockColor.GhostLightBlue,
  42. BlockGameBlockColor.Purple => BlockGameBlockColor.GhostPurple,
  43. _ => inColor
  44. };
  45. }
  46. public static Color ToColor(BlockGameBlockColor inColor)
  47. {
  48. return inColor switch
  49. {
  50. BlockGameBlockColor.Red => Color.Red,
  51. BlockGameBlockColor.Orange => Color.Orange,
  52. BlockGameBlockColor.Yellow => Color.Yellow,
  53. BlockGameBlockColor.Green => Color.Lime,
  54. BlockGameBlockColor.Blue => Color.Blue,
  55. BlockGameBlockColor.Purple => Color.DarkOrchid,
  56. BlockGameBlockColor.LightBlue => Color.Cyan,
  57. BlockGameBlockColor.GhostRed => Color.Red.WithAlpha(0.33f),
  58. BlockGameBlockColor.GhostOrange => Color.Orange.WithAlpha(0.33f),
  59. BlockGameBlockColor.GhostYellow => Color.Yellow.WithAlpha(0.33f),
  60. BlockGameBlockColor.GhostGreen => Color.Lime.WithAlpha(0.33f),
  61. BlockGameBlockColor.GhostBlue => Color.Blue.WithAlpha(0.33f),
  62. BlockGameBlockColor.GhostPurple => Color.DarkOrchid.WithAlpha(0.33f),
  63. BlockGameBlockColor.GhostLightBlue => Color.Cyan.WithAlpha(0.33f),
  64. _ => Color.Olive //olive is error
  65. };
  66. }
  67. }
  68. public static class BlockGameVector2Extensions
  69. {
  70. public static BlockGameBlock ToBlockGameBlock(this Vector2i vector2, BlockGameBlock.BlockGameBlockColor gameBlockColor)
  71. {
  72. return new(vector2, gameBlockColor);
  73. }
  74. public static Vector2i AddToX(this Vector2i vector2, int amount)
  75. {
  76. return new(vector2.X + amount, vector2.Y);
  77. }
  78. public static Vector2i AddToY(this Vector2i vector2, int amount)
  79. {
  80. return new(vector2.X, vector2.Y + amount);
  81. }
  82. public static Vector2i Rotate90DegreesAsOffset(this Vector2i vector)
  83. {
  84. return new(-vector.Y, vector.X);
  85. }
  86. }
  87. }