StartLayer.ts 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. import { find, Node, sp, _decorator } from 'cc';
  2. import { BaseLayer } from '../../common/BaseLayer';
  3. import { cocosUtil } from '../../utils/cocosUtil';
  4. import { constants } from '../data/constants';
  5. import { localText } from '../data/localText';
  6. import { msgac } from '../data/msgac';
  7. import { audioManager } from '../manager/audioManager';
  8. import { levelManager } from '../manager/levelManager';
  9. import { sdkManager } from '../manager/sdkManager';
  10. import { playerModel } from '../model/playerModel';
  11. import { FlutterEffect } from './effect/FlutterEffect';
  12. const { ccclass, property } = _decorator;
  13. @ccclass('StartLayer')
  14. export class StartLayer extends BaseLayer {
  15. coinNode: Node;
  16. levelNode: Node;
  17. itemList: Node;
  18. bossEyeNode: Node;
  19. roleBodySkeleon: sp.Skeleton;
  20. turnTableNode: Node;
  21. turnTableShine: Node;
  22. startTextHint: Node;
  23. btnLevelEsp: Node;
  24. btnSkip: Node;
  25. audioCloseNode: Node;
  26. audioOpenNode: Node;
  27. onLoad() {
  28. super.onLoad();
  29. this.coinNode = this.getNodeByPath("coinLayer/num");
  30. this.levelNode = this.getNodeByPath("level/level");
  31. this.audioCloseNode = this.getNodeByPath("btnAudio/close");
  32. this.audioOpenNode = this.getNodeByPath("btnAudio/open");
  33. this.roleBodySkeleon = this.getNodeByPath("tribe/body").getComponent(sp.Skeleton);
  34. this.turnTableNode = this.getNodeByPath("btns/btnTurnTable/turnTable");
  35. this.turnTableShine = this.getNodeByPath("btns/btnTurnTable/bg");
  36. this.itemList = this.getNodeByPath("level/itemList");
  37. let chs = this.itemList.children;
  38. this.bossEyeNode = find("eye", chs[chs.length - 1]);
  39. this.getNodeByPath("cloundLayer").addComponent(FlutterEffect);
  40. this.startTextHint = this.getNodeByPath("gameStart");
  41. this.btnLevelEsp = this.getNodeByPath("btnLevelEsp");
  42. this.btnSkip = this.getNodeByPath("btnSkip");
  43. this.initUI();
  44. if (this.obj && this.obj.openLevelEspSelectLayer) {
  45. this.openLayer(constants.layers.LevelEspSelectLayer);
  46. }
  47. audioManager.instance.playMusic(constants.audioNames.bgm);
  48. sdkManager.instance.showBannerAd();
  49. sdkManager.instance.showCustomAdCommon();
  50. sdkManager.instance.onStartLayerShow();
  51. sdkManager.instance.sendEvent("进入游戏主界面");
  52. }
  53. start() {
  54. this.scheduleOnce(() => {
  55. let coinLayer = this.getNodeByPath("coinLayer");
  56. playerModel.instance.coinPosEnd = cocosUtil.convertToWorldSpace(coinLayer);
  57. });
  58. }
  59. onEnable() {
  60. this.addEventArr([
  61. msgac.openLevelLayer,
  62. msgac.coinChange,
  63. ]);
  64. }
  65. onDisable() {
  66. this.removeEventArr([
  67. msgac.openLevelLayer,
  68. msgac.coinChange,
  69. ]);
  70. }
  71. initUI() {
  72. this.initLocaltext();
  73. this.initEffect();
  74. this.refreshCoinLayer();
  75. this.refreshBtnAudio();
  76. this.refreshRoleBodyLayer();
  77. let level = playerModel.instance.getLevel();
  78. this.setString(this.levelNode, level);
  79. level = level % 10;
  80. if (level == 0) {
  81. level = 10;
  82. }
  83. let chs = this.itemList.children;
  84. for (let i = 0, len = chs.length; i < len; i++) {
  85. let tmp = i + 1;
  86. if (tmp == 10) {
  87. continue;
  88. }
  89. let node = chs[i];
  90. let noNode = find("no", node);
  91. let hasNode = find("has", node);
  92. let currentNode = find("current", node);
  93. noNode.active = false;
  94. hasNode.active = false;
  95. currentNode.active = false;
  96. if (level > tmp) {
  97. hasNode.active = true;
  98. } else if (level == tmp) {
  99. currentNode.active = true;
  100. } else {
  101. noNode.active = true;
  102. }
  103. }
  104. }
  105. refreshRoleBodyLayer() {
  106. let skinName = levelManager.instance.getSkinName(playerModel.instance.getEquipWeaponId(), playerModel.instance.getEquipDressId());
  107. this.roleBodySkeleon.setSkin(skinName);
  108. }
  109. initLocaltext() {
  110. this.setString(this.startTextHint, localText.textObj.clickGameStart);
  111. }
  112. initEffect() {
  113. cocosUtil.tweenScaleBreath(this.startTextHint);
  114. cocosUtil.tweenShake(this.btnLevelEsp);
  115. cocosUtil.tweenScaleBreath(this.btnSkip);
  116. cocosUtil.tweenScaleBreath(this.turnTableShine, 0.3);
  117. cocosUtil.tweenRotate(this.turnTableNode);
  118. cocosUtil.tweenBlink(this.bossEyeNode);
  119. }
  120. refreshBtnAudio() {
  121. if (audioManager.instance.getMusiceVolume() > 0) {
  122. this.audioCloseNode.active = false;
  123. this.audioOpenNode.active = true;
  124. } else {
  125. this.audioCloseNode.active = true;
  126. this.audioOpenNode.active = false;
  127. }
  128. }
  129. refreshCoinLayer() {
  130. this.setString(this.coinNode, playerModel.instance.getCoin());
  131. }
  132. openLevelLayerRet(data: object) {
  133. this.openLayer(constants.layers.LevelLayer, data);
  134. this.closeLayer();
  135. }
  136. coinChangeRet(data: object) {
  137. this.refreshCoinLayer();
  138. };
  139. process_event(event: any) {
  140. let ac = event.ac;
  141. let data = event.data;
  142. switch (ac) {
  143. case msgac.coinChange:
  144. this.coinChangeRet(data);
  145. break;
  146. case msgac.openLevelLayer:
  147. this.openLevelLayerRet(data);
  148. break;
  149. default:
  150. break;
  151. }
  152. }
  153. onButtonClick(node: Node, name: string) {
  154. switch (name) {
  155. case "btnCoinAdd":
  156. this.onClickBtnCoinAdd(node);
  157. break;
  158. case "btnSkin":
  159. this.onClickBtnSkin(node);
  160. break;
  161. case "btnLevelEsp":
  162. this.onClickBtnLevelEsp(node);
  163. break;
  164. case "btnTurnTable":
  165. this.onClickBtnTurnTable(node);
  166. break;
  167. case "btnAudio":
  168. this.onClickBtnAudio(node);
  169. break;
  170. case "bg":
  171. this.onClickBg(node);
  172. break;
  173. default:
  174. break;
  175. }
  176. }
  177. onClickBtnCoinAdd(node: Node) {
  178. this.openLayer(constants.layers.AdCoinLayer);
  179. }
  180. onClickBtnSkin(node: Node) {
  181. this.openLayer(constants.layers.SkinLayer);
  182. }
  183. onClickBtnLevelEsp(node: Node) {
  184. this.openLayer(constants.layers.LevelEspSelectLayer, null);
  185. }
  186. onClickBtnTurnTable(node: Node) {
  187. this.openLayer(constants.layers.TurnTableLayer);
  188. }
  189. onClickBtnAudio(node: Node) {
  190. audioManager.instance.switchIsMute();
  191. this.refreshBtnAudio();
  192. }
  193. onClickBg(node: Node) {
  194. let obj: any = {};
  195. obj.level = playerModel.instance.getLevel();
  196. this.openLayer(constants.layers.LevelLayer, obj);
  197. this.closeLayer();
  198. sdkManager.instance.sendEvent("开始游戏");
  199. }
  200. }