Newer
Older
DungeonShooting / DungeonShooting_Godot / src / config / ExcelConfig_WeaponBase.cs
@小李xl 小李xl on 4 Feb 2024 14 KB 弓, 制作中
  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 WeaponBase
  9. {
  10. /// <summary>
  11. /// 武器属性id
  12. /// </summary>
  13. [JsonInclude]
  14. public string Id;
  15.  
  16. /// <summary>
  17. /// 备注
  18. /// </summary>
  19. [JsonInclude]
  20. public string Remark;
  21.  
  22. /// <summary>
  23. /// 属性绑定武器的Id,这个id时ActivityBase表Id,如果是Ai使用的数据, 则填空字符串串
  24. /// </summary>
  25. public ActivityBase Activity;
  26.  
  27. /// <summary>
  28. /// 重量
  29. /// </summary>
  30. [JsonInclude]
  31. public float Weight;
  32.  
  33. /// <summary>
  34. /// 武器类型: <br/>
  35. /// 1.副武器 <br/>
  36. /// 2.主武器 <br/>
  37. /// 3.重型武器
  38. /// </summary>
  39. [JsonInclude]
  40. public byte WeightType;
  41.  
  42. /// <summary>
  43. /// 标记是否是近战武器
  44. /// </summary>
  45. [JsonInclude]
  46. public bool IsMelee;
  47.  
  48. /// <summary>
  49. /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机
  50. /// </summary>
  51. [JsonInclude]
  52. public bool ContinuousShoot;
  53.  
  54. /// <summary>
  55. /// 弹夹容量
  56. /// </summary>
  57. [JsonInclude]
  58. public int AmmoCapacity;
  59.  
  60. /// <summary>
  61. /// 弹药容量上限
  62. /// </summary>
  63. [JsonInclude]
  64. public int MaxAmmoCapacity;
  65.  
  66. /// <summary>
  67. /// 默认起始备用弹药数量
  68. /// </summary>
  69. [JsonInclude]
  70. public int StandbyAmmoCapacity;
  71.  
  72. /// <summary>
  73. /// 换弹是否显示换弹进度
  74. /// </summary>
  75. [JsonInclude]
  76. public bool ShowReloadBar;
  77.  
  78. /// <summary>
  79. /// 弹夹打空是否自动换弹
  80. /// </summary>
  81. [JsonInclude]
  82. public bool AutoReload;
  83.  
  84. /// <summary>
  85. /// 装弹时间 (单位: 秒)
  86. /// </summary>
  87. [JsonInclude]
  88. public float ReloadTime;
  89.  
  90. /// <summary>
  91. /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹枪装填效果
  92. /// </summary>
  93. [JsonInclude]
  94. public bool AloneReload;
  95.  
  96. /// <summary>
  97. /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
  98. /// </summary>
  99. [JsonInclude]
  100. public int AloneReloadCount;
  101.  
  102. /// <summary>
  103. /// 单独装弹模式下,从触发装弹到开始装第一发子弹中间的间隔时间, 必须要将 'AloneReload' 属性设置为 true
  104. /// </summary>
  105. [JsonInclude]
  106. public float AloneReloadBeginIntervalTime;
  107.  
  108. /// <summary>
  109. /// 单独装弹模式下,从装完最后一发子弹到可以射击中间的间隔时间, 必须要将 'AloneReload' 属性设置为 true
  110. /// </summary>
  111. [JsonInclude]
  112. public float AloneReloadFinishIntervalTime;
  113.  
  114. /// <summary>
  115. /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
  116. /// </summary>
  117. [JsonInclude]
  118. public bool AloneReloadCanShoot;
  119.  
  120. /// <summary>
  121. /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
  122. /// </summary>
  123. [JsonInclude]
  124. public bool LooseShoot;
  125.  
  126. /// <summary>
  127. /// 最少需要蓄力多久才能开火, 必须将 'LooseShoot' 设置为 true
  128. /// </summary>
  129. [JsonInclude]
  130. public float MinChargeTime;
  131.  
  132. /// <summary>
  133. /// 单次射击后是否需要手动上膛动作, 必须将 'ContinuousShoot' 设置为 false
  134. /// </summary>
  135. [JsonInclude]
  136. public bool ManualBeLoaded;
  137.  
  138. /// <summary>
  139. /// 手动上膛模式下, 单次射击后是否自动执行上膛操作, 必须将 'ManualBeLoaded' 设置为 true
  140. /// </summary>
  141. [JsonInclude]
  142. public bool AutoManualBeLoaded;
  143.  
  144. /// <summary>
  145. /// 上膛时间, 如果时间为0, 则不会播放上膛动画和音效, 可以视为没有上膛动作, 必须将 'ManualBeLoaded' 设置为 true
  146. /// </summary>
  147. [JsonInclude]
  148. public float BeLoadedTime;
  149.  
  150. /// <summary>
  151. /// 连续发射次数区间, 仅当 'ContinuousShoot' 为 false 时生效 <br/>
  152. /// 格式为[value]或者[min,max]
  153. /// </summary>
  154. [JsonInclude]
  155. public int[] ContinuousCountRange;
  156.  
  157. /// <summary>
  158. /// 按下一次扳机后需要多长时间才能再次感应按下
  159. /// </summary>
  160. [JsonInclude]
  161. public float TriggerInterval;
  162.  
  163. /// <summary>
  164. /// 初始射速, 初始每分钟能开火次数
  165. /// </summary>
  166. [JsonInclude]
  167. public float StartFiringSpeed;
  168.  
  169. /// <summary>
  170. /// 最终射速, 最终每分钟能开火次数, 仅当 'ContinuousShoot' 为 true 时生效
  171. /// </summary>
  172. [JsonInclude]
  173. public float FinalFiringSpeed;
  174.  
  175. /// <summary>
  176. /// 按下扳机并开火后射速每秒增加量
  177. /// </summary>
  178. [JsonInclude]
  179. public float FiringSpeedAddSpeed;
  180.  
  181. /// <summary>
  182. /// 松开扳机后射速消散速率
  183. /// </summary>
  184. [JsonInclude]
  185. public float FiringSpeedBackSpeed;
  186.  
  187. /// <summary>
  188. /// 松开扳机后射速消散开始时间, 单位: 秒
  189. /// </summary>
  190. [JsonInclude]
  191. public float FiringSpeedBackTime;
  192.  
  193. /// <summary>
  194. /// 单次开火发射子弹数量区间 <br/>
  195. /// 格式为[value]或者[min,max]
  196. /// </summary>
  197. [JsonInclude]
  198. public int[] FireBulletCountRange;
  199.  
  200. /// <summary>
  201. /// 从按下扳机到发射第一发子弹的延时时, 如果中途松开扳机, 那么延时时间会重新计算, 必须将 'LooseShoot' 设置为 false
  202. /// </summary>
  203. [JsonInclude]
  204. public float DelayedTime;
  205.  
  206. /// <summary>
  207. /// 初始散射半径
  208. /// </summary>
  209. [JsonInclude]
  210. public float StartScatteringRange;
  211.  
  212. /// <summary>
  213. /// 最终散射半径
  214. /// </summary>
  215. [JsonInclude]
  216. public float FinalScatteringRange;
  217.  
  218. /// <summary>
  219. /// 每次发射后散射增加值
  220. /// </summary>
  221. [JsonInclude]
  222. public float ScatteringRangeAddValue;
  223.  
  224. /// <summary>
  225. /// 散射值销退速率
  226. /// </summary>
  227. [JsonInclude]
  228. public float ScatteringRangeBackSpeed;
  229.  
  230. /// <summary>
  231. /// 开始销退散射值的延时时间
  232. /// </summary>
  233. [JsonInclude]
  234. public float ScatteringRangeBackDelayTime;
  235.  
  236. /// <summary>
  237. /// 开火后相机抖动强度,只有玩家拾起武器开火才会抖动相机
  238. /// </summary>
  239. [JsonInclude]
  240. public float CameraShake;
  241.  
  242. /// <summary>
  243. /// 后坐力区间 (仅用于开火后武器身抖动) <br/>
  244. /// 格式为[value]或者[min,max]
  245. /// </summary>
  246. [JsonInclude]
  247. public float[] BacklashRange;
  248.  
  249. /// <summary>
  250. /// 后坐力偏移回归回归速度
  251. /// </summary>
  252. [JsonInclude]
  253. public float BacklashRegressionSpeed;
  254.  
  255. /// <summary>
  256. /// 开火后武器口上抬角度
  257. /// </summary>
  258. [JsonInclude]
  259. public float UpliftAngle;
  260.  
  261. /// <summary>
  262. /// 武器默认上抬角度
  263. /// </summary>
  264. [JsonInclude]
  265. public float DefaultAngle;
  266.  
  267. /// <summary>
  268. /// 开火后武器口角度恢复速度倍数
  269. /// </summary>
  270. [JsonInclude]
  271. public float UpliftAngleRestore;
  272.  
  273. /// <summary>
  274. /// 开火特效, 该特效脚本必须实现IEffect接口
  275. /// </summary>
  276. [JsonInclude]
  277. public string FireEffect;
  278.  
  279. /// <summary>
  280. /// 默认射出的子弹
  281. /// </summary>
  282. public BulletBase Bullet;
  283.  
  284. /// <summary>
  285. /// 默认抛出的弹壳
  286. /// </summary>
  287. public ActivityBase Shell;
  288.  
  289. /// <summary>
  290. /// 是否在换弹时才抛弹壳
  291. /// </summary>
  292. [JsonInclude]
  293. public bool ReloadThrowShell;
  294.  
  295. /// <summary>
  296. /// 抛壳数量
  297. /// </summary>
  298. [JsonInclude]
  299. public int ThrowShellCount;
  300.  
  301. /// <summary>
  302. /// 投抛弹壳的延时时间
  303. /// </summary>
  304. [JsonInclude]
  305. public float ThrowShellDelayTime;
  306.  
  307. /// <summary>
  308. /// 是否可以触发近战攻击
  309. /// </summary>
  310. [JsonInclude]
  311. public bool CanMeleeAttack;
  312.  
  313. /// <summary>
  314. /// 近战攻击伤害区间 <br/>
  315. /// 格式为格式为[value]或者[min,max]
  316. /// </summary>
  317. [JsonInclude]
  318. public int[] MeleeAttackHarmRange;
  319.  
  320. /// <summary>
  321. /// 近战攻击造成伤害后击退值区间 <br/>
  322. /// 格式为[value]或者[min,max]
  323. /// </summary>
  324. [JsonInclude]
  325. public float[] MeleeAttackRepelRange;
  326.  
  327. /// <summary>
  328. /// 射击音效
  329. /// </summary>
  330. public Sound ShootSound;
  331.  
  332. /// <summary>
  333. /// 开始换弹音效
  334. /// </summary>
  335. public Sound BeginReloadSound;
  336.  
  337. /// <summary>
  338. /// 开始换弹音效延时时间
  339. /// </summary>
  340. [JsonInclude]
  341. public float BeginReloadSoundDelayTime;
  342.  
  343. /// <summary>
  344. /// 换弹音效,单独装弹时也会出发
  345. /// </summary>
  346. public Sound ReloadSound;
  347.  
  348. /// <summary>
  349. /// 换弹音效延时时间
  350. /// </summary>
  351. [JsonInclude]
  352. public float ReloadSoundDelayTime;
  353.  
  354. /// <summary>
  355. /// 换弹结束音效
  356. /// </summary>
  357. public Sound ReloadFinishSound;
  358.  
  359. /// <summary>
  360. /// 换弹结束音效在换弹结束前多久开始 <br/>
  361. /// 注意: 如果'AloneReload'为true, 那么当前属性的值应该小于'AloneReloadFinishIntervalTime'
  362. /// </summary>
  363. [JsonInclude]
  364. public float ReloadFinishSoundAdvanceTime;
  365.  
  366. /// <summary>
  367. /// 上膛音效
  368. /// </summary>
  369. public Sound BeLoadedSound;
  370.  
  371. /// <summary>
  372. /// 上膛音效延时时间, 这个时间应该小于'BeLoadedTime'
  373. /// </summary>
  374. [JsonInclude]
  375. public float BeLoadedSoundDelayTime;
  376.  
  377. /// <summary>
  378. /// 其他音效
  379. /// </summary>
  380. public Dictionary<string, Sound> OtherSoundMap;
  381.  
  382. /// <summary>
  383. /// Ai使用该武器开火时的一些额外配置属性 <br/>
  384. /// 玩家使用的武器不需要填写该字段
  385. /// </summary>
  386. public AiAttackAttr AiAttackAttr;
  387.  
  388. /// <summary>
  389. /// 返回浅拷贝出的新对象
  390. /// </summary>
  391. public WeaponBase Clone()
  392. {
  393. var inst = new WeaponBase();
  394. inst.Id = Id;
  395. inst.Remark = Remark;
  396. inst.Activity = Activity;
  397. inst.Weight = Weight;
  398. inst.WeightType = WeightType;
  399. inst.IsMelee = IsMelee;
  400. inst.ContinuousShoot = ContinuousShoot;
  401. inst.AmmoCapacity = AmmoCapacity;
  402. inst.MaxAmmoCapacity = MaxAmmoCapacity;
  403. inst.StandbyAmmoCapacity = StandbyAmmoCapacity;
  404. inst.ShowReloadBar = ShowReloadBar;
  405. inst.AutoReload = AutoReload;
  406. inst.ReloadTime = ReloadTime;
  407. inst.AloneReload = AloneReload;
  408. inst.AloneReloadCount = AloneReloadCount;
  409. inst.AloneReloadBeginIntervalTime = AloneReloadBeginIntervalTime;
  410. inst.AloneReloadFinishIntervalTime = AloneReloadFinishIntervalTime;
  411. inst.AloneReloadCanShoot = AloneReloadCanShoot;
  412. inst.LooseShoot = LooseShoot;
  413. inst.MinChargeTime = MinChargeTime;
  414. inst.ManualBeLoaded = ManualBeLoaded;
  415. inst.AutoManualBeLoaded = AutoManualBeLoaded;
  416. inst.BeLoadedTime = BeLoadedTime;
  417. inst.ContinuousCountRange = ContinuousCountRange;
  418. inst.TriggerInterval = TriggerInterval;
  419. inst.StartFiringSpeed = StartFiringSpeed;
  420. inst.FinalFiringSpeed = FinalFiringSpeed;
  421. inst.FiringSpeedAddSpeed = FiringSpeedAddSpeed;
  422. inst.FiringSpeedBackSpeed = FiringSpeedBackSpeed;
  423. inst.FiringSpeedBackTime = FiringSpeedBackTime;
  424. inst.FireBulletCountRange = FireBulletCountRange;
  425. inst.DelayedTime = DelayedTime;
  426. inst.StartScatteringRange = StartScatteringRange;
  427. inst.FinalScatteringRange = FinalScatteringRange;
  428. inst.ScatteringRangeAddValue = ScatteringRangeAddValue;
  429. inst.ScatteringRangeBackSpeed = ScatteringRangeBackSpeed;
  430. inst.ScatteringRangeBackDelayTime = ScatteringRangeBackDelayTime;
  431. inst.CameraShake = CameraShake;
  432. inst.BacklashRange = BacklashRange;
  433. inst.BacklashRegressionSpeed = BacklashRegressionSpeed;
  434. inst.UpliftAngle = UpliftAngle;
  435. inst.DefaultAngle = DefaultAngle;
  436. inst.UpliftAngleRestore = UpliftAngleRestore;
  437. inst.FireEffect = FireEffect;
  438. inst.Bullet = Bullet;
  439. inst.Shell = Shell;
  440. inst.ReloadThrowShell = ReloadThrowShell;
  441. inst.ThrowShellCount = ThrowShellCount;
  442. inst.ThrowShellDelayTime = ThrowShellDelayTime;
  443. inst.CanMeleeAttack = CanMeleeAttack;
  444. inst.MeleeAttackHarmRange = MeleeAttackHarmRange;
  445. inst.MeleeAttackRepelRange = MeleeAttackRepelRange;
  446. inst.ShootSound = ShootSound;
  447. inst.BeginReloadSound = BeginReloadSound;
  448. inst.BeginReloadSoundDelayTime = BeginReloadSoundDelayTime;
  449. inst.ReloadSound = ReloadSound;
  450. inst.ReloadSoundDelayTime = ReloadSoundDelayTime;
  451. inst.ReloadFinishSound = ReloadFinishSound;
  452. inst.ReloadFinishSoundAdvanceTime = ReloadFinishSoundAdvanceTime;
  453. inst.BeLoadedSound = BeLoadedSound;
  454. inst.BeLoadedSoundDelayTime = BeLoadedSoundDelayTime;
  455. inst.OtherSoundMap = OtherSoundMap;
  456. inst.AiAttackAttr = AiAttackAttr;
  457. return inst;
  458. }
  459. }
  460. private class Ref_WeaponBase : WeaponBase
  461. {
  462. [JsonInclude]
  463. public string __Activity;
  464.  
  465. [JsonInclude]
  466. public string __Bullet;
  467.  
  468. [JsonInclude]
  469. public string __Shell;
  470.  
  471. [JsonInclude]
  472. public string __ShootSound;
  473.  
  474. [JsonInclude]
  475. public string __BeginReloadSound;
  476.  
  477. [JsonInclude]
  478. public string __ReloadSound;
  479.  
  480. [JsonInclude]
  481. public string __ReloadFinishSound;
  482.  
  483. [JsonInclude]
  484. public string __BeLoadedSound;
  485.  
  486. [JsonInclude]
  487. public Dictionary<string, string> __OtherSoundMap;
  488.  
  489. [JsonInclude]
  490. public string __AiAttackAttr;
  491.  
  492. }
  493. }