LevelSuccessLayer.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { Animation, find, Node, _decorator } from 'cc';
  2. import { BaseLayer } from '../../common/BaseLayer';
  3. import { cocosUtil } from '../../utils/cocosUtil';
  4. import { constants } from '../data/constants';
  5. import { msgac } from '../data/msgac';
  6. import { audioManager } from '../manager/audioManager';
  7. import { eventManager } from '../manager/eventManager';
  8. import { levelManager } from '../manager/levelManager';
  9. import { sdkManager } from '../manager/sdkManager';
  10. import { playerModel } from '../model/playerModel';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('LevelSuccessLayer')
  13. export class LevelSuccessLayer extends BaseLayer {
  14. coinNode: Node;
  15. btnAdGet: Node;
  16. adCoinNode: Node;
  17. coin: number;
  18. arrowAnimation: Animation;
  19. onLoad() {
  20. super.onLoad();
  21. this.screenAdapterBG(this.getNodeByPath("info"));
  22. this.coinNode = this.getNodeByPath("info/coin");
  23. this.btnAdGet = this.getNodeByPath("btns/btnAdGet");
  24. this.adCoinNode = find("num", this.btnAdGet);
  25. this.arrowAnimation = this.getNodeByPath("barLayer/arrow").getComponent(Animation);
  26. this.coin = levelManager.instance.getLevelSuccessCoin();
  27. this.initUI();
  28. levelManager.instance.levelSuccess();
  29. audioManager.instance.playEffect(constants.audioNames.win);
  30. sdkManager.instance.addLevelCount();
  31. sdkManager.instance.sendEventLevelEnd(true);
  32. }
  33. initUI() {
  34. this.initLocaltext();
  35. this.initEffect();
  36. this.setString(this.coinNode, "+" + this.coin);
  37. }
  38. initEffect() {
  39. cocosUtil.tweenScaleBreath(this.btnAdGet);
  40. }
  41. initLocaltext() {
  42. }
  43. onButtonClick(node: Node, name: string) {
  44. switch (name) {
  45. case "btnAdGet":
  46. this.onClickBtnAdGet(node);
  47. break;
  48. case "btnNext":
  49. this.onClickBtnNext(node);
  50. break;
  51. default:
  52. break;
  53. }
  54. }
  55. onClickBtnNext(node: Node) {
  56. playerModel.instance.addCoin(this.coin);
  57. this.openCoinGetEffectLayer(this.coinNode);
  58. this.closeLayer();
  59. // if (levelManager.instance.isLevelEsp()) {
  60. // // 特殊关卡,回到开始页面,并且主动弹出特殊关卡选择界面
  61. // eventManager.instance.send(msgac.levelEspSuccess);
  62. // } else {
  63. // // 自动下一关
  64. // eventManager.instance.send(msgac.levelNext);
  65. // }
  66. // 运营需求:改成关闭关卡界面,并回到开始页面
  67. eventManager.instance.send(msgac.LevelLayerClose);
  68. let obj: any = {};
  69. obj.name = constants.layers.StartLayer.name;
  70. eventManager.instance.send(msgac.openLayer, obj);
  71. }
  72. // 处理广告多倍奖励条
  73. adSuccess() {
  74. this.btnAdGet.active = false;
  75. let scale = this.getAwardScale();
  76. this.coin *= scale;
  77. this.initUI();
  78. }
  79. getAwardScale(): number {
  80. let scale = 1;
  81. let posX = this.arrowAnimation.node.getPosition().x;
  82. if (posX >= -194 && posX < -130) {
  83. scale = 2;
  84. } else if (posX >= -130 && posX < -70) {
  85. scale = 4;
  86. } else if (posX >= -70 && posX < 52) {
  87. scale = 2;
  88. } else if (posX >= 52 && posX < 108) {
  89. scale = 4;
  90. } else if (posX >= 108 && posX < 194) {
  91. scale = 3;
  92. }
  93. return scale;
  94. }
  95. onClickBtnAdGet(node: Node) {
  96. this.arrowAnimation.pause();
  97. sdkManager.instance.sendEvent("观看激励视频-多倍奖励");
  98. sdkManager.instance.openAd((st: number) => {
  99. if (st == 1) {
  100. this.adSuccess();
  101. sdkManager.instance.sendEvent("观看完激励视频-多倍奖励");
  102. } else {
  103. this.arrowAnimation.resume();
  104. }
  105. });
  106. }
  107. update(dt: number) {
  108. if (this.btnAdGet.active) {
  109. let scale = this.getAwardScale();
  110. this.setString(this.adCoinNode, "+" + (this.coin * scale));
  111. }
  112. }
  113. }