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