Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / common / Utils.cs
  1. using System.Collections.Generic;
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 常用函数工具类
  6. /// </summary>
  7. public static class Utils
  8. {
  9.  
  10. /// <summary>
  11. /// 返回随机 boolean 值
  12. /// </summary>
  13. public static bool RandBoolean()
  14. {
  15. return GD.Randf() >= 0.5f;
  16. }
  17.  
  18. /// <summary>
  19. /// 返回一个区间内的随机小数
  20. /// </summary>
  21. public static float RandfRange(float min, float max)
  22. {
  23. if (min == max) return min;
  24. if (min > max)
  25. return GD.Randf() * (min - max) + max;
  26. return GD.Randf() * (max - min) + min;
  27. }
  28.  
  29. /// <summary>
  30. /// 返回一个区间内的随机整数
  31. /// </summary>
  32. public static int RandRangeInt(int min, int max)
  33. {
  34. if (min == max) return min;
  35. if (min > max)
  36. return Mathf.FloorToInt(GD.Randf() * (min - max + 1) + max);
  37. return Mathf.FloorToInt(GD.Randf() * (max - min + 1) + min);
  38. }
  39.  
  40. /// <summary>
  41. /// 随机返回其中一个参数
  42. /// </summary>
  43. public static T RandChoose<T>(params T[] list)
  44. {
  45. if (list.Length == 0)
  46. {
  47. return default;
  48. }
  49.  
  50. return list[RandRangeInt(0, list.Length - 1)];
  51. }
  52.  
  53. /// <summary>
  54. /// 随机返回集合中的一个元素
  55. /// </summary>
  56. public static T RandChoose<T>(List<T> list)
  57. {
  58. if (list.Count == 0)
  59. {
  60. return default;
  61. }
  62.  
  63. return list[RandRangeInt(0, list.Count - 1)];
  64. }
  65.  
  66. public static Rect2 CalcRect(float start1, float end1, float start2, float end2)
  67. {
  68. return new Rect2(
  69. Mathf.Min(start1, start2), Mathf.Min(end1, end2),
  70. Mathf.Abs(start1 - start2), Mathf.Abs(end1 - end2)
  71. );
  72. }
  73. }