GuideToWx.ts 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. /** 引导到微信 */
  2. import JsbSystem from "../../../mk/system/JsbSystem";
  3. import { DataEventId } from "../../data/GameData";
  4. import { GuideState } from "../../data/module/GuideToWxData";
  5. const { ccclass, property } = cc._decorator;
  6. @ccclass
  7. export default class GuideToWx extends cc.Component {
  8. @property(cc.Sprite)
  9. sp_money: cc.Sprite = null;
  10. @property(cc.Sprite)
  11. sp_getMoney: cc.Sprite = null;
  12. @property(cc.Sprite)
  13. sp_fill: cc.Sprite = null;
  14. @property(cc.Node)
  15. node_target: cc.Node = null;
  16. @property(cc.Node)
  17. hand: cc.Node = null;
  18. @property(cc.VideoPlayer)
  19. videoPlayer: cc.VideoPlayer = null;
  20. @property(cc.Node)
  21. nodeStateArr: cc.Node[] = [];
  22. /** 进度条进度 */
  23. private fillPer = 0;
  24. /** 根据金额获取index */
  25. private moneyIndex = 0;
  26. private checkCloseGuide = false;
  27. private lastTimeSpan = -1;
  28. async start() {
  29. // this.node_target.opacity = 0;
  30. // this.hand.active = false;
  31. this.moneyIndex = this.getIndexByMoney();
  32. let path = 'module/guideToWx/texture/money_' + this.moneyIndex;
  33. this.sp_money.spriteFrame = await mk.loader.load(path, cc.SpriteFrame);
  34. // let response = await mk.http.sendData('getAddServiceState', {});
  35. // mk.console.logSingle('GuideToWx getAddServiceState ', response);
  36. // if (response.errcode != 0) {
  37. // return
  38. // }
  39. // console.log("state >> ", response.data.state)
  40. // switch (response.data.state) {
  41. // case 0:
  42. // let state = mk.storage.getStorage('GuideState');
  43. // if (!state) {
  44. // state = '0';
  45. // }
  46. // gData.guideToWxData.guideState = parseInt(state);
  47. // break;
  48. // case 1:
  49. // gData.guideToWxData.guideState = GuideState.canGetMoney;
  50. // let stateN = mk.storage.getStorage('canGetMoney');
  51. // if (!stateN) {
  52. // mk.storage.setStorage('canGetMoney', 1);
  53. // mk.data.sendDataEvent(DataEventId.guideToWx, "二维码");
  54. // }
  55. // break;
  56. // case 2:
  57. // gData.guideToWxData.guideState = GuideState.gotMoney;
  58. // break;
  59. // }
  60. // await mk.time.WaitForSeconds(0.3);
  61. // this.setState();
  62. this.videoPlayer.node.on("completed", this.onCompleted, this);
  63. if (!mk.guide.isGuiding()) {
  64. this.playVideo();
  65. }
  66. else {
  67. this.checkCloseGuide = true;
  68. }
  69. }
  70. playVideo() {
  71. this.videoPlayer.node.active = true;
  72. mk.audio.setPauseMusic();
  73. this.videoPlayer.play();
  74. }
  75. update() {
  76. if (this.checkCloseGuide) {
  77. if (!mk.guide.isGuiding()) {
  78. this.checkCloseGuide = false;
  79. this.playVideo();
  80. }
  81. }
  82. // if (this.lastTimeSpan != -1) {
  83. // let pass = Date.now() - this.lastTimeSpan;
  84. // mk.console.logSingle('GuideToWx pass ', pass);
  85. // if (pass >= 10000) {
  86. // gData.guideToWxData.guideState = 3;
  87. // mk.storage.setStorage('GuideState', gData.guideToWxData.guideState);
  88. // this.setState();
  89. // }
  90. // this.lastTimeSpan = -1;
  91. // }
  92. }
  93. async setState() {
  94. this.nodeStateArr.forEach(element => {
  95. element.active = true;
  96. });
  97. this.node_target.opacity = 0;
  98. this.node_target.active = true;
  99. let nodeState: cc.Node = null;
  100. let path = '';
  101. switch (gData.guideToWxData.guideState) {
  102. case GuideState.none:
  103. this.fillPer = 0;
  104. path = 'module/guideToWx/texture/addService';
  105. nodeState = this.nodeStateArr[0];
  106. break;
  107. case GuideState.sendApply:
  108. this.fillPer = 0.33;
  109. path = 'module/guideToWx/texture/addService';
  110. nodeState = this.nodeStateArr[1];
  111. break;
  112. case GuideState.waitForPass:
  113. this.fillPer = 0.66;
  114. path = 'module/guideToWx/texture/addService';
  115. nodeState = this.nodeStateArr[2];
  116. break;
  117. case GuideState.canGetMoney:
  118. this.fillPer = 1;
  119. path = 'module/guideToWx/texture/get_' + this.moneyIndex;
  120. nodeState = this.nodeStateArr[3];
  121. break;
  122. case GuideState.gotMoney:
  123. this.fillPer = 1;
  124. path = 'module/guideToWx/texture/getSuccess';
  125. this.node_target.active = false;
  126. this.nodeStateArr[3].active = true;
  127. break;
  128. }
  129. this.sp_getMoney.spriteFrame = await mk.loader.load(path, cc.SpriteFrame);
  130. cc.tween(this.sp_fill)
  131. .to(0.5, { fillRange: this.fillPer })
  132. .start();
  133. if (nodeState) {
  134. this.node_target.x = nodeState.x;
  135. cc.tween(nodeState).delay(0.5)
  136. .to(0.25, { scale: 1.2 })
  137. .to(0.25, { scale: 1 })
  138. .call(() => {
  139. nodeState.active = false;
  140. this.hand.active = true;
  141. })
  142. .start();
  143. }
  144. cc.tween(this.node_target)
  145. .delay(1.5)
  146. .to(0.5, { opacity: 255 })
  147. .start();
  148. }
  149. getIndexByMoney() {
  150. let index = 0;
  151. switch (parseFloat(gData.guideToWxData.money)) {
  152. case 0.3:
  153. index = 0;
  154. break;
  155. case 0.5:
  156. index = 1;
  157. break;
  158. case 0.8:
  159. index = 2;
  160. break;
  161. case 1:
  162. index = 3;
  163. break;
  164. }
  165. return index;
  166. }
  167. async clickService() {
  168. mk.audio.playEffect('button');
  169. JsbSystem.WXLaunchMiniProgram(gData.guideToWxData.ghId, gData.guideToWxData.ghIdPath);
  170. let value = mk.storage.getStorage('addServer')
  171. if (!value) {
  172. mk.storage.setStorage('addServer', 1);
  173. mk.data.sendDataEvent(DataEventId.guideToWx, `添加客服`);
  174. mk.data.sendXYEvent('addService', '添加客服');
  175. }
  176. return
  177. if (gData.guideToWxData.guideState == GuideState.none || gData.guideToWxData.guideState == GuideState.sendApply
  178. || gData.guideToWxData.guideState == GuideState.waitForPass) {
  179. this.lastTimeSpan = Date.now();
  180. mk.console.logSingle('GuideToWx lastTimeSpan ', this.lastTimeSpan);
  181. JsbSystem.WXLaunchMiniProgram(gData.guideToWxData.ghId, gData.guideToWxData.ghIdPath);
  182. let value = mk.storage.getStorage('addServer')
  183. if (!value) {
  184. mk.storage.setStorage('addServer', 1);
  185. mk.data.sendDataEvent(DataEventId.guideToWx, `添加客服`);
  186. mk.data.sendXYEvent('addService', '添加客服');
  187. }
  188. }
  189. else if (gData.guideToWxData.guideState == GuideState.canGetMoney) {
  190. let response = await mk.http.sendData('customerServiceCash', {});
  191. mk.console.logSingle('GuideToWx customerServiceCash ', response);
  192. if (response.errcode != 0) {
  193. if (response.data.count) {
  194. gData.tipPanelData.openCashFailTip(response.data.count);
  195. }
  196. else {
  197. mk.tip.pop('提现排队中,多看视频优先提现');
  198. }
  199. return;
  200. }
  201. mk.data.sendDataEvent(DataEventId.guideToWx, `领取${gData.guideToWxData.money}元`);
  202. gData.receiptNotice.receip_rmb = parseFloat(gData.guideToWxData.money);
  203. mk.ui.openPanel('module/receiptNotice/receiptNotice');
  204. gData.guideToWxData.guideState = GuideState.gotMoney;
  205. this.setState();
  206. }
  207. else if (gData.guideToWxData.guideState == GuideState.gotMoney) {
  208. mk.tip.pop('您已经领取成功!', 1);
  209. }
  210. }
  211. clickClose() {
  212. mk.audio.playEffect('button');
  213. mk.ui.closePanel(this.node.name);
  214. }
  215. onDisable() {
  216. mk.audio.setResumeMusic();
  217. this.videoPlayer.node.off("completed", this.onCompleted, this);
  218. }
  219. onCompleted() {
  220. this.videoPlayer.play();
  221. }
  222. }