DataObj.ts 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818
  1. import GameConfig from "./GameConfig";
  2. import gameData from "./gameData";
  3. const { ccclass, property } = cc._decorator;
  4. @ccclass
  5. export default class DataObj extends cc.Component {
  6. onLoad() {
  7. }
  8. /** 怪物数据*/
  9. public monsterData = {
  10. /**预制体名 */
  11. name1: '',
  12. /**模型缩放比 */
  13. model_scaling: 1,
  14. /**阵营 1敌方 2我方 3npc*/
  15. camp: 1,
  16. /**单位类型 1地面单位 2空中单位*/
  17. company_type: 1,
  18. /**血量总量 */
  19. totalHp: 16,
  20. /**攻击力 */
  21. attack: '',
  22. /** 物理减伤*/
  23. physics_reduction: 0,
  24. /** 魔法减伤*/
  25. magic_reduction: 0,
  26. /**移动速度 基础35==1 */
  27. Movespeed: 35,
  28. /**攻击频率 单位秒 */
  29. attack_speed: 1.5,
  30. /**攻击范围 */
  31. attack_range: 0.2,
  32. /**预警范围 */
  33. warning_range: 1,
  34. /**回血速率 0回血量 1频率*/
  35. recovery: [],
  36. /**攻击类型 1主动 2被动 3不攻击*/
  37. active_attack_type: '1',
  38. /**技能 */
  39. skills: 0,
  40. /**对空开关*/
  41. air_attack_switch: 'OFF',
  42. /**扣血值 */
  43. hurt_level_hp: 1,
  44. /**掉落金币 */
  45. drop_group_1: 1,
  46. /** 掉落钻石*/
  47. drop_group_2: '',
  48. /**掉落砖石百分比几率 */
  49. percentage: 10,
  50. /**血量难度系数 */
  51. hp_diff_coefficient: 1,
  52. /**攻击难度系数 */
  53. attack_diff_coefficient: 1,
  54. /**当前血量 */
  55. nowHp: 16,
  56. };
  57. /**初始化怪物数据 */
  58. public writeMonster_Config(ID: number) {
  59. let nameData = [];
  60. let oneData = [];
  61. for (let i = 0; i < gameData.instance().monster_Config.length; i++) {
  62. const arr = gameData.instance().monster_Config[i];
  63. if (i == 2) {
  64. for (let k = 0; k < arr.length; k++) {
  65. const element = arr[k];
  66. nameData.push(element);
  67. }
  68. }
  69. if (Number(arr[0]) == ID) {
  70. for (let k = 0; k < arr.length; k++) {
  71. const element = arr[k];
  72. oneData.push(element);
  73. }
  74. break;
  75. }
  76. }
  77. for (let i = 0; i < nameData.length; i++) {
  78. const element = nameData[i];
  79. switch (element) {
  80. case 'id':
  81. break;
  82. case 'name':
  83. break;
  84. case 'name1':
  85. this.monsterData.name1 = oneData[i];
  86. break;
  87. case 'monster_icon_path':
  88. break;
  89. case 'model_scaling':
  90. this.monsterData.model_scaling = Number(oneData[i]);
  91. break;
  92. case 'skills':
  93. this.monsterData.skills = Number(oneData[i]);
  94. break;
  95. case 'physics_reduction':
  96. this.monsterData.physics_reduction = Number(oneData[i]);
  97. break;
  98. case 'magic_reduction':
  99. this.monsterData.magic_reduction = Number(oneData[i]);
  100. break;
  101. case 'camp':
  102. this.monsterData.camp = Number(oneData[i]);
  103. break;
  104. case 'company_type':
  105. this.monsterData.company_type = Number(oneData[i]);
  106. break;
  107. case 'hp':
  108. {
  109. this.monsterData.totalHp = Number(oneData[i]);
  110. this.monsterData.nowHp = this.monsterData.totalHp;
  111. }
  112. break;
  113. case 'attack':
  114. this.monsterData.attack = oneData[i];
  115. break;
  116. case 'move_speed':
  117. this.monsterData.Movespeed = Number(oneData[i]);
  118. break;
  119. case 'attack_speed':
  120. this.monsterData.attack_speed = Number(oneData[i]);
  121. break;
  122. case 'attack_range':
  123. this.monsterData.attack_range = Number(oneData[i]);
  124. break;
  125. case 'warning_range':
  126. this.monsterData.warning_range = Number(oneData[i]);
  127. break;
  128. case 'recovery':
  129. this.monsterData.recovery = this.getArr(oneData[i]);
  130. break;
  131. case 'active_attack_type':
  132. this.monsterData.active_attack_type = oneData[i];
  133. break;
  134. case 'air_attack_switch':
  135. this.monsterData.air_attack_switch = oneData[i];
  136. break;
  137. case 'hurt_level_hp':
  138. this.monsterData.hurt_level_hp = Number(oneData[i]);
  139. break;
  140. case 'drop_group_1':
  141. this.monsterData.drop_group_1 = Number(oneData[i]);
  142. break;
  143. case 'drop_group_2':
  144. {
  145. this.monsterData.drop_group_2 = oneData[i];
  146. let attackarr = oneData[i].split("*");
  147. this.monsterData.percentage = Number(attackarr[0]);
  148. }
  149. break;
  150. case 'hp_diff_coefficient':
  151. {
  152. this.monsterData.hp_diff_coefficient = this.getDiff(oneData[i]);
  153. if (this.monsterData.hp_diff_coefficient > 0) {
  154. this.monsterData.totalHp *= this.monsterData.hp_diff_coefficient;
  155. this.monsterData.nowHp = this.monsterData.totalHp;
  156. }
  157. }
  158. break;
  159. case 'attack_diff_coefficient':
  160. {
  161. this.monsterData.attack_diff_coefficient = this.getDiff(oneData[i]);
  162. }
  163. break;
  164. default:
  165. break;
  166. }
  167. }
  168. }
  169. /**塔数据 */
  170. public TowerData = {
  171. /** ID*/
  172. id: 1,
  173. /** 塔名*/
  174. name: 1,
  175. /** 塔等级*/
  176. tower_level: 1,
  177. /**塔类 */
  178. tower_type: 1,
  179. /**对空开关 */
  180. air_attack_switch: '',
  181. /**初始建造金币 */
  182. first_gold: 1,
  183. /**升级金币 */
  184. up_gold: [],
  185. /**变卖金币 */
  186. value_gold: 1,
  187. /**攻击频率 单位秒*/
  188. attack_cd: 1,
  189. /** 攻击范围 基础单位135*/
  190. attack_range: 1,
  191. /**子弹ID */
  192. bullet_id: 1,
  193. /**士兵ID,数量 */
  194. monster_id: [],
  195. /** 下一级塔ID*/
  196. next_tower_id: [],
  197. /**塔技能 */
  198. next_skill: [],
  199. /** 预制体塔路径*/
  200. name1: '',
  201. /** 预制体小兵路径*/
  202. name2: '',
  203. /**塔图标路径 */
  204. tower_icon_path: '',
  205. /**模型缩放比 */
  206. model_scaling: 1,
  207. };
  208. /**初始塔数据 */
  209. public writeTower_Config(ID: number) {
  210. let nameData = [];
  211. let oneData = [];
  212. for (let i = 0; i < gameData.instance().tower_Config.length; i++) {
  213. const arr = gameData.instance().tower_Config[i];
  214. if (i == 2) {
  215. for (let k = 0; k < arr.length; k++) {
  216. const element = arr[k];
  217. nameData.push(element);
  218. }
  219. }
  220. if (Number(arr[0]) == ID) {
  221. for (let k = 0; k < arr.length; k++) {
  222. const element = arr[k];
  223. oneData.push(element);
  224. }
  225. break;
  226. }
  227. }
  228. for (let i = 0; i < nameData.length; i++) {
  229. const element = nameData[i];
  230. switch (element) {
  231. case 'id':
  232. this.TowerData.id = Number(oneData[i]);
  233. break;
  234. case 'tower_level':
  235. this.TowerData.tower_level = Number(oneData[i]);
  236. break;
  237. case 'tower_type':
  238. this.TowerData.tower_type = Number(oneData[i]);
  239. break;
  240. case 'air_attack_switch':
  241. this.TowerData.air_attack_switch = oneData[i];
  242. break;
  243. case 'first_gold':
  244. this.TowerData.first_gold = Number(oneData[i]);
  245. break;
  246. case 'up_gold':
  247. this.TowerData.up_gold = this.getArr(oneData[i]);
  248. break;
  249. case 'value_gold':
  250. this.TowerData.value_gold = Number(oneData[i]);
  251. break;
  252. case 'attack_cd':
  253. this.TowerData.attack_cd = Number(oneData[i]);
  254. break;
  255. case 'attack_range':
  256. this.TowerData.attack_range = Number(oneData[i]);
  257. break;
  258. case 'bullet_id':
  259. this.TowerData.bullet_id = Number(oneData[i]);
  260. break;
  261. case 'monster_id':
  262. this.TowerData.monster_id = this.getArr(oneData[i]);
  263. break;
  264. case 'next_tower_id':
  265. this.TowerData.next_tower_id = this.getArr(oneData[i]);
  266. break;
  267. case 'next_skill':
  268. this.TowerData.next_skill = this.getArr(oneData[i]);
  269. break;
  270. case 'name1':
  271. this.TowerData.name1 = oneData[i];
  272. break;
  273. case 'name2':
  274. this.TowerData.name2 = oneData[i];
  275. break;
  276. case 'tower_icon_path':
  277. break;
  278. case 'model_scaling':
  279. this.TowerData.model_scaling = Number(oneData[i]);
  280. break;
  281. default:
  282. break;
  283. }
  284. }
  285. }
  286. /**子弹数据 */
  287. public BulletData = {
  288. /**ID */
  289. id: 0,
  290. /**子弹名 */
  291. name: '',
  292. /**子弹类型 */
  293. bullet_type: 0,
  294. /** 伤害类型*/
  295. injury_type: 0,
  296. /** 攻击力*/
  297. attack: '',
  298. /** 飞行速度*/
  299. speed: 0,
  300. /** 抛物线系数*/
  301. parabola: [],
  302. /**爆炸范围 */
  303. boom_range: 0,
  304. /**爆炸伤害 */
  305. boom_hurt: '',
  306. /** 子弹模型路径*/
  307. bullet_model_path: '',
  308. /**爆炸特效路径 */
  309. effect_bullet_path: '',
  310. /**模型缩放比 */
  311. model_scaling: 1,
  312. }
  313. /**初始子弹数据 */
  314. public writeBullet_Config(ID: number) {
  315. let nameData = [];
  316. let oneData = [];
  317. for (let i = 0; i < gameData.instance().bullet_Config.length; i++) {
  318. const arr = gameData.instance().bullet_Config[i];
  319. if (i == 2) {
  320. for (let k = 0; k < arr.length; k++) {
  321. const element = arr[k];
  322. nameData.push(element);
  323. }
  324. }
  325. if (Number(arr[0]) == ID) {
  326. for (let k = 0; k < arr.length; k++) {
  327. const element = arr[k];
  328. oneData.push(element);
  329. }
  330. break;
  331. }
  332. }
  333. for (let i = 0; i < nameData.length; i++) {
  334. const element = nameData[i];
  335. switch (element) {
  336. case 'id':
  337. this.BulletData.id = Number(oneData[i]);
  338. break;
  339. case 'name':
  340. break;
  341. case 'bullet_type':
  342. this.BulletData.bullet_type = Number(oneData[i]);
  343. break;
  344. case 'injury_type':
  345. this.BulletData.injury_type = Number(oneData[i]);
  346. break;
  347. case 'attack':
  348. this.BulletData.attack = oneData[i];
  349. break;
  350. case 'speed':
  351. this.BulletData.speed = Number(oneData[i]);
  352. break;
  353. case 'parabola':
  354. this.BulletData.parabola = this.getArr(oneData[i]);
  355. break;
  356. case 'boom_range':
  357. this.BulletData.boom_range = Number(oneData[i]);
  358. break;
  359. case 'boom_hurt':
  360. this.BulletData.boom_hurt = oneData[i];
  361. break;
  362. case 'bullet_model_path':
  363. break;
  364. case 'effect_bullet_path':
  365. break;
  366. case 'model_scaling':
  367. this.BulletData.model_scaling = Number(oneData[i]);
  368. break;
  369. default:
  370. break;
  371. }
  372. }
  373. }
  374. /**关卡数据 */
  375. public LevelData = {
  376. /**ID */
  377. id: 0,
  378. /** 关卡名*/
  379. name: '',
  380. /**关卡场景路径 */
  381. scene_path: 1,
  382. /**地图类型 */
  383. map_type: 1,
  384. /**关卡节数 */
  385. level_num: '',
  386. /** 关卡怪物一览*/
  387. level_monster: [],
  388. /**难度 */
  389. diff: 0,
  390. /** 初始金币*/
  391. start_gold: 0,
  392. /** 关卡血量*/
  393. level_hp: 0,
  394. /**基础通关奖励 */
  395. reward: 0,
  396. /** 下一章节*/
  397. next_level: 0,
  398. /** 1星条件血量*/
  399. stars_1_hp: 0,
  400. /** 2星条件血量*/
  401. stars_2_hp: 0,
  402. /** 3星条件血量*/
  403. stars_3_hp: 0,
  404. /** 挑战模式*/
  405. events: 0,
  406. /**空地X坐标 */
  407. coordinate_x: [],
  408. /**空地Y坐标 */
  409. coordinate_y: [],
  410. /** 关卡文本介绍*/
  411. story: '',
  412. /** 塔升级上限*/
  413. tower_limit: [],
  414. }
  415. /**初始关卡数据 */
  416. public writeLevel_Config(ID: number) {
  417. let nameData = [];
  418. let oneData = [];
  419. for (let i = 0; i < gameData.instance().level_Config.length; i++) {
  420. const arr = gameData.instance().level_Config[i];
  421. if (i == 2) {
  422. for (let k = 0; k < arr.length; k++) {
  423. const element = arr[k];
  424. nameData.push(element);
  425. }
  426. }
  427. if (Number(arr[0]) == ID) {
  428. for (let k = 0; k < arr.length; k++) {
  429. const element = arr[k];
  430. oneData.push(element);
  431. }
  432. break;
  433. }
  434. }
  435. for (let i = 0; i < nameData.length; i++) {
  436. const element = nameData[i];
  437. switch (element) {
  438. case 'id':
  439. this.LevelData.id = Number(oneData[i]);
  440. break;
  441. case 'name':
  442. this.LevelData.name = oneData[i];
  443. break;
  444. case 'level_num':
  445. this.LevelData.level_num = oneData[i];
  446. break;
  447. case 'scene_path':
  448. this.LevelData.scene_path = Number(oneData[i]);
  449. break;
  450. case 'map_type':
  451. this.LevelData.map_type = Number(oneData[i]);
  452. break;
  453. case 'level_monster':
  454. this.LevelData.level_monster = this.getArr(oneData[i]);
  455. break;
  456. case 'diff':
  457. this.LevelData.diff = Number(oneData[i]);
  458. break;
  459. case 'start_gold':
  460. this.LevelData.start_gold = Number(oneData[i]);
  461. break;
  462. case 'level_hp':
  463. this.LevelData.level_hp = Number(oneData[i]);
  464. break;
  465. case 'reward':
  466. this.LevelData.reward = Number(oneData[i]);
  467. break;
  468. case 'next_level':
  469. this.LevelData.next_level = Number(oneData[i]);
  470. break;
  471. case 'stars_1_hp':
  472. this.LevelData.stars_1_hp = Number(oneData[i]);
  473. break;
  474. case 'stars_2_hp':
  475. this.LevelData.stars_2_hp = Number(oneData[i]);
  476. break;
  477. case 'stars_3_hp':
  478. this.LevelData.stars_3_hp = Number(oneData[i]);
  479. break;
  480. case 'events':
  481. this.LevelData.events = Number(oneData[i]);
  482. break;
  483. case 'story':
  484. this.LevelData.story = oneData[i];
  485. break;
  486. case 'tower_limit':
  487. this.LevelData.tower_limit = this.getArr(oneData[i]);
  488. break;
  489. case 'coordinate_x':
  490. this.LevelData.coordinate_x = this.getArr(oneData[i]);
  491. break;
  492. case 'coordinate_y':
  493. this.LevelData.coordinate_y = this.getArr(oneData[i]);
  494. break;
  495. default:
  496. break;
  497. }
  498. }
  499. }
  500. /**技能数据 */
  501. public SkillData = {
  502. /**ID */
  503. id: 1,
  504. /**技能名 */
  505. name: '',
  506. /**技能类型 */
  507. skill_type: 1,
  508. /**参数1 */
  509. parameter_1: 1,
  510. /**参数2 */
  511. parameter_2: '',
  512. /**参数3 */
  513. parameter_3: '',
  514. /** 参数4*/
  515. parameter_4: 1,
  516. /** 参数5*/
  517. parameter_5: 1,
  518. /**子弹ID */
  519. bullet_id: 1,
  520. /** 下级技能ID*/
  521. next_skill: 1,
  522. /**升级金币 */
  523. up_gold: 1,
  524. /** 技能特效路径*/
  525. skill_effect_path: '',
  526. /**技能图标 */
  527. skill_icon: '',
  528. /** 技能文本介绍*/
  529. skill_text: '',
  530. }
  531. /**初始技能数据 */
  532. public writeSkill_Config(ID: number) {
  533. let nameData = [];
  534. let oneData = [];
  535. for (let i = 0; i < gameData.instance().skill_Config.length; i++) {
  536. const arr = gameData.instance().skill_Config[i];
  537. if (i == 2) {
  538. for (let k = 0; k < arr.length; k++) {
  539. const element = arr[k];
  540. nameData.push(element);
  541. }
  542. }
  543. if (Number(arr[0]) == ID) {
  544. for (let k = 0; k < arr.length; k++) {
  545. const element = arr[k];
  546. oneData.push(element);
  547. }
  548. break;
  549. }
  550. }
  551. for (let i = 0; i < nameData.length; i++) {
  552. const element = nameData[i];
  553. switch (element) {
  554. case 'id':
  555. this.SkillData.id = Number(oneData[i]);
  556. break;
  557. case 'name':
  558. this.SkillData.name = oneData[i];
  559. break;
  560. case 'skill_type':
  561. this.SkillData.skill_type = Number(oneData[i]);
  562. break;
  563. case 'parameter_1':
  564. this.SkillData.parameter_1 = Number(oneData[i]);
  565. break;
  566. case 'parameter_2':
  567. this.SkillData.parameter_2 = oneData[i];
  568. break;
  569. case 'parameter_3':
  570. this.SkillData.parameter_3 = oneData[i];
  571. break;
  572. case 'parameter_4':
  573. this.SkillData.parameter_4 = Number(oneData[i]);
  574. break;
  575. case 'parameter_5':
  576. this.SkillData.parameter_5 = Number(oneData[i]);
  577. break;
  578. case 'bullet_id':
  579. this.SkillData.bullet_id = Number(oneData[i]);
  580. break;
  581. case 'next_skill':
  582. this.SkillData.next_skill = Number(oneData[i]);
  583. break;
  584. case 'up_gold':
  585. this.SkillData.up_gold = Number(oneData[i]);
  586. break;
  587. case 'skill_effect_path':
  588. this.SkillData.skill_effect_path = oneData[i];
  589. break;
  590. case 'skill_icon':
  591. this.SkillData.skill_icon = oneData[i];
  592. break;
  593. case 'skill_text':
  594. this.SkillData.skill_text = oneData[i];
  595. break;
  596. default:
  597. break;
  598. }
  599. }
  600. }
  601. /**天赋数据 */
  602. public talentData = {
  603. /**ID */
  604. id: 1,
  605. /**天赋名 */
  606. name: '',
  607. /** 消耗星数*/
  608. star_required: 1,
  609. /**天赋类型 */
  610. talent_type: 1,
  611. /**参数1 */
  612. parameter_1: 1,
  613. /**参数2 */
  614. parameter_2: 1,
  615. /**参数3 */
  616. parameter_3: 1,
  617. /** 参数4*/
  618. parameter_4: 1,
  619. /**参数5 */
  620. parameter_5: 1,
  621. /**图片名 */
  622. talent_icon: '',
  623. /**技能文本介绍 */
  624. talent_text: '',
  625. }
  626. /**初始天赋数据 */
  627. public writeTalent_Config(ID: number) {
  628. let nameData = [];
  629. let oneData = [];
  630. for (let i = 0; i < gameData.instance().uiSkill_Config.length; i++) {
  631. const arr = gameData.instance().uiSkill_Config[i];
  632. if (i == 2) {
  633. for (let k = 0; k < arr.length; k++) {
  634. const element = arr[k];
  635. nameData.push(element);
  636. }
  637. }
  638. if (Number(arr[0]) == ID) {
  639. for (let k = 0; k < arr.length; k++) {
  640. const element = arr[k];
  641. oneData.push(element);
  642. }
  643. break;
  644. }
  645. }
  646. for (let i = 0; i < nameData.length; i++) {
  647. const element = nameData[i];
  648. switch (element) {
  649. case 'id':
  650. this.talentData.id = Number(oneData[i]);
  651. break;
  652. case 'name':
  653. this.talentData.name = oneData[i];
  654. break;
  655. case 'star_required':
  656. this.talentData.star_required = Number(oneData[i]);
  657. break;
  658. case 'talent_type':
  659. this.talentData.talent_type = Number(oneData[i]);
  660. break;
  661. case 'parameter_1':
  662. this.talentData.parameter_1 = Number(oneData[i]);
  663. break;
  664. case 'parameter_2':
  665. this.talentData.parameter_2 = Number(oneData[i]);
  666. break;
  667. case 'parameter_3':
  668. this.talentData.parameter_3 = Number(oneData[i]);
  669. break;
  670. case 'parameter_4':
  671. this.talentData.parameter_4 = Number(oneData[i]);
  672. break;
  673. case 'parameter_5':
  674. this.talentData.parameter_5 = Number(oneData[i]);
  675. break;
  676. case 'talent_icon':
  677. this.talentData.talent_icon = oneData[i];
  678. break;
  679. case 'talent_text':
  680. this.talentData.talent_text = '';
  681. for (let k = i; k < oneData.length; k++) {
  682. const element = oneData[k];
  683. if (element == '') {
  684. continue;
  685. }
  686. this.talentData.talent_text += element;
  687. }
  688. break;
  689. default:
  690. break;
  691. }
  692. }
  693. }
  694. /**获取数组 */
  695. public getArr(str: string): number[] {
  696. let numarr: number[] = [];
  697. if (str != '') {
  698. let arrr = str.split("*");
  699. for (let m = 0; m < arrr.length; m++) {
  700. const element = arrr[m];
  701. numarr.push(Number(element));
  702. }
  703. }
  704. return numarr;
  705. }
  706. /**根据难度获取系数 */
  707. private getDiff(strrr): number {
  708. if (strrr == '') {
  709. return 0;
  710. }
  711. let attackarr = strrr.split("*");
  712. return Number(attackarr[GameConfig.instance().levelDiff]);
  713. }
  714. /**type:1,取整数。2,取小数*/
  715. public getRanm(type: number, strrr: string): number {
  716. if (strrr == '' || !strrr) {
  717. return 0;
  718. }
  719. let attackarr = strrr.split("*");
  720. let leth = attackarr.length;
  721. if (leth < 0) {
  722. return 0;
  723. }
  724. let num1 = Number(attackarr[leth - 2]);
  725. let num2 = Number(attackarr[leth - 1]);
  726. let ranm = 0;
  727. if (num1 < num2) {
  728. if (type == 1) {
  729. ranm = num1 + Math.floor(Math.random() * (num2 - num1 + 1));
  730. }
  731. if (type == 2) {
  732. ranm = num1 + Math.random() * (num2 - num1);
  733. }
  734. }
  735. else {
  736. if (type == 1) {
  737. ranm = num2 + Math.floor(Math.random() * (num1 - num2 + 1));
  738. }
  739. if (type == 2) {
  740. ranm = num2 + Math.random() * (num1 - num2);
  741. }
  742. }
  743. return ranm;
  744. }
  745. }