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时有效
  89. /// </summary>
  90. [JsonInclude]
  91. public bool UseGravity;
  92.  
  93. /// <summary>
  94. /// 初始纵轴速度区间 <br/>
  95. /// 只有Type为1时有效 <br/>
  96. /// 格式为[value]或者[min,max]
  97. /// </summary>
  98. [JsonInclude]
  99. public float[] VerticalSpeed;
  100.  
  101. /// <summary>
  102. /// 反弹次数区间 <br/>
  103. /// 只有Type为1或2时有效 <br/>
  104. /// 格式为[value]或者[min,max]
  105. /// </summary>
  106. [JsonInclude]
  107. public int[] BounceCount;
  108.  
  109. /// <summary>
  110. /// 子弹穿透次数区间 <br/>
  111. /// 只有Type为1时有效 <br/>
  112. /// 格式为[value]或者[min,max]
  113. /// </summary>
  114. [JsonInclude]
  115. public int[] Penetration;
  116.  
  117. /// <summary>
  118. /// 返回浅拷贝出的新对象
  119. /// </summary>
  120. public BulletBase Clone()
  121. {
  122. var inst = new BulletBase();
  123. inst.Id = Id;
  124. inst.Name = Name;
  125. inst.Type = Type;
  126. inst.Prefab = Prefab;
  127. inst.HarmRange = HarmRange;
  128. inst.RepelRange = RepelRange;
  129. inst.DeviationAngleRange = DeviationAngleRange;
  130. inst.SpeedRange = SpeedRange;
  131. inst.LifeTimeRange = LifeTimeRange;
  132. inst.DistanceRange = DistanceRange;
  133. inst.UseGravity = UseGravity;
  134. inst.VerticalSpeed = VerticalSpeed;
  135. inst.BounceCount = BounceCount;
  136. inst.Penetration = Penetration;
  137. return inst;
  138. }
  139. }
  140. }