SGLBRollPanel.js 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045
  1. var RollPanel = require("LBRollPanel");
  2. var Global = require("Global");
  3. var topTipMsg = require("topTipMsg");
  4. var UIHelper = require("UIHelper");
  5. var BaseDefine = require("BaseDefine");
  6. var GameProtocol = require("SGLBGameProtocol");
  7. import ScenceManager from 'HNScenceManager'
  8. const arr_posX = [-373, -186, 1, 186, 373];
  9. cc.Class({
  10. extends: RollPanel,
  11. editor: {
  12. menu: 'Game/SGLB/RollPanel'
  13. },
  14. properties: {
  15. aniNode: cc.Node,
  16. // rollBG: [cc.Node],
  17. // itemClone: cc.Prefab,
  18. // itemSpines: [sp.SkeletonData],
  19. // bGameEnd: false,
  20. },
  21. // LIFE-CYCLE CALLBACKS:
  22. // onLoad () {
  23. // this._rollResultData = {};
  24. // this._lineCount = 0;
  25. // this._lineSize = [];
  26. // this._lineID = [];
  27. // this._lineIcon = [];
  28. // this._lineTimes = [];
  29. // this.elementNode = [];
  30. // this.elementJS = [];
  31. // this.rollNode = [];
  32. // this.itemData = [];
  33. // // this.initSingleItemLists();
  34. // this.initLongLists();
  35. // this._startRollTime = 0;
  36. // },
  37. // update(dt) {
  38. // // Global.print(dt)
  39. // for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  40. // let yy = this.rollBG[i].y;
  41. // for(let j = 0; j < this.maxRolItemlLen; ++j) {
  42. // let dy = this.rollNode[i][j].y + yy;
  43. // this.rollNode[i][j].active = (dy > -2*sizec) && (dy < 2*sizec);
  44. // }
  45. // }
  46. // },
  47. // initLongLists() {
  48. // this.tempValue = [];
  49. // for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  50. // this.elementNode[i] = [];
  51. // this.elementJS[i] = [];
  52. // this.rollNode[i] = [];
  53. // this.itemData[i] = [];
  54. // this.tempValue[i] = [];
  55. // this.rollBG[i].active = true;
  56. // for(let j = 0; j < this.maxRolItemlLen-5; ++j) {
  57. // this.tempValue[i][j] = this.getRandomValue();
  58. // }
  59. // for(let j = this.maxRolItemlLen-5; j < this.maxRolItemlLen; ++j) {
  60. // this.tempValue[i][j] = this.tempValue[i][j-12];
  61. // }
  62. // for(let j = 0; j < this.maxRolItemlLen; ++j) {
  63. // let item = cc.instantiate(this.itemClone);
  64. // item.y = (this.maxRolItemlLen - 3 - j)*(sizec);
  65. // item.parent = this.rollBG[i];
  66. // item.active = true;
  67. // this.rollNode[i][j] = item;
  68. // this.elementJS[i][j] = this.rollNode[i][j].getComponent("SGLBItem");
  69. // this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]]);
  70. // }
  71. // }
  72. // },
  73. // startRollActions() {
  74. // this.bGameEnd = false;
  75. // this.node.stopAllActions();
  76. // this.resetItemCounts();
  77. // for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  78. // let rollbg = this.rollBG[i];
  79. // rollbg.active = true;
  80. // rollbg.y = 0;
  81. // rollbg.stopAllActions();
  82. // for(let j = 4; j < 9; ++j) {
  83. // this.tempValue[i][j] = this.tempValue[i][j+12];
  84. // this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]]);
  85. // }
  86. // cc.tween(rollbg)
  87. // .sequence(
  88. // cc.tween().to(1, {y: -12*sizec}),
  89. // cc.tween().call(()=>{ rollbg.y = 0, this.resetRollingItemValue(i) })
  90. // )
  91. // .repeatForever()
  92. // .start()
  93. // }
  94. // this._startRollTime = new Date().getTime();
  95. // },
  96. // resetRollingItemValue(i) {
  97. // for(let j = 9; j < this.maxRolItemlLen-5; ++j) {
  98. // this.tempValue[i][j] = this.getRandomValue();
  99. // this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]]);
  100. // }
  101. // // Global.print("resetItem"+i);
  102. // // for(let j = 1; j < 4; ++j) {
  103. // // Global.print("j:"+j+" v:"+this.tempValue[i][j]);
  104. // // }
  105. // },
  106. openPrizes(justEnd, bQuick) {
  107. if(this.bGameEnd == true) {
  108. return;
  109. }
  110. let endTime = new Date().getTime();
  111. let leftTime = this._startRollTime - endTime + 1000;
  112. this.delayTime = 0.2;
  113. if(bQuick) {
  114. leftTime -= 500;
  115. }
  116. if(leftTime < 0 || justEnd) {
  117. leftTime = 0;
  118. }
  119. if(justEnd) {
  120. this.delayTime = 0;
  121. }
  122. this.node.stopAllActions();
  123. this.bQuick = bQuick;
  124. this.FreeCount = 0;
  125. //快速,并且前四排骷髅头总数少于2
  126. if(bQuick || justEnd) {
  127. for(let i = 0;i < this.MAX_COL_NUM; ++i) {
  128. if(this.FreeCount >= 2) {
  129. this.playEffect("freeicon");
  130. cc.tween(this.node)
  131. .delay(leftTime/1000+0.2)
  132. .call(()=>{
  133. this.hotRolls(i);
  134. })
  135. .start()
  136. return;
  137. }
  138. cc.tween(this.node)
  139. .delay(leftTime/1000)
  140. .call(()=>{
  141. this.quickEnd(i);
  142. if(i >= 4) {
  143. this.delayShowPrizes(1000);
  144. }
  145. })
  146. .start()
  147. for(let j = 0; j < this.MAX_ROW_NUM; ++j) {
  148. if(this.tempValue[i][j+1] == this.SPECIAL_ICON) {
  149. this.FreeCount++;
  150. }
  151. }
  152. }
  153. this.playEffect("normal_stop");
  154. return;
  155. }
  156. cc.tween(this.node)
  157. .delay(leftTime/1000)
  158. .call(()=>{
  159. this.rollEnds(0);
  160. })
  161. .start()
  162. },
  163. setItemColInfo(i, dIdx) {
  164. let bHasFree = false;
  165. for(let j = this.maxRolItemlLen-5; j < this.maxRolItemlLen; ++j) {
  166. this.elementNode[i][j-this.maxRolItemlLen+dIdx-1].active = true;
  167. this.elementNode[i][j].active = true;
  168. this.tempValue[i][j] = this.tempValue[i][j-this.maxRolItemlLen+dIdx-1];
  169. this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]], this.isSpecialIcon(this.tempValue[i][j]));
  170. if(j > this.maxRolItemlLen-5 && j < this.maxRolItemlLen-1) {
  171. if(this.tempValue[i][j] == this.SPECIAL_ICON) {
  172. bHasFree = true;
  173. }
  174. }
  175. }
  176. if(bHasFree) {
  177. this.playEffect("freeicon");
  178. }else{
  179. this.playEffect("normal_stop");
  180. }
  181. },
  182. quickEnd(i) {
  183. if(i >= this.MAX_COL_NUM) {
  184. return;
  185. }
  186. let rollbg = this.rollBG[i];
  187. rollbg.stopAllActions();
  188. let yy = rollbg.y;
  189. let destIdx = this.maxRolItemlLen - 3 - Math.floor(yy/-this.sizec);
  190. for(let j = destIdx-3; j >= destIdx-6; --j) {
  191. this.tempValue[i][j] = this.tempValue[i][j-destIdx+6];
  192. this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]], this.isSpecialIcon(this.tempValue[i][j]));
  193. }
  194. let destY = (this.maxRolItemlLen - destIdx+1) * -this.sizec;
  195. let lastTime = (yy - destY + 50)/this.sizec/12;
  196. cc.tween(rollbg)
  197. .to(lastTime, {y: destY-50})
  198. .to(0.1, {y: destY}, {easing: 'sineInOut'})
  199. .call(()=>{
  200. this.setItemColInfo(i, destIdx);
  201. rollbg.y = 0;
  202. })
  203. .start()
  204. },
  205. justEnd(i) {
  206. if(i >= this.MAX_COL_NUM) {
  207. return;
  208. }
  209. let rollbg = this.rollBG[i];
  210. rollbg.stopAllActions();
  211. let yy = rollbg.y;
  212. let destIdx = this.maxRolItemlLen - 3 - Math.floor(yy/-this.sizec);
  213. for(let j = destIdx-3; j >= destIdx-6; --j) {
  214. this.tempValue[i][j] = this.tempValue[i][j-destIdx+6];
  215. this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]], this.isSpecialIcon(this.tempValue[i][j]));
  216. }
  217. let destY = (this.maxRolItemlLen - destIdx+1) * -this.sizec;
  218. let lastTime = (yy - destY + 50)/this.sizec/12*0.5;
  219. cc.tween(rollbg)
  220. .to(lastTime, {y: destY-50})
  221. .call(()=>{
  222. this.hotRolls(i+1);
  223. })
  224. .to(0.1, {y: destY}, {easing: 'sineInOut'})
  225. .call(()=>{
  226. this.setItemColInfo(i, destIdx);
  227. rollbg.y = 0;
  228. })
  229. .start()
  230. },
  231. hotRolls(i) {
  232. if(i >= this.MAX_COL_NUM) {
  233. this.delayShowPrizes(600);
  234. return;
  235. }
  236. this.playLPEffect("hotroll");
  237. let rollbg = this.rollBG[i];
  238. rollbg.stopAllActions();
  239. this.aniNode.active = true;
  240. this.aniNode.x = arr_posX[i];
  241. let yy = rollbg.y;
  242. let lessY = yy + 12*this.sizec;
  243. let lastTime = lessY/this.sizec/12*0.3;
  244. cc.tween(rollbg)
  245. .to(lastTime, {y: -12*this.sizec})
  246. .sequence(
  247. cc.tween().call(()=>{ rollbg.y = 0, this.resetRollingItemValue(i) }),
  248. cc.tween().to(0.5, {y: -12*this.sizec})
  249. )
  250. .repeatForever()
  251. .start()
  252. cc.tween(this.node)
  253. .delay(2)
  254. .call(()=>{
  255. this.aniNode.active = false;
  256. this.justEnd(i);
  257. })
  258. .start()
  259. },
  260. rollEnds(i) {
  261. if(i == 0) {
  262. ScenceManager.Instance().getGameComponent().onGameEnd();
  263. }
  264. if(this.FreeCount >= 2) {
  265. cc.tween(this.node)
  266. .delay(0.3)
  267. .call(()=>{
  268. this.hotRolls(i);
  269. })
  270. .start()
  271. // this.hotRolls(i);
  272. return;
  273. }
  274. if(i > 4) {
  275. this.delayShowPrizes(600);
  276. return;
  277. }
  278. //先统计骷髅头数量
  279. for(let j = 0; j < this.MAX_ROW_NUM; ++j) {
  280. if(this.tempValue[i][j+1] == this.SPECIAL_ICON) {
  281. this.FreeCount++;
  282. }
  283. }
  284. let rollbg = this.rollBG[i];
  285. rollbg.stopAllActions();
  286. let yy = rollbg.y;
  287. let destIdx = this.maxRolItemlLen - 3 - Math.floor(yy/-this.sizec);
  288. // Global.print("i"+i+" "+destIdx)
  289. for(let j = destIdx-3; j >= destIdx-6; --j) {
  290. this.tempValue[i][j] = this.tempValue[i][j-destIdx+6];
  291. this.elementJS[i][j].setValue(this.tempValue[i][j], this.itemSpines[this.tempValue[i][j]], this.isSpecialIcon(this.tempValue[i][j]));
  292. }
  293. let destY = (this.maxRolItemlLen - destIdx+1) * -this.sizec;
  294. let lastTime = (yy - destY + 50)/this.sizec/12;
  295. if(this.bQuick) {
  296. cc.tween(rollbg)
  297. .call(()=>{
  298. this.rollEnds(i+1);
  299. })
  300. .to(lastTime, {y: destY-50})
  301. .to(0.1, {y: destY}, {easing: 'sineInOut'})
  302. .call(()=>{
  303. this.setItemColInfo(i, destIdx);
  304. rollbg.y = 0;
  305. })
  306. .start()
  307. return;
  308. }
  309. cc.tween(rollbg)
  310. .to(lastTime, {y: destY-50})
  311. .call(()=>{
  312. this.rollEnds(i+1);
  313. })
  314. .to(0.1, {y: destY}, {easing: 'sineInOut'})
  315. // .delay(this.delayTime)
  316. .call(()=>{
  317. this.setItemColInfo(i, destIdx);
  318. rollbg.y = 0;
  319. // rollbg.y = -16*140;
  320. // this.rollEnds(i+1);
  321. })
  322. .start()
  323. },
  324. delayShowPrizes(delayTime) {
  325. cc.tween(this.node)
  326. .delay(delayTime/1000)
  327. .call(()=>{
  328. this.bGameEnd = true;
  329. ScenceManager.Instance().getGameComponent().showGameWinScore();
  330. this.showPrizes();
  331. })
  332. .delay(0.6)
  333. .call(()=>{
  334. // ScenceManager.Instance().getGameComponent().resetAllBtn();
  335. ScenceManager.Instance().getGameComponent().showGameEnd();
  336. })
  337. .start()
  338. },
  339. // showPrizes() {
  340. // for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  341. // for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  342. // this.elementJS[i][j+17].showLightAniNoScale();
  343. // if(this._hasFreeCount == 1) {
  344. // this.elementJS[i][j+17].showFreeAni();
  345. // }
  346. // }
  347. // }
  348. // cc.tween(this.node)
  349. // .delay(2.5)
  350. // .call(()=>{
  351. // this.resetItemsShow();
  352. // })
  353. // .delay(0.5)
  354. // .call(()=>{
  355. // this.showLines(0);
  356. // })
  357. // .start();
  358. // },
  359. // showLines(iIndex) {
  360. // if(iIndex >= this._lineCount) {
  361. // this.showPrizes();
  362. // return;
  363. // }
  364. // let lineID = this._lineID[iIndex];
  365. // let lineArr = linesArr[lineID];
  366. // let count = this._lineSize[iIndex];
  367. // for(let k = 0; k < count; ++k) {
  368. // let idx = lineArr[k];
  369. // let i = idx % 10;
  370. // let j = Math.floor(idx/10);
  371. // this.elementJS[i][j+17].showLightAni();
  372. // }
  373. // cc.tween(this.node)
  374. // .delay(2)
  375. // .call(()=>{
  376. // this.resetItemsShow();
  377. // })
  378. // .delay(0.5)
  379. // .call(()=>{
  380. // this.showLines(iIndex+1);
  381. // })
  382. // .start();
  383. // },
  384. // setRollDatas(msg) {
  385. // this._rollResultData = msg;
  386. // this.setItemDatas(msg.m_desk_data);
  387. // this._hasFreeCount = msg.m_kongming;
  388. // //线信息
  389. // this._lineCount = msg.m_line_count;
  390. // this._lineID = msg.m_line_id;
  391. // this._lineSize = msg.m_line_size;
  392. // this._lineIcon = msg.m_line_icon;
  393. // this._lineTimes = msg.m_line_times;
  394. // this.analyzeLinesData();
  395. // },
  396. // setItemDatas(itemData) {
  397. // this.allFreeCount = 0;
  398. // for(let i = 0; i < GameProtocol.MAX_ROW_NUM; ++i) {
  399. // for(let j = 0;j < GameProtocol.MAX_COL_NUM; ++j) {
  400. // this.tempValue[j][i+1] = itemData[i][j];
  401. // // Global.print("i:"+i+" j:"+j+" v:"+this.tempValue[j][i+1]+" cc:"+itemData[i][j]);
  402. // this.elementJS[j][i+1].setValue(itemData[i][j], this.itemSpines[this.tempValue[i][j]]);
  403. // if(itemData[i][j] == GameProtocol.FREE_ICON && j < GameProtocol.MAX_COL_NUM-1) {
  404. // this.allFreeCount++;
  405. // }
  406. // }
  407. // }
  408. // Global.print(this.tempValue);
  409. // Global.print(itemData);
  410. // },
  411. // resetItemCounts() {
  412. // for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  413. // for(let j = 0; j < this.maxRolItemlLen; ++j) {
  414. // this.elementJS[i][j].resetCount();
  415. // }
  416. // }
  417. // },
  418. // resetItemsShow() {
  419. // for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  420. // for(let j = 0; j < this.maxRolItemlLen; ++j) {
  421. // this.elementJS[i][j].showNormal();
  422. // }
  423. // }
  424. // },
  425. // analyzeLinesData() {
  426. // this._allTimers = 0;
  427. // for(let i = 0; i < this._lineCount; ++i) {
  428. // let lineID = this._lineID[i];
  429. // let lineArr = linesArr[lineID];
  430. // this._allTimers += this._lineTimes[i];
  431. // for(let j = 0; j < this._lineSize[i]; ++j) {
  432. // let idx = lineArr[j];
  433. // let x = idx % 10;
  434. // let y = Math.floor(idx/10);
  435. // this.elementJS[x][y+17].addCount();
  436. // }
  437. // }
  438. // },
  439. /**
  440. * 旧版
  441. */
  442. /*
  443. initSingleItemLists() {
  444. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  445. this.elementNode[i] = [];
  446. this.elementJS[i] = [];
  447. this.rollNode[i] = [];
  448. this.itemData[i] = [];
  449. this.rollBG[i].active = false;
  450. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  451. this.itemData[i][j] = -1;
  452. this.elementNode[i][j] = this.createItem(i, j);
  453. this.elementJS[i][j] = this.elementNode[i][j].getComponent("SGLBItem");
  454. }
  455. for(let j = 0; j < 4; ++j) {
  456. let item = cc.instantiate(this.itemClone);
  457. item.y = 2 * sizec;
  458. item.parent = this.rollBG[i];
  459. item.active = false;
  460. this.rollNode[i][j] = item;
  461. }
  462. }
  463. this.initElementData();
  464. },
  465. createItem(i, j) {
  466. let item = cc.instantiate(this.itemClone);
  467. item.x = arr_posX[i];
  468. item.y = sizec - j*sizec;
  469. item.parent = this.resultNode;
  470. item.active = true;
  471. return item;
  472. },
  473. // getRandomValue() {
  474. // return Math.floor(Math.random()*100)%10;
  475. // },
  476. resetItemValue(item, value) {
  477. let js = item.getComponent("SGLBItem");
  478. if(value == undefined || value < 0){
  479. value = this.getRandomValue();
  480. }
  481. if(js) {
  482. js.setValue(value);
  483. }
  484. },
  485. reset () {
  486. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  487. let rollbg = this.rollBG[i];
  488. for(let j = 0; j < rollbg.childrenCount; ++j) {
  489. let item = rollbg.children[j];
  490. let js = item.getComponent("SGLBItem");
  491. if(js) {
  492. js.setValue(Math.floor(Math.random()*100)%11);
  493. }
  494. }
  495. }
  496. },
  497. repeatItemAction(item) {
  498. item.active = true;
  499. item.y = 2*sizec;
  500. this.resetItemValue(item);
  501. item.stopAllActions();
  502. cc.tween(item)
  503. .sequence(
  504. cc.tween().to(0.4, {y: -2*sizec}),
  505. cc.tween().call(()=>{ item.y = 2*sizec, this.resetItemValue(item) })
  506. )
  507. .repeatForever()
  508. .start()
  509. },
  510. startRollAction() {
  511. Global.print("startRollAction");
  512. this.bGameEnd = false;
  513. // this._hasFreeCount = 0;
  514. this.node.stopAllActions();
  515. this.resetItemCount();
  516. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  517. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  518. let item = this.elementNode[i][j];
  519. item.stopAllActions();
  520. cc.tween(item)
  521. .by(0.4, {y: -4*sizec})
  522. .call(()=>{
  523. item.active = false;
  524. })
  525. .start()
  526. }
  527. let rollbg = this.rollBG[i];
  528. rollbg.active = true;
  529. rollbg.y = 0//pos_ary[1];
  530. rollbg.stopAllActions();
  531. cc.tween(rollbg)
  532. .call(()=>{
  533. this.repeatItemAction(this.rollNode[i][0]);
  534. })
  535. .delay(0.1)
  536. .call(()=>{
  537. this.repeatItemAction(this.rollNode[i][1]);
  538. })
  539. .delay(0.1)
  540. .call(()=>{
  541. this.repeatItemAction(this.rollNode[i][2]);
  542. })
  543. .delay(0.1)
  544. .call(()=>{
  545. this.repeatItemAction(this.rollNode[i][3]);
  546. })
  547. .start()
  548. {// cc.tween(rollbg)
  549. // // .sequence(
  550. // // cc.tween().to(0.5, {y: pos_ary[2]}),
  551. // // cc.tween().call(()=>{ rollbg.y = pos_ary[1] })
  552. // // )
  553. // // .repeatForever()
  554. // .call(()=>{
  555. // this.rollNode[i][0].stopAllActions();
  556. // cc.tween(this.rollNode[i][0])
  557. // .sequence(
  558. // cc.tween().to(0.4, {y: -2*sizec}),
  559. // cc.tween().call(()=>{ this.rollNode[i][0].y = 2*sizec, this.resetItemValue(this.rollNode[i][0]) })
  560. // )
  561. // .repeatForever()
  562. // .start()
  563. // })
  564. // .delay(0.1)
  565. // .call(()=>{
  566. // this.rollNode[i][1].stopAllActions();
  567. // cc.tween(this.rollNode[i][1])
  568. // .sequence(
  569. // cc.tween().to(0.4, {y: -2*sizec}),
  570. // cc.tween().call(()=>{ this.rollNode[i][1].y = 2*sizec, this.resetItemValue(this.rollNode[i][1]) })
  571. // )
  572. // .repeatForever()
  573. // .start()
  574. // })
  575. // .delay(0.1)
  576. // .call(()=>{
  577. // this.rollNode[i][2].stopAllActions();
  578. // cc.tween(this.rollNode[i][2])
  579. // .sequence(
  580. // cc.tween().to(0.4, {y: -2*sizec}),
  581. // cc.tween().call(()=>{ this.rollNode[i][2].y = 2*sizec, this.resetItemValue(this.rollNode[i][2]) })
  582. // )
  583. // .repeatForever()
  584. // .start()
  585. // })
  586. // .delay(0.1)
  587. // .call(()=>{
  588. // this.rollNode[i][3].stopAllActions();
  589. // cc.tween(this.rollNode[i][3])
  590. // .sequence(
  591. // cc.tween().to(0.4, {y: -2*sizec}),
  592. // cc.tween().call(()=>{ this.rollNode[i][3].y = 2*sizec, this.resetItemValue(this.rollNode[i][3]) })
  593. // )
  594. // .repeatForever()
  595. // .start()
  596. // })
  597. // .start()
  598. }
  599. }
  600. this._startRollTime = new Date().getTime();
  601. },
  602. openPrize(justEnd, bQuick) {
  603. if(this.bGameEnd == true) {
  604. return;
  605. }
  606. let endTime = new Date().getTime();
  607. let leftTime = this._startRollTime - endTime + 3000;
  608. let delayTime = 0.2;
  609. if(bQuick) {
  610. delayTime = 0;
  611. leftTime -= 2000;
  612. }
  613. if(leftTime < 0 || justEnd) {
  614. leftTime = 0;
  615. }
  616. this.node.stopAllActions();
  617. let ccount = 0;
  618. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  619. if(ccount < 2) {
  620. cc.tween(this.node)
  621. .delay(i*delayTime+leftTime/1000)
  622. .call(()=>{
  623. this.rollEnd(i);
  624. })
  625. .start()
  626. }else{
  627. cc.tween(this.node)
  628. .delay(i*delayTime+leftTime/1000)
  629. .call(()=>{
  630. this.hotRoll(i);
  631. })
  632. .start()
  633. return;
  634. }
  635. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  636. if(this.itemData[i][j] == GameProtocol.FREE_ICON) {
  637. ccount++;
  638. }
  639. }
  640. }
  641. },
  642. hotRoll(i) {
  643. if(i >= GameProtocol.MAX_COL_NUM) {
  644. // ScenceManager.Instance().getGameComponent().showGameWinScore();
  645. // this.showPrize();
  646. this.delayShowPrize(600);
  647. return;
  648. }
  649. let rollbg = this.rollBG[i];
  650. rollbg.stopAllActions();
  651. let arr = this.rollNode[i];
  652. let maxTim = 1;
  653. for(let j = 0; j < 4; ++j) {
  654. let item = arr[j];
  655. item.active = true;
  656. item.stopAllActions();
  657. let time = (item.y + 2 * sizec) / sizec * 0.05;
  658. maxTim = maxTim > time ? time : maxTim;
  659. cc.tween(item)
  660. .to(time, {y: -2*sizec})
  661. .sequence(
  662. cc.tween().to(0.15, {y: -2*sizec}),
  663. cc.tween().call(()=>{ item.y = 2*sizec, this.resetItemValue(item) })
  664. )
  665. .repeatForever()
  666. .start()
  667. }
  668. cc.tween(rollbg)
  669. .delay(maxTim+3)
  670. .call(()=>{
  671. for(let j = 0; j < 4; ++j) {
  672. let item = arr[j];
  673. item.active = true;
  674. item.stopAllActions();
  675. let time = (item.y + 2 * sizec) / sizec * 0.01;
  676. maxTim = maxTim > time ? time : maxTim;
  677. cc.tween(item)
  678. .to(time, {y: -2*sizec})
  679. .call(()=>{
  680. item.active = false;
  681. })
  682. .start()
  683. }
  684. })
  685. .delay(0.2)
  686. .call(()=>{
  687. this.hotRoll(i+1);
  688. })
  689. .start()
  690. let ars = this.elementNode[i];
  691. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  692. let item = ars[j];
  693. item.active = true;
  694. this.resetItemValue(item, this.getItemData(i, j));
  695. item.stopAllActions();
  696. cc.tween(item)
  697. .delay(maxTim+3)
  698. .call(()=>{
  699. item.y = (4-j)*sizec;
  700. })
  701. .to(0.1, {y: (1-j)*sizec})
  702. .start()
  703. }
  704. },
  705. rollEnd(i) {
  706. if(i == 0) {
  707. ScenceManager.Instance().getGameComponent().onGameEnd();
  708. }
  709. let rollbg = this.rollBG[i];
  710. rollbg.stopAllActions();
  711. let arr = this.rollNode[i];
  712. let maxTim = 1;
  713. for(let j = 0; j < 4; ++j) {
  714. let item = arr[j];
  715. item.active = true;
  716. item.stopAllActions();
  717. let time = (item.y + 2 * sizec) / sizec * 0.05;
  718. maxTim = maxTim > time ? time : maxTim;
  719. cc.tween(item)
  720. .to(time, {y: -2*sizec})
  721. .call(()=>{
  722. item.active = false;
  723. })
  724. .start()
  725. }
  726. let ars = this.elementNode[i];
  727. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  728. let item = ars[j];
  729. item.active = true;
  730. this.resetItemValue(item, this.getItemData(i, j));
  731. item.y = (4-j)*sizec;
  732. item.stopAllActions();
  733. cc.tween(item)
  734. .delay(maxTim)
  735. .to(0.2, {y: (1-j)*sizec})
  736. .start()
  737. }
  738. if(i >= 4) {
  739. this.delayShowPrize(600);
  740. // setTimeout(()=>{
  741. // this.bGameEnd = true;
  742. // ScenceManager.Instance().getGameComponent().showGameWinScore();
  743. // this.showPrize();
  744. // }, 600);
  745. }
  746. return;
  747. {
  748. cc.tween(rollbg)
  749. .call(()=>{
  750. this.elementState[i][0] = ELEMENTSTATE_RUNNING;
  751. arr[0].y = elementPosY + sizec*4 + lessLenth;
  752. arr[0].active = true;
  753. cc.tween(arr[0])
  754. .to(0.2, {y: elementPosY + sizec*3-10})
  755. .to(0.2, {y: elementPosY + sizec*3}, {easing: 'sineInOut'})
  756. .call(()=>{
  757. this.elementState[i][0] = ELEMENTSTATE_END;
  758. })
  759. .start()
  760. })
  761. .call(()=>{
  762. this.elementState[i][1] = ELEMENTSTATE_RUNNING;
  763. arr[1].y = elementPosY + sizec*3 + lessLenth;
  764. arr[1].active = true;
  765. cc.tween(arr[1])
  766. .to(0.2, {y: elementPosY + sizec*2-10})
  767. .to(0.2, {y: elementPosY + sizec*2}, {easing: 'sineInOut'})
  768. .call(()=>{
  769. this.elementState[i][1] = ELEMENTSTATE_END;
  770. })
  771. .start()
  772. })
  773. .call(()=>{
  774. this.elementState[i][2] = ELEMENTSTATE_RUNNING;
  775. arr[2].y = elementPosY + sizec*2 + lessLenth;
  776. arr[2].active = true;
  777. cc.tween(arr[2])
  778. .to(0.2, {y: elementPosY + sizec-10})
  779. .to(0.2, {y: elementPosY + sizec}, {easing: 'sineInOut'})
  780. .call(()=>{
  781. this.elementState[i][2] = ELEMENTSTATE_END;
  782. if(i == 5) {
  783. this.bGameEnd = true;
  784. }
  785. })
  786. .start()
  787. })
  788. .to(0.2, {y: pos_ary[3]})
  789. .delay(1.5)
  790. .call(()=>{
  791. if(i == 5) {
  792. this.showPrize();
  793. }
  794. })
  795. .start()
  796. }
  797. },
  798. delayShowPrize(delayTime) {
  799. cc.tween(this.node)
  800. .delay(delayTime/1000)
  801. .call(()=>{
  802. this.bGameEnd = true;
  803. ScenceManager.Instance().getGameComponent().showGameWinScore();
  804. this.showPrize();
  805. })
  806. .delay(1)
  807. .call(()=>{
  808. ScenceManager.Instance().getGameComponent().resetAllBtn();
  809. ScenceManager.Instance().getGameComponent().showGameEnd();
  810. })
  811. .start()
  812. // setTimeout(()=>{
  813. // this.bGameEnd = true;
  814. // ScenceManager.Instance().getGameComponent().showGameWinScore();
  815. // this.showPrize();
  816. // }, delayTime);
  817. },
  818. showPrize() {
  819. return;
  820. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  821. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  822. this.elementJS[i][j].showLightAni();
  823. if(this._hasFreeCount == 1) {
  824. this.elementJS[i][j].showFreeAni();
  825. }
  826. }
  827. }
  828. cc.tween(this.node)
  829. .delay(1)
  830. // .call(()=>{
  831. // ScenceManager.Instance().getGameComponent().resetAllBtn();
  832. // ScenceManager.Instance().getGameComponent().showGameEnd();
  833. // })
  834. .delay(0.5)
  835. .call(()=>{
  836. this.resetItemShow();
  837. })
  838. .delay(0.5)
  839. .call(()=>{
  840. this.showLine(0);
  841. })
  842. .start();
  843. },
  844. showLine(iIndex) {
  845. if(iIndex >= this._lineCount) {
  846. this.showPrize();
  847. return;
  848. }
  849. let lineID = this._lineID[iIndex];
  850. let lineArr = linesArr[lineID];
  851. let count = this._lineSize[iIndex];
  852. // Global.print(iIndex+" lineid:"+lineID+" linecount:"+count);
  853. // this.resetItemShow();
  854. for(let k = 0; k < count; ++k) {
  855. let idx = lineArr[k];
  856. let i = idx % 10;
  857. let j = Math.floor(idx/10);
  858. // Global.print("showLine:i"+i+"j"+j);
  859. this.elementJS[i][j].showLightAni();
  860. }
  861. cc.tween(this.node)
  862. .delay(1)
  863. .call(()=>{
  864. this.resetItemShow();
  865. })
  866. .delay(0.5)
  867. .call(()=>{
  868. this.showLine(iIndex+1);
  869. })
  870. .start();
  871. },
  872. setRollData(msg) {
  873. this._rollResultData = msg;
  874. this.setItemData(msg.m_desk_data);
  875. this._hasFreeCount = msg.m_kongming;
  876. //线信息
  877. this._lineCount = msg.m_line_count;
  878. this._lineID = msg.m_line_id;
  879. this._lineSize = msg.m_line_size;
  880. this._lineIcon = msg.m_line_icon;
  881. this._lineTimes = msg.m_line_times;
  882. // this.analyseLinesFromData();
  883. this.analyseLinesData();
  884. },
  885. analyseLinesFromData() {
  886. this._lineCount = 0;
  887. this._lineID = [];
  888. this._lineSize = [];
  889. this._lineIcon = [];
  890. this._lineTimes = [];
  891. for(let i = 0; i < GameProtocol.MAX_LINE_COUNT; ++i) {
  892. let lineArr = linesArr[i];
  893. let count = 1;
  894. let startV = -1;
  895. for(let j = 0; j < lineArr.length; ++j) {
  896. let idx = lineArr[j];
  897. let x = idx % 10;
  898. let y = Math.floor(idx/10);
  899. let value = this.itemData[x][y];
  900. if(j == 0) {
  901. startV = value;
  902. }else{
  903. if(value == 11 || value == startV) {
  904. count++;
  905. }else{
  906. break;
  907. }
  908. }
  909. }
  910. if(count >= 3) {
  911. this._lineCount++;
  912. this._lineID.push(i);
  913. this._lineSize.push(count);
  914. }
  915. }
  916. Global.print(this._lineCount);
  917. Global.print(this._lineID);
  918. Global.print(this._lineSize);
  919. },
  920. analyseLinesData() {
  921. this._allTimers = 0;
  922. for(let i = 0; i < this._lineCount; ++i) {
  923. let lineID = this._lineID[i];
  924. let lineArr = linesArr[lineID];
  925. this._allTimers += this._lineTimes[i];
  926. for(let j = 0; j < this._lineSize[i]; ++j) {
  927. let idx = lineArr[j];
  928. let x = idx % 10;
  929. let y = Math.floor(idx/10);
  930. this.elementJS[x][y].addCount();
  931. }
  932. }
  933. },
  934. setItemData(itemData) {
  935. for(let i = 0; i < GameProtocol.MAX_ROW_NUM; ++i) {
  936. for(let j = 0;j < GameProtocol.MAX_COL_NUM; ++j) {
  937. this.itemData[j][i] = itemData[i][j];
  938. }
  939. }
  940. // this.initElementData();
  941. },
  942. resetItemCount() {
  943. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  944. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  945. this.elementJS[i][j].resetCount();
  946. }
  947. }
  948. },
  949. resetItemShow() {
  950. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  951. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  952. this.elementJS[i][j].showNormal();
  953. }
  954. }
  955. },
  956. initElementData() {
  957. for(let i = 0; i < GameProtocol.MAX_COL_NUM; ++i) {
  958. for(let j = 0; j < GameProtocol.MAX_ROW_NUM; ++j) {
  959. this.resetItemValue(this.elementNode[i][j], this.getItemData(i, j));
  960. }
  961. }
  962. },
  963. getItemData(i, j) {
  964. if(!this.itemData || this.itemData.length <= 0) {
  965. return -1;
  966. }
  967. return this.itemData[i][j];
  968. },
  969. */
  970. // update (dt) {},
  971. });