Newer
Older
DungeonShooting / DungeonShooting_Godot / src / config / ExcelConfig_Weapon.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 Weapon
  9. {
  10. /// <summary>
  11. /// 物体唯一id <br/>
  12. /// 不需要添加类型前缀
  13. /// </summary>
  14. [JsonInclude]
  15. public string Id { get; private set; }
  16.  
  17. /// <summary>
  18. /// 武器 Prefab, 必须继承场景 "res://prefab/weapon/Weapon.tscn"
  19. /// </summary>
  20. [JsonInclude]
  21. public string Prefab { get; private set; }
  22.  
  23. /// <summary>
  24. /// 重量
  25. /// </summary>
  26. [JsonInclude]
  27. public float Weight { get; private set; }
  28.  
  29. /// <summary>
  30. /// 武器显示的名称
  31. /// </summary>
  32. [JsonInclude]
  33. public string Name { get; private set; }
  34.  
  35. /// <summary>
  36. /// 武器的图标
  37. /// </summary>
  38. [JsonInclude]
  39. public string Icon { get; private set; }
  40.  
  41. /// <summary>
  42. /// 武器类型: <br/>
  43. /// 1.副武器 <br/>
  44. /// 2.主武器 <br/>
  45. /// 3.重型武器
  46. /// </summary>
  47. [JsonInclude]
  48. public byte WeightType { get; private set; }
  49.  
  50. /// <summary>
  51. /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机
  52. /// </summary>
  53. [JsonInclude]
  54. public bool ContinuousShoot { get; private set; }
  55.  
  56. /// <summary>
  57. /// 弹夹容量
  58. /// </summary>
  59. [JsonInclude]
  60. public int AmmoCapacity { get; private set; }
  61.  
  62. /// <summary>
  63. /// 弹药容量上限
  64. /// </summary>
  65. [JsonInclude]
  66. public int MaxAmmoCapacity { get; private set; }
  67.  
  68. /// <summary>
  69. /// 起始备用弹药数量
  70. /// </summary>
  71. [JsonInclude]
  72. public int StandbyAmmoCapacity { get; private set; }
  73.  
  74. /// <summary>
  75. /// 装弹时间, 单位: 秒
  76. /// </summary>
  77. [JsonInclude]
  78. public float ReloadTime { get; private set; }
  79.  
  80. /// <summary>
  81. /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹武器装填效果
  82. /// </summary>
  83. [JsonInclude]
  84. public bool AloneReload { get; private set; }
  85.  
  86. /// <summary>
  87. /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
  88. /// </summary>
  89. [JsonInclude]
  90. public int AloneReloadCount { get; private set; }
  91.  
  92. /// <summary>
  93. /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
  94. /// </summary>
  95. [JsonInclude]
  96. public bool AloneReloadCanShoot { get; private set; }
  97.  
  98. /// <summary>
  99. /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
  100. /// </summary>
  101. [JsonInclude]
  102. public bool LooseShoot { get; private set; }
  103.  
  104. /// <summary>
  105. /// 最少需要蓄力多久才能开火, 必须将 'LooseShoot' 设置为 true
  106. /// </summary>
  107. [JsonInclude]
  108. public float MinChargeTime { get; private set; }
  109.  
  110. /// <summary>
  111. /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效
  112. /// </summary>
  113. [JsonInclude]
  114. public int MinContinuousCount { get; private set; }
  115.  
  116. /// <summary>
  117. /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效
  118. /// </summary>
  119. [JsonInclude]
  120. public int MaxContinuousCount { get; private set; }
  121.  
  122. /// <summary>
  123. /// 按下一次扳机后需要多长时间才能再次感应按下
  124. /// </summary>
  125. [JsonInclude]
  126. public float TriggerInterval { get; private set; }
  127.  
  128. /// <summary>
  129. /// 初始射速, 初始每分钟能开火次数
  130. /// </summary>
  131. [JsonInclude]
  132. public float StartFiringSpeed { get; private set; }
  133.  
  134. /// <summary>
  135. /// 最终射速, 最终每分钟能开火次数, 仅当 ContinuousShoot 为 true 时生效
  136. /// </summary>
  137. [JsonInclude]
  138. public float FinalFiringSpeed { get; private set; }
  139.  
  140. /// <summary>
  141. /// 按下扳机并开火后射速增加速率
  142. /// </summary>
  143. [JsonInclude]
  144. public float FiringSpeedAddSpeed { get; private set; }
  145.  
  146. /// <summary>
  147. /// 松开扳机后射速消散速率
  148. /// </summary>
  149. [JsonInclude]
  150. public float FiringSpeedBackSpeed { get; private set; }
  151.  
  152. /// <summary>
  153. /// 单次开火发射子弹最小数量
  154. /// </summary>
  155. [JsonInclude]
  156. public int MinFireBulletCount { get; private set; }
  157.  
  158. /// <summary>
  159. /// 单次开火发射子弹最大数量
  160. /// </summary>
  161. [JsonInclude]
  162. public int MaxFireBulletCount { get; private set; }
  163.  
  164. /// <summary>
  165. /// 开火前延时
  166. /// </summary>
  167. [JsonInclude]
  168. public float DelayedTime { get; private set; }
  169.  
  170. /// <summary>
  171. /// 初始散射半径
  172. /// </summary>
  173. [JsonInclude]
  174. public float StartScatteringRange { get; private set; }
  175.  
  176. /// <summary>
  177. /// 最终散射半径
  178. /// </summary>
  179. [JsonInclude]
  180. public float FinalScatteringRange { get; private set; }
  181.  
  182. /// <summary>
  183. /// 每次发射后散射增加值
  184. /// </summary>
  185. [JsonInclude]
  186. public float ScatteringRangeAddValue { get; private set; }
  187.  
  188. /// <summary>
  189. /// 松开扳机后散射销退速率
  190. /// </summary>
  191. [JsonInclude]
  192. public float ScatteringRangeBackSpeed { get; private set; }
  193.  
  194. /// <summary>
  195. /// 松开扳机多久后开始销退散射值 (单位: 秒)
  196. /// </summary>
  197. [JsonInclude]
  198. public float ScatteringRangeBackTime { get; private set; }
  199.  
  200. /// <summary>
  201. /// 子弹飞行最大距离
  202. /// </summary>
  203. [JsonInclude]
  204. public float MaxDistance { get; private set; }
  205.  
  206. /// <summary>
  207. /// 子弹飞行最小距离
  208. /// </summary>
  209. [JsonInclude]
  210. public float MinDistance { get; private set; }
  211.  
  212. /// <summary>
  213. /// 最大后坐力 (仅用于开火后武器身抖动)
  214. /// </summary>
  215. [JsonInclude]
  216. public float MaxBacklash { get; private set; }
  217.  
  218. /// <summary>
  219. /// 最小后坐力 (仅用于开火后武器身抖动)
  220. /// </summary>
  221. [JsonInclude]
  222. public float MinBacklash { get; private set; }
  223.  
  224. /// <summary>
  225. /// 后坐力偏移回归回归速度
  226. /// </summary>
  227. [JsonInclude]
  228. public float BacklashRegressionSpeed { get; private set; }
  229.  
  230. /// <summary>
  231. /// 开火后武器口上抬角度
  232. /// </summary>
  233. [JsonInclude]
  234. public float UpliftAngle { get; private set; }
  235.  
  236. /// <summary>
  237. /// 武器默认上抬角度
  238. /// </summary>
  239. [JsonInclude]
  240. public float DefaultAngle { get; private set; }
  241.  
  242. /// <summary>
  243. /// 开火后武器口角度恢复速度倍数
  244. /// </summary>
  245. [JsonInclude]
  246. public float UpliftAngleRestore { get; private set; }
  247.  
  248. /// <summary>
  249. /// 默认射出的子弹id
  250. /// </summary>
  251. [JsonInclude]
  252. public string BulletId { get; private set; }
  253.  
  254. /// <summary>
  255. /// 投抛状态下物体碰撞器大小
  256. /// </summary>
  257. [JsonInclude]
  258. public SerializeVector2 ThrowCollisionSize { get; private set; }
  259.  
  260. }
  261. }