Newer
Older
DungeonShooting / DungeonShooting_Godot / src / config / ExcelConfig_BulletBase.cs
  1. using System.Text.Json.Serialization;
  2. using System.Collections.Generic;
  3.  
  4. namespace Config;
  5.  
  6. public static partial class ExcelConfig
  7. {
  8. public class BulletBase
  9. {
  10. /// <summary>
  11. /// 子弹id
  12. /// </summary>
  13. [JsonInclude]
  14. public string Id;
  15.  
  16. /// <summary>
  17. /// 子弹名称
  18. /// </summary>
  19. [JsonInclude]
  20. public string Name;
  21.  
  22. /// <summary>
  23. /// 子弹类型: <br/>
  24. /// 实体子弹:1 <br/>
  25. /// 激光子弹:2 <br/>
  26. /// 纯伤害:3
  27. /// </summary>
  28. [JsonInclude]
  29. public int Type;
  30.  
  31. /// <summary>
  32. /// 绑定子弹预制体,根据Type填不同的参数 <br/>
  33. /// Type为1,填ActivityBase表Id <br/>
  34. /// Type为2,填场景路径 <br/>
  35. /// Type为3,不填
  36. /// </summary>
  37. [JsonInclude]
  38. public string Prefab;
  39.  
  40. /// <summary>
  41. /// 造成的伤害区间 <br/>
  42. /// 格式为[value]或者[min,max]
  43. /// </summary>
  44. [JsonInclude]
  45. public int[] HarmRange;
  46.  
  47. /// <summary>
  48. /// 造成伤害后击退值区间 <br/>
  49. /// 如果发射子弹,则按每发子弹算击退 <br/>
  50. /// 格式为[value]或者[min,max]
  51. /// </summary>
  52. [JsonInclude]
  53. public float[] RepelRange;
  54.  
  55. /// <summary>
  56. /// 子弹偏移角度区间 <br/>
  57. /// 用于设置子弹偏移朝向, 该属性和射半径效果类似, 但与其不同的是, 散射半径是用来控制枪口朝向的, 而该属性是控制子弹朝向的, 可用于制作霰弹枪子弹效果 <br/>
  58. /// 格式为[value]或者[min,max]
  59. /// </summary>
  60. [JsonInclude]
  61. public float[] DeviationAngleRange;
  62.  
  63. /// <summary>
  64. /// 子弹初速度区间 <br/>
  65. /// 格式为[value]或者[min,max]
  66. /// </summary>
  67. [JsonInclude]
  68. public float[] SpeedRange;
  69.  
  70. /// <summary>
  71. /// 子弹最大存在时间,单位:秒 <br/>
  72. /// 如果值小于等于0时子弹无限期存在 <br/>
  73. /// 只有Type为1时才需要填写 <br/>
  74. /// 格式为[value]或者[min,max]
  75. /// </summary>
  76. [JsonInclude]
  77. public float[] LifeTimeRange;
  78.  
  79. /// <summary>
  80. /// 子弹最大飞行距离区间 <br/>
  81. /// 格式为[value]或者[min,max]
  82. /// </summary>
  83. [JsonInclude]
  84. public float[] DistanceRange;
  85.  
  86. /// <summary>
  87. /// 初始纵轴速度区间 <br/>
  88. /// 只有Type为1时有效 <br/>
  89. /// 格式为[value]或者[min,max]
  90. /// </summary>
  91. [JsonInclude]
  92. public float[] VerticalSpeed;
  93.  
  94. /// <summary>
  95. /// 反弹次数区间 <br/>
  96. /// 只有Type为1或2时有效 <br/>
  97. /// 格式为[value]或者[min,max]
  98. /// </summary>
  99. [JsonInclude]
  100. public int[] BounceCount;
  101.  
  102. /// <summary>
  103. /// 子弹穿透次数区间 <br/>
  104. /// 只有Type为1时有效 <br/>
  105. /// 格式为[value]或者[min,max]
  106. /// </summary>
  107. [JsonInclude]
  108. public int[] Penetration;
  109.  
  110. /// <summary>
  111. /// 返回浅拷贝出的新对象
  112. /// </summary>
  113. public BulletBase Clone()
  114. {
  115. var inst = new BulletBase();
  116. inst.Id = Id;
  117. inst.Name = Name;
  118. inst.Type = Type;
  119. inst.Prefab = Prefab;
  120. inst.HarmRange = HarmRange;
  121. inst.RepelRange = RepelRange;
  122. inst.DeviationAngleRange = DeviationAngleRange;
  123. inst.SpeedRange = SpeedRange;
  124. inst.LifeTimeRange = LifeTimeRange;
  125. inst.DistanceRange = DistanceRange;
  126. inst.VerticalSpeed = VerticalSpeed;
  127. inst.BounceCount = BounceCount;
  128. inst.Penetration = Penetration;
  129. return inst;
  130. }
  131. }
  132. }