MateData.ts 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. import Main from "../Main";
  2. import GameM from "../manager/GameM";
  3. import RedPointM, { RedPointType } from "../manager/RedPointM";
  4. import UiM from "../manager/UiM";
  5. import TalentIconItem from "../other/item/TalentIconItem";
  6. import TalentDetaile from "../prefabs/TalentDetaile";
  7. import { PlayerPrefs } from "../tools/MyExtends";
  8. import MatePanel from "../ui/MatePanel";
  9. import UIMng, { PanelType } from "../uiFrames/UIMng";
  10. import { Utils } from "../utils/Utils";
  11. import { ConfigOnLine } from "./CommonData";
  12. export class MateData {
  13. //伙伴模块数据管理类
  14. private static _ins: MateData = null;
  15. public static get Ins(): MateData {
  16. if (this._ins == null) {
  17. this._ins = new MateData();
  18. }
  19. return this._ins;
  20. }
  21. /**天赋石*/
  22. talentCoin: number = 100000;
  23. /**伙伴解锁数据*/
  24. mateUnlockAry: number[] = null;
  25. //天赋 effect_type 1 值 2 百分比
  26. /**唐僧天赋*/
  27. mate1talentData: TalentDataItem[] = null;
  28. /**孙悟空天赋*/
  29. mate2talentData: TalentDataItem[] = null;
  30. /**白龙马天赋*/
  31. mate3talentData: TalentDataItem[] = null;
  32. /**八戒天赋*/
  33. mate4talentData: TalentDataItem[] = null;
  34. /**沙僧天赋*/
  35. mate5talentData: TalentDataItem[] = null;
  36. //private mate1Talent1: number = 0;
  37. /**唐僧1 禅杖清音 武将每次产出金币 +X %*/
  38. get Mate1Talent1(): number {
  39. if (this.mateUnlockAry[0] == 1 && this.mate1talentData[0].isUnlock)
  40. return this.mate1talentData[0].value;
  41. else
  42. return 0;
  43. }
  44. //private mate1Talent2: number = 0;
  45. /**唐僧2 如来真经 武将产出金币的CD时间减少 X%*/
  46. get Mate1Talent2(): number {
  47. if (this.mateUnlockAry[0] == 1 && this.mate1talentData[1].isUnlock)
  48. return this.mate1talentData[1].value;
  49. else
  50. return 0;
  51. }
  52. //private mate1Talent3: number = 0;
  53. /**唐僧3 如来真经 观看视频得金币增加 X%*/
  54. get Mate1Talent3(): number {
  55. if (this.mateUnlockAry[0] == 1 && this.mate1talentData[2].isUnlock)
  56. return this.mate1talentData[2].value;
  57. else
  58. return 0;
  59. }
  60. //private mate2Talent1: number = 0;
  61. /**悟空1 如意金箍 对武将伤害 +X*/
  62. get Mate2Talent1(): number {
  63. if (this.mateUnlockAry[1] == 1 && this.mate2talentData[0].isUnlock)
  64. return this.mate2talentData[0].value;
  65. else
  66. return 0;
  67. }
  68. //private mate2Talent2: number = 0;
  69. /**悟空2 大圣神威 有 X%概率对武将造成暴击伤害*/
  70. get Mate2Talent2(): number {
  71. if (this.mateUnlockAry[1] == 1 && this.mate2talentData[1].isUnlock)
  72. return this.mate2talentData[1].value;
  73. else
  74. return 0;
  75. }
  76. //待完成。。。
  77. //private mate2Talent3: number = 0;
  78. /**悟空3 火眼金睛 每天获得宝箱的次数增加 X 次*/
  79. get Mate2Talent3(): number {
  80. if (this.mateUnlockAry[1] == 1 && this.mate2talentData[2].isUnlock)
  81. return this.mate2talentData[2].value;
  82. else
  83. return 0;
  84. }
  85. //private mate3Talent1: number = 0;
  86. /**白龙马1 威严震慑 武将罢工几率降低 X%*/
  87. get Mate3Talent1(): number {
  88. if (this.mateUnlockAry[2] == 1 && this.mate3talentData[0].isUnlock)
  89. return this.mate3talentData[0].value;
  90. else
  91. return 0;
  92. }
  93. //private mate3Talent2: number = 0;
  94. /**白龙马2 天降甘露 挂机离线收益产出+ X%*/
  95. get Mate3Talent2(): number {
  96. if (this.mateUnlockAry[2] == 1 && this.mate3talentData[1].isUnlock)
  97. return this.mate3talentData[1].value;
  98. else
  99. return 0;
  100. }
  101. //private mate3Talent3: number = 0;
  102. /**白龙马3 精打细算 买怪费用降低 X%*/
  103. get Mate3Talent3(): number {
  104. if (this.mateUnlockAry[2] == 1 && this.mate3talentData[2].isUnlock)
  105. return this.mate3talentData[2].value;
  106. else
  107. return 0;
  108. }
  109. //private mate4Talent1: number = 0;
  110. /**八戒1 玉树临风 探索功能中产出金币 +X%*/
  111. get Mate4Talent1(): number {
  112. if (this.mateUnlockAry[3] == 1 && this.mate4talentData[0].isUnlock)
  113. return this.mate4talentData[0].value;
  114. else
  115. return 0;
  116. }
  117. //private mate4Talent2: number = 0;
  118. /**八戒2 急速旋风 探索功能中探索时间减 X%*/
  119. get Mate4Talent2(): number {
  120. if (this.mateUnlockAry[3] == 1 && this.mate4talentData[1].isUnlock)
  121. return this.mate4talentData[1].value;
  122. else
  123. return 0;
  124. }
  125. //private mate4Talent3: number = 0;
  126. /**八戒2 最佳人缘 探索次数增加 X 次*/
  127. get Mate4Talent3(): number {
  128. if (this.mateUnlockAry[3] == 1 && this.mate4talentData[2].isUnlock)
  129. return this.mate4talentData[2].value;
  130. else
  131. return 0;
  132. }
  133. //private mate5Talent1: number = 0;
  134. /**沙僧1 不知疲倦 在钱庄中累计登陆天数减少 X 天*/
  135. get Mate5Talent1(): number {
  136. if (this.mateUnlockAry[4] == 1 && this.mate5talentData[0].isUnlock)
  137. return this.mate5talentData[0].value;
  138. else
  139. return 0;
  140. }
  141. //private mate5Talent2: number = 0;
  142. /**沙僧2 任劳任怨 有 在钱庄中看视频次数减少 X 条*/
  143. get Mate5Talent2(): number {
  144. if (this.mateUnlockAry[4] == 1 && this.mate5talentData[1].isUnlock)
  145. return this.mate5talentData[1].value;
  146. else
  147. return 0;
  148. }
  149. /*
  150. 唐僧1 武将产出金币 % mate1Talent1 √
  151. 唐僧2 武将产出金币CD时间减少 % mate1Talent2 √
  152. 唐僧3 观看视频获得金币增加 % mate1Talent3 √
  153. 孙悟空1 对武将伤害增加(攻击力) num mate2Talent1 √
  154. 孙悟空2 对武将造成暴击伤害几率 % mate2Talent2 √
  155. 孙悟空3 战斗宝箱每天获得次数增加 num mate2Talent3
  156. 白龙马1 武将罢工几率降低 % mate3Talent1 √
  157. 白龙马2 挂机收益增加 % mate3Talent2 √
  158. 白龙马3 买怪费用降低 % mate3Talent3 √
  159. 猪八戒1 探索产出金币增加 % mate4Talent1 后台算
  160. 猪八戒2 探索时间减少 % mate4Talent2 后台算
  161. 猪八戒3 探索次数增加 num mate4Talent3 后台算
  162. 沙僧1 钱庄累计登陆天数减少 num mate5Talent1 后台算
  163. 沙僧2 钱庄看视频次数减少条数 num mate5Talent2 后台算
  164. */
  165. matePosAry1: cc.Vec2[] = [];
  166. matePosAry2: cc.Vec2[] = [];
  167. matePosAry3: cc.Vec2[] = [];
  168. matePosAry4: cc.Vec2[] = [];
  169. matePosAry5: cc.Vec2[] = [];
  170. private isInit: boolean = false;
  171. constructor() {
  172. this.Init();
  173. }
  174. Init() {
  175. //this.mateUnlockAry = PlayerPrefs.GetObject("MateUnlockAry", [1, 0, 0, 1, 0]);
  176. this.mateUnlockAry = PlayerPrefs.GetObject("MateUnlockAry", [1, 1, 1, 1, 1]);
  177. this.mate1talentData = PlayerPrefs.GetObject("MateTalent1", null);
  178. this.mate2talentData = PlayerPrefs.GetObject("MateTalent2", null);
  179. this.mate3talentData = PlayerPrefs.GetObject("MateTalent3", null);
  180. this.mate4talentData = PlayerPrefs.GetObject("MateTalent4", null);
  181. this.mate5talentData = PlayerPrefs.GetObject("MateTalent5", null);
  182. if (GameM.commonData.useLocalData) {
  183. for (let i = 0; i < 5; i++) {
  184. this.LocalMateDataInit(i + 1);
  185. }
  186. console.log("Mate1:", this.mate1talentData);
  187. console.log("Mate2:", this.mate2talentData);
  188. console.log("Mate3:", this.mate3talentData);
  189. console.log("Mate4:", this.mate4talentData);
  190. console.log("Mate5:", this.mate5talentData);
  191. } else {
  192. //CommondData 中初始化
  193. }
  194. //坐标解析
  195. let p1 = GameM.commonData.mateCfg.mate_pos.posAry1;
  196. for (let i = 0; i < p1.length; i++) {
  197. let temps = p1[i].split(',');
  198. this.matePosAry1.push(cc.v2(Number(temps[0]), Number(temps[1])));
  199. }
  200. let p2 = GameM.commonData.mateCfg.mate_pos.posAry2;
  201. for (let i = 0; i < p2.length; i++) {
  202. let temps = p2[i].split(',');
  203. this.matePosAry2.push(cc.v2(Number(temps[0]), Number(temps[1])));
  204. }
  205. let p3 = GameM.commonData.mateCfg.mate_pos.posAry3;
  206. for (let i = 0; i < p3.length; i++) {
  207. let temps = p3[i].split(',');
  208. this.matePosAry3.push(cc.v2(Number(temps[0]), Number(temps[1])));
  209. }
  210. let p4 = GameM.commonData.mateCfg.mate_pos.posAry4;
  211. for (let i = 0; i < p4.length; i++) {
  212. let temps = p4[i].split(',');
  213. this.matePosAry4.push(cc.v2(Number(temps[0]), Number(temps[1])));
  214. }
  215. let p5 = GameM.commonData.mateCfg.mate_pos.posAry5;
  216. for (let i = 0; i < p5.length; i++) {
  217. let temps = p5[i].split(',');
  218. this.matePosAry5.push(cc.v2(Number(temps[0]), Number(temps[1])));
  219. }
  220. this.isInit = true;
  221. // console.log("Mate5 Pos:", this.matePosAry5);
  222. //获取伙伴信息 天赋数据
  223. }
  224. LocalMateDataInit(mateid: number) {
  225. if (mateid == 1) {
  226. if (this.mate1talentData == null) {
  227. this.mate1talentData = this.LocalMateData(mateid);
  228. }
  229. } else if (mateid == 2) {
  230. if (this.mate2talentData == null) {
  231. this.mate2talentData = this.LocalMateData(mateid);
  232. }
  233. } else if (mateid == 3) {
  234. if (this.mate3talentData == null) {
  235. this.mate3talentData = this.LocalMateData(mateid);
  236. }
  237. } else if (mateid == 4) {
  238. if (this.mate4talentData == null) {
  239. this.mate4talentData = this.LocalMateData(mateid);
  240. }
  241. } else if (mateid == 5) {
  242. if (this.mate5talentData == null) {
  243. this.mate5talentData = this.LocalMateData(mateid);
  244. }
  245. }
  246. }
  247. LocalMateData(mateid: number): TalentDataItem[] {
  248. let matedata: TalentDataItem[] = [];
  249. let matecfg = GameM.commonData.mateTalentCfg[mateid - 1].talents;
  250. for (let i = 0; i < matecfg.length; i++) {
  251. let talentdata = new TalentDataItem();
  252. talentdata.id = matecfg[i].id;
  253. talentdata.isUnlock = i == 0 && mateid == 1;
  254. talentdata.lv = 1;
  255. talentdata.mateId = mateid;
  256. talentdata.value = matecfg[i].uplevel_effect[0];
  257. matedata.push(talentdata);
  258. }
  259. return matedata;
  260. }
  261. MateDataServerInit(data: any) {
  262. for (let i = 0; i < data.length; i++) {
  263. this.mateUnlockAry[i] = data[i].isUnlock;
  264. //this.mateUnlockAry[i] = 1; //TEST
  265. let tempMatedata: TalentDataItem[] = [];
  266. let talents = data[i].talents;
  267. for (let j = 0; j < talents.length; j++) {
  268. let talentdata = new TalentDataItem();
  269. talentdata.id = talents[j].id;
  270. talentdata.isUnlock = talents[j].isUnlock == 1;
  271. talentdata.lv = talents[j].lv;
  272. if (i == 0) {
  273. talentdata.mateId = 1;
  274. } else if (i == 1) {
  275. talentdata.mateId = 2;
  276. } else if (i == 2) {
  277. talentdata.mateId = 3;
  278. } else if (i == 3) {
  279. talentdata.mateId = 4;
  280. } else if (i == 4) {
  281. talentdata.mateId = 5;
  282. }
  283. talentdata.value = talents[j].value;
  284. tempMatedata.push(talentdata);
  285. }
  286. if (i == 0) {
  287. this.mate1talentData = tempMatedata;
  288. } else if (i == 1) {
  289. this.mate2talentData = tempMatedata;
  290. } else if (i == 2) {
  291. this.mate3talentData = tempMatedata;
  292. } else if (i == 3) {
  293. this.mate4talentData = tempMatedata;
  294. } else if (i == 4) {
  295. this.mate5talentData = tempMatedata;
  296. }
  297. }
  298. // console.log("Mate Server 1:", this.mate1talentData);
  299. // console.log("Mate Server 2:", this.mate2talentData);
  300. // console.log("Mate Server 3:", this.mate3talentData);
  301. // console.log("Mate Server 4:", this.mate4talentData);
  302. // console.log("Mate Server 5:", this.mate5talentData);
  303. //this.UpdateTalentLv(false); //三国战戟
  304. //console.log("Mate1: ",this.mate1talentData);
  305. //console.log("Mate2: ",this.mate2talentData);
  306. //console.log("Mate3: ",this.mate3talentData);
  307. //console.log("Mate4: ",this.mate4talentData);
  308. //console.log("Mate5: ",this.mate5talentData);
  309. }
  310. /**
  311. * 解锁伙伴
  312. * @param mateid 伙伴id
  313. */
  314. UnlockMate(mateid: number) {
  315. if (this.mateUnlockAry[mateid - 1] == 0) {
  316. this.mateUnlockAry[mateid - 1] = 1;
  317. //if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  318. // (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockMate(mateid);
  319. //}
  320. //console.log("--------------Log:", this.GetMateTalent(mateid, 1));
  321. //this.GetMateTalent(mateid, 1).isUnlock = true;
  322. //
  323. ////this.UpdateTalentLv(); //三国战戟
  324. //this.SaveMateTalent(mateid);
  325. //PlayerPrefs.SetObject("MateUnlockAry", this.mateUnlockAry);
  326. }
  327. }
  328. /**获取已解锁伙伴数*/
  329. GetUnlcokMateNum() {
  330. let num = 0;
  331. for (let i = 0; i < this.mateUnlockAry.length; i++) {
  332. if (this.mateUnlockAry[i] == 1)
  333. num++;
  334. }
  335. return num;
  336. }
  337. /**获取伙伴天赋
  338. * @param mateid 伙伴id
  339. * @param talentid 天赋id
  340. */
  341. GetMateTalent(mateid: number, talentid: number): TalentDataItem {
  342. switch (mateid) {
  343. case 1:
  344. return this.mate1talentData[talentid - 1];
  345. case 2:
  346. return this.mate2talentData[talentid - 1];
  347. case 3:
  348. return this.mate3talentData[talentid - 1];
  349. case 4:
  350. return this.mate4talentData[talentid - 1];
  351. case 5:
  352. return this.mate5talentData[talentid - 1];
  353. }
  354. return null;
  355. }
  356. /**升级天赋
  357. * @param mateid 伙伴id
  358. * @param talentid 天赋id
  359. */
  360. LeveUpTalent(mateid: number, talentid: number) {
  361. switch (mateid) {
  362. case 1:
  363. this.mate1talentData[talentid - 1].lv++;
  364. this.mate1talentData[talentid - 1].value
  365. = GameM.commonData.mateTalentCfg[mateid - 1]
  366. .talents[talentid - 1]
  367. .uplevel_effect[this.mate1talentData[talentid - 1].lv - 1];
  368. break;
  369. case 2:
  370. this.mate2talentData[talentid - 1].lv++;
  371. this.mate2talentData[talentid - 1].value
  372. = GameM.commonData.mateTalentCfg[mateid - 1]
  373. .talents[talentid - 1]
  374. .uplevel_effect[this.mate2talentData[talentid - 1].lv - 1];
  375. break;
  376. case 3:
  377. this.mate3talentData[talentid - 1].lv++;
  378. this.mate3talentData[talentid - 1].value
  379. = GameM.commonData.mateTalentCfg[mateid - 1]
  380. .talents[talentid - 1]
  381. .uplevel_effect[this.mate3talentData[talentid - 1].lv - 1];
  382. break;
  383. case 4:
  384. this.mate4talentData[talentid - 1].lv++;
  385. this.mate4talentData[talentid - 1].value
  386. = GameM.commonData.mateTalentCfg[mateid - 1]
  387. .talents[talentid - 1]
  388. .uplevel_effect[this.mate4talentData[talentid - 1].lv - 1];
  389. break;
  390. case 5:
  391. this.mate5talentData[talentid - 1].lv++;
  392. this.mate5talentData[talentid - 1].value
  393. = GameM.commonData.mateTalentCfg[mateid - 1]
  394. .talents[talentid - 1]
  395. .uplevel_effect[this.mate5talentData[talentid - 1].lv - 1];
  396. break;
  397. }
  398. }
  399. /**
  400. * 三国战戟 获取天赋值 根据最高武将等级获取
  401. * @param mateid 伙伴id
  402. * @param talentid 天赋id
  403. */
  404. GetTalent(mateid: number, talentid: number) {
  405. switch (mateid) {
  406. case 1:
  407. this.mate1talentData[talentid - 1].lv++;
  408. this.mate1talentData[talentid - 1].value
  409. = GameM.commonData.mateTalentCfg[mateid - 1]
  410. .talents[talentid - 1]
  411. .uplevel_effect[this.mate1talentData[talentid - 1].lv - 1];
  412. break;
  413. case 2:
  414. this.mate2talentData[talentid - 1].lv++;
  415. this.mate2talentData[talentid - 1].value
  416. = GameM.commonData.mateTalentCfg[mateid - 1]
  417. .talents[talentid - 1]
  418. .uplevel_effect[this.mate2talentData[talentid - 1].lv - 1];
  419. break;
  420. case 3:
  421. this.mate3talentData[talentid - 1].lv++;
  422. this.mate3talentData[talentid - 1].value
  423. = GameM.commonData.mateTalentCfg[mateid - 1]
  424. .talents[talentid - 1]
  425. .uplevel_effect[this.mate3talentData[talentid - 1].lv - 1];
  426. break;
  427. case 4:
  428. this.mate4talentData[talentid - 1].lv++;
  429. this.mate4talentData[talentid - 1].value
  430. = GameM.commonData.mateTalentCfg[mateid - 1]
  431. .talents[talentid - 1]
  432. .uplevel_effect[this.mate4talentData[talentid - 1].lv - 1];
  433. break;
  434. case 5:
  435. this.mate5talentData[talentid - 1].lv++;
  436. this.mate5talentData[talentid - 1].value
  437. = GameM.commonData.mateTalentCfg[mateid - 1]
  438. .talents[talentid - 1]
  439. .uplevel_effect[this.mate5talentData[talentid - 1].lv - 1];
  440. break;
  441. }
  442. }
  443. /**
  444. * 三国战戟 更新天赋等级 弃用
  445. */
  446. UpdateTalentLv(isUpdateInfo = true) {
  447. for (let i = 0; i < this.mate1talentData.length; i++) {
  448. this.mate1talentData[i].lv = GameM.commonData.mateTalentDataCfg[0].talents[i][GameM.commonData.maxCarLevel - 1];
  449. this.mate1talentData[i].isUnlock = this.mate1talentData[i].lv > 0;
  450. if (this.mate1talentData[i].lv > 0)
  451. this.mateUnlockAry[0] = 1;
  452. this.mate1talentData[i].value = GameM.commonData.mateTalentCfg[0]
  453. .talents[i]
  454. .uplevel_effect[this.mate1talentData[i].lv - 1];
  455. }
  456. for (let i = 0; i < this.mate2talentData.length; i++) {
  457. this.mate2talentData[i].lv = GameM.commonData.mateTalentDataCfg[1].talents[i][GameM.commonData.maxCarLevel - 1];
  458. this.mate2talentData[i].isUnlock = this.mate2talentData[i].lv > 0;
  459. if (this.mate2talentData[i].lv > 0)
  460. this.mateUnlockAry[1] = 1;
  461. this.mate2talentData[i].value = GameM.commonData.mateTalentCfg[1]
  462. .talents[i]
  463. .uplevel_effect[this.mate2talentData[i].lv - 1];
  464. }
  465. for (let i = 0; i < this.mate3talentData.length; i++) {
  466. this.mate3talentData[i].lv = GameM.commonData.mateTalentDataCfg[2].talents[i][GameM.commonData.maxCarLevel - 1];
  467. this.mate3talentData[i].isUnlock = this.mate3talentData[i].lv > 0;
  468. if (this.mate3talentData[i].lv > 0)
  469. this.mateUnlockAry[2] = 1;
  470. this.mate3talentData[i].value = GameM.commonData.mateTalentCfg[2]
  471. .talents[i]
  472. .uplevel_effect[this.mate3talentData[i].lv - 1];
  473. }
  474. for (let i = 0; i < this.mate4talentData.length; i++) {
  475. this.mate4talentData[i].lv = GameM.commonData.mateTalentDataCfg[3].talents[i][GameM.commonData.maxCarLevel - 1];
  476. this.mate4talentData[i].isUnlock = this.mate4talentData[i].lv > 0;
  477. if (this.mate4talentData[i].lv > 0)
  478. this.mateUnlockAry[3] = 1;
  479. this.mate4talentData[i].value = GameM.commonData.mateTalentCfg[3]
  480. .talents[i]
  481. .uplevel_effect[this.mate4talentData[i].lv - 1];
  482. }
  483. for (let i = 0; i < this.mate5talentData.length; i++) {
  484. this.mate5talentData[i].lv = GameM.commonData.mateTalentDataCfg[4].talents[i][GameM.commonData.maxCarLevel - 1];
  485. this.mate5talentData[i].isUnlock = this.mate5talentData[i].lv > 0;
  486. if (this.mate5talentData[i].lv > 0)
  487. this.mateUnlockAry[4] = 1;
  488. this.mate5talentData[i].value = GameM.commonData.mateTalentCfg[4]
  489. .talents[i]
  490. .uplevel_effect[this.mate5talentData[i].lv - 1];
  491. }
  492. if (isUpdateInfo) {
  493. UiM.Instance.hallNode.getComponent(Main).UpdateTalentDetaile();
  494. console.log("--------UpdateTalentLv");
  495. }
  496. }
  497. /*
  498. [
  499. {
  500. partner_id:1,
  501. talent_id:1
  502. },
  503. {
  504. partner_id:1,
  505. talent_id:1
  506. }
  507. ...
  508. ]
  509. */
  510. /**
  511. * 检查解锁天赋 服务端
  512. * @param data 解锁的伙伴天赋信息
  513. */
  514. CheckUnlockTalentServer(data: any[]) {
  515. for (let i = 0; i < data.length; i++) {
  516. let mateid = Number(data[i].partner_id);
  517. let talentid = Number(data[i].talent_id);
  518. if (mateid == 1) {
  519. this.mate1talentData[talentid - 1].isUnlock = true;
  520. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  521. (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(mateid, talentid);
  522. }
  523. } else if (mateid == 2) {
  524. this.mate2talentData[talentid - 1].isUnlock = true;
  525. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  526. (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(mateid, talentid);
  527. }
  528. } else if (mateid == 3) {
  529. this.mate3talentData[talentid - 1].isUnlock = true;
  530. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  531. (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(mateid, talentid);
  532. }
  533. } else if (mateid == 4) {
  534. this.mate4talentData[talentid - 1].isUnlock = true;
  535. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  536. (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(mateid, talentid);
  537. }
  538. } else if (mateid == 5) {
  539. this.mate5talentData[talentid - 1].isUnlock = true;
  540. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  541. (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(mateid, talentid);
  542. }
  543. }
  544. console.log("————>解锁天赋:" + talentid + " Mate:" + mateid);
  545. }
  546. this.SaveTalentData();
  547. UiM.Instance.hallNode.getComponent(Main).UpdateTalentDetaile();
  548. }
  549. /**
  550. * 三国战戟 检查解锁天赋 服务端
  551. * @param data 解锁的伙伴天赋信息
  552. */
  553. CheckUnlockTalentServerSanGuo(data: any[]) {
  554. for (let i = 0; i < data.length; i++) {
  555. let mateid = Number(data[i].partner_id);
  556. let talentid = Number(data[i].talent_id);
  557. let talentlv = Number(data[i].talent_level);
  558. if (mateid == 1) {
  559. this.mate1talentData[talentid - 1].lv = talentlv;
  560. this.mate1talentData[talentid - 1].isUnlock = talentlv > 0;
  561. if (talentlv > 0)
  562. this.mateUnlockAry[0] = 1;
  563. this.mate1talentData[talentid - 1].value = GameM.commonData.mateTalentCfg[0]
  564. .talents[talentid - 1]
  565. .uplevel_effect[talentlv - 1];
  566. } else if (mateid == 2) {
  567. this.mate2talentData[talentid - 1].lv = talentlv;
  568. this.mate2talentData[talentid - 1].isUnlock = talentlv > 0;
  569. if (talentlv > 0)
  570. this.mateUnlockAry[1] = 1;
  571. this.mate2talentData[talentid - 1].value = GameM.commonData.mateTalentCfg[1]
  572. .talents[talentid - 1]
  573. .uplevel_effect[talentlv - 1];
  574. } else if (mateid == 3) {
  575. this.mate3talentData[talentid - 1].lv = talentlv;
  576. this.mate3talentData[talentid - 1].isUnlock = talentlv > 0;
  577. if (talentlv > 0)
  578. this.mateUnlockAry[2] = 1;
  579. this.mate3talentData[talentid - 1].value = GameM.commonData.mateTalentCfg[2]
  580. .talents[talentid - 1]
  581. .uplevel_effect[talentlv - 1];
  582. } else if (mateid == 4) {
  583. this.mate4talentData[talentid - 1].lv = talentlv;
  584. this.mate4talentData[talentid - 1].isUnlock = talentlv > 0;
  585. if (talentlv > 0)
  586. this.mateUnlockAry[3] = 1;
  587. this.mate4talentData[talentid - 1].value = GameM.commonData.mateTalentCfg[3]
  588. .talents[talentid - 1]
  589. .uplevel_effect[talentlv - 1];
  590. } else if (mateid == 5) {
  591. this.mate5talentData[talentid - 1].lv = talentlv;
  592. this.mate5talentData[talentid - 1].isUnlock = talentlv > 0;
  593. if (talentlv > 0)
  594. this.mateUnlockAry[4] = 1;
  595. this.mate5talentData[talentid - 1].value = GameM.commonData.mateTalentCfg[4]
  596. .talents[talentid - 1]
  597. .uplevel_effect[talentlv - 1];
  598. }
  599. console.log("————>解锁天赋:" + talentid + " Mate:" + mateid);
  600. }
  601. this.SaveTalentData();
  602. UiM.Instance.hallNode.getComponent(Main).UpdateTalentDetaile();
  603. //console.log("Mate1: ",this.mate1talentData);
  604. //console.log("Mate2: ",this.mate2talentData);
  605. //console.log("Mate3: ",this.mate3talentData);
  606. //console.log("Mate4: ",this.mate4talentData);
  607. //console.log("Mate5: ",this.mate5talentData);
  608. }
  609. /**
  610. * (弃用) 检查是否解锁天赋
  611. * @param maxlv 当前已解锁得最大等级
  612. */
  613. CheckUnlockTalent(maxlv: number) {
  614. let ischange = false;
  615. let mateid = 1;
  616. for (let i = 0; i < this.mateUnlockAry.length; i++) {
  617. if (i == 0) {
  618. if (this.mateUnlockAry[i] == 1) {
  619. for (let i = 0; i < this.mate1talentData.length; i++) {
  620. if (!this.mate1talentData[i].isUnlock) {
  621. if (maxlv >= GameM.commonData.mateTalentCfg[0].talents[i].unlock_lv) {
  622. this.mate1talentData[i].isUnlock = true;
  623. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  624. ischange = (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(1, i + 1);
  625. mateid = 1;
  626. }
  627. console.log("MateTalentData:", this.mate1talentData[i]);
  628. }
  629. }
  630. }
  631. }
  632. } else if (i == 1) {
  633. if (this.mateUnlockAry[i] == 1) {
  634. for (let i = 0; i < this.mate2talentData.length; i++) {
  635. if (!this.mate2talentData[i].isUnlock) {
  636. if (maxlv >= GameM.commonData.mateTalentCfg[1].talents[i].unlock_lv) {
  637. this.mate2talentData[i].isUnlock = true;
  638. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  639. ischange = (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(2, i + 1);
  640. mateid = 2;
  641. }
  642. }
  643. }
  644. }
  645. }
  646. } else if (i == 2) {
  647. if (this.mateUnlockAry[i] == 1) {
  648. for (let i = 0; i < this.mate3talentData.length; i++) {
  649. if (!this.mate3talentData[i].isUnlock) {
  650. if (maxlv >= GameM.commonData.mateTalentCfg[2].talents[i].unlock_lv) {
  651. this.mate3talentData[i].isUnlock = true;
  652. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  653. ischange = (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(3, i + 1);
  654. mateid = 3;
  655. }
  656. }
  657. }
  658. }
  659. }
  660. } else if (i == 3) {
  661. if (this.mateUnlockAry[i] == 1) {
  662. for (let i = 0; i < this.mate4talentData.length; i++) {
  663. if (!this.mate4talentData[i].isUnlock) {
  664. if (maxlv >= GameM.commonData.mateTalentCfg[3].talents[i].unlock_lv) {
  665. this.mate4talentData[i].isUnlock = true;
  666. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  667. ischange = (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(4, i + 1);
  668. mateid = 4;
  669. }
  670. }
  671. }
  672. }
  673. }
  674. } else if (i == 4) {
  675. if (this.mateUnlockAry[i] == 1) {
  676. for (let i = 0; i < this.mate5talentData.length; i++) {
  677. if (!this.mate5talentData[i].isUnlock) {
  678. if (maxlv >= GameM.commonData.mateTalentCfg[4].talents[i].unlock_lv) {
  679. this.mate5talentData[i].isUnlock = true;
  680. if (UIMng.Ins.IsExistPanel(PanelType.MatePanel)) {
  681. ischange = (UIMng.Ins.GetPanel(PanelType.MatePanel) as MatePanel).UnlockTalent(5, i + 1);
  682. mateid = 5;
  683. }
  684. }
  685. }
  686. }
  687. }
  688. }
  689. }
  690. if (!ischange)
  691. this.SaveMateTalent(mateid);
  692. }
  693. /**保存天赋
  694. * @param mateid 伙伴id
  695. */
  696. SaveMateTalent(mateid: number) {
  697. switch (mateid) {
  698. case 1:
  699. PlayerPrefs.SetObject("MateTalent" + mateid, this.mate1talentData);
  700. break;
  701. case 2:
  702. PlayerPrefs.SetObject("MateTalent" + mateid, this.mate2talentData);
  703. break;
  704. case 3:
  705. PlayerPrefs.SetObject("MateTalent" + mateid, this.mate3talentData);
  706. break;
  707. case 4:
  708. PlayerPrefs.SetObject("MateTalent" + mateid, this.mate4talentData);
  709. break;
  710. case 5:
  711. PlayerPrefs.SetObject("MateTalent" + mateid, this.mate5talentData);
  712. break;
  713. }
  714. PlayerPrefs.SetObject("MateUnlockAry", this.mateUnlockAry);
  715. }
  716. SaveTalentData() {
  717. PlayerPrefs.SetObject("MateTalent1", this.mate1talentData);
  718. PlayerPrefs.SetObject("MateTalent2", this.mate2talentData);
  719. PlayerPrefs.SetObject("MateTalent3", this.mate3talentData);
  720. PlayerPrefs.SetObject("MateTalent4", this.mate4talentData);
  721. PlayerPrefs.SetObject("MateTalent5", this.mate5talentData);
  722. }
  723. /**显示解锁并有效的天赋icon*/
  724. DisplayTalent(parent: cc.Node, talent_pfb: cc.Prefab) {
  725. return
  726. parent.removeAllChildren();
  727. for (let i = 0; i < this.mateUnlockAry.length; i++) {
  728. if (i == 0) {
  729. if (this.mateUnlockAry[i] == 1) {
  730. for (let i = 0; i < this.mate1talentData.length; i++) {
  731. if (this.mate1talentData[i].isUnlock) {
  732. let temp = cc.instantiate(talent_pfb);
  733. temp.getComponent(TalentIconItem).Init(1, i + 1);
  734. parent.addChild(temp);
  735. }
  736. }
  737. }
  738. } else if (i == 1) {
  739. if (this.mateUnlockAry[i] == 1) {
  740. for (let i = 0; i < this.mate2talentData.length; i++) {
  741. if (this.mate2talentData[i].isUnlock) {
  742. let temp = cc.instantiate(talent_pfb);
  743. temp.getComponent(TalentIconItem).Init(2, i + 1);
  744. parent.addChild(temp);
  745. }
  746. }
  747. }
  748. } else if (i == 2) {
  749. if (this.mateUnlockAry[i] == 1) {
  750. for (let i = 0; i < this.mate3talentData.length; i++) {
  751. if (this.mate3talentData[i].isUnlock) {
  752. let temp = cc.instantiate(talent_pfb);
  753. temp.getComponent(TalentIconItem).Init(3, i + 1);
  754. parent.addChild(temp);
  755. }
  756. }
  757. }
  758. } else if (i == 3) {
  759. if (this.mateUnlockAry[i] == 1) {
  760. for (let i = 0; i < this.mate4talentData.length; i++) {
  761. if (this.mate4talentData[i].isUnlock) {
  762. let temp = cc.instantiate(talent_pfb);
  763. temp.getComponent(TalentIconItem).Init(4, i + 1);
  764. parent.addChild(temp);
  765. }
  766. }
  767. }
  768. } else if (i == 4) {
  769. if (this.mateUnlockAry[i] == 1) {
  770. for (let i = 0; i < this.mate5talentData.length; i++) {
  771. if (this.mate5talentData[i].isUnlock) {
  772. let temp = cc.instantiate(talent_pfb);
  773. temp.getComponent(TalentIconItem).Init(5, i + 1);
  774. parent.addChild(temp);
  775. }
  776. }
  777. }
  778. }
  779. }
  780. }
  781. /**获取伙伴天赋打点信息*/
  782. GetMateInfo() {
  783. let info = "";
  784. info += this.talentCoin + ";";
  785. for (let i = 0; i < this.mate1talentData.length; i++) {
  786. info += this.mate1talentData[i].lv + ";";
  787. }
  788. for (let i = 0; i < this.mate2talentData.length; i++) {
  789. info += this.mate2talentData[i].lv + ";";
  790. }
  791. for (let i = 0; i < this.mate3talentData.length; i++) {
  792. info += this.mate3talentData[i].lv + ";";
  793. }
  794. for (let i = 0; i < this.mate4talentData.length; i++) {
  795. info += this.mate4talentData[i].lv + ";";
  796. }
  797. for (let i = 0; i < this.mate5talentData.length; i++) {
  798. info += this.mate5talentData[i].lv + ";";
  799. }
  800. return info;
  801. }
  802. talentDetaile: cc.Node = null;
  803. /**
  804. * 显示天赋详情
  805. * @param mateid 伙伴id
  806. * @param talentid 天赋id
  807. */
  808. async DisplayTalentDetaile(mateid: number, talentid: number, pos: cc.Vec2) {
  809. if (this.talentDetaile == null) {
  810. this.talentDetaile = cc.instantiate(await Utils.loadResPromise("prefabs/TalentDetaile"));
  811. this.talentDetaile.parent = cc.find("Canvas");
  812. }
  813. //this.talentDetaile.getComponent(TalentDetaile).DisplayTalentDetaile(mateid, talentid, pos);
  814. this.talentDetaile.getComponent(TalentDetaile).DisplayTalentDetaile();
  815. }
  816. //是否有可以升级的天赋
  817. checkMateRedPoint() {
  818. let hasUpTalent = false
  819. let resultTangsen = this.checkTalentIconEnouth(this.mate1talentData, 1)
  820. if (resultTangsen > 0) {
  821. hasUpTalent = true
  822. }
  823. let resultWukong = this.checkTalentIconEnouth(this.mate2talentData, 2)
  824. if (resultWukong > 0) {
  825. hasUpTalent = true
  826. }
  827. let resultBailong = this.checkTalentIconEnouth(this.mate3talentData, 3)
  828. if (resultBailong > 0) {
  829. hasUpTalent = true
  830. }
  831. let resultBajie = this.checkTalentIconEnouth(this.mate4talentData, 4)
  832. if (resultBajie > 0) {
  833. hasUpTalent = true
  834. }
  835. let resultShasen = this.checkTalentIconEnouth(this.mate5talentData, 5)
  836. if (resultShasen > 0) {
  837. hasUpTalent = true
  838. }
  839. RedPointM.instance.ActiveRedPoint(RedPointType.Mate, hasUpTalent)
  840. }
  841. checkTalentIconEnouth(talentDataItem: Array<TalentDataItem>, index: number): number {
  842. for (let entry of talentDataItem) {
  843. if (entry.isUnlock) {
  844. let character = GameM.commonData.mateTalentCfg[index - 1]
  845. let talent = character.talents //获取对应人物的技能列表
  846. let info = talent[entry.id - 1]
  847. if (entry.lv < info.uplevel_coin.length && this.talentCoin >= info.uplevel_coin[entry.lv]) {
  848. return 1
  849. }
  850. }
  851. }
  852. return 0
  853. }
  854. /*
  855. async http_post(url, params) {
  856. return new Promise((resolve, reject) => {
  857. var xhr = cc.loader.getXMLHttpRequest();
  858. var time = false;//是否超时
  859. var timer = setTimeout(function () {
  860. time = true;
  861. xhr.abort();//请求中止
  862. resolve(‘timeout’);
  863. }, 5000);
  864. xhr.onreadystatechange = function () {
  865. console.log(‘xhr.readyState =’+xhr.readyState +’ xhr.status =’+xhr.status);
  866. if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
  867. var respone = xhr.responseText;
  868. if (time) return;//请求已经超时,忽略中止请求
  869. clearTimeout(timer);//取消等待的超时
  870. console.log(“url: ”, url, respone);
  871. resolve(respone);
  872. }
  873. };
  874. let url_temp: string;
  875. if (orc.game_config.DEBUG == true) {
  876. url_temp = orc.game_config.HTTP_TEST_URL;
  877. }
  878. else {
  879. url_temp = orc.game_config.HTTP_ONLINE_URL;
  880. }
  881. url_temp = url_temp + url;
  882. xhr.open(“POST”, url_temp, true);
  883. // note: In Internet Explorer, the timeout property may be set only after calling the open()
  884. // method and before calling the send() method.
  885. xhr.timeout = 5000;// 5 seconds for timeout
  886. //xhr.setRequestHeader(“Content-Type”,“application/x-www-form-urlencoded”);
  887. xhr.send(params);
  888. })
  889. }
  890. */
  891. }
  892. export class TalentDataItem {
  893. /**伙伴id 1 唐僧 2 悟空 3 白龙马 4 八戒 5 沙僧*/
  894. mateId: number;
  895. /**天赋id 1 2 或3 */
  896. id: number;
  897. /**是否解锁*/
  898. isUnlock: boolean;
  899. /**当前等级 不管是否解锁 默认1级*/
  900. lv: number;
  901. /**天赋效果值 1 数值 2 百分比*/
  902. value: number;
  903. }
  904. /**天赋参数*/
  905. export class TalentItemParam {
  906. /**伙伴id 1 唐僧 2 悟空 3 白龙马 4 八戒 5 沙僧*/
  907. mateId: number;
  908. /**天赋id 1 2 或3 */
  909. id: number;
  910. /**是否解锁*/
  911. isUnlock: boolean;
  912. /**当前等级 不管是否解锁 默认1级*/
  913. lv: number;
  914. /**天赋图*/
  915. img: cc.SpriteFrame;
  916. /**天赋名*/
  917. name: string;
  918. /**天赋描述 now_value 当前天赋效果值 next_value 下一级天赋效果值*/
  919. des: string[];
  920. /**解锁条件 上一个技能达到的等级*/
  921. unlock_lv: number;
  922. /**升级所需天赋币*/
  923. uplevel_coin: number[];
  924. /**天赋效果类型 1 百分比 2 具体值*/
  925. effect_type: number;
  926. /**升级对应的 天赋值*/
  927. uplevel_effect: number[]
  928. }