UIWeaponLevelPanel.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. import { utils } from "../../common-plugin/Scripts/Utils";
  2. import { cocosz } from "../Framework/CocosZ";
  3. import { PanelName } from "../Framework/Constant";
  4. import Msg from "../Framework/Msg";
  5. import UIPage from "../Framework/UIPage";
  6. import GameDate from "../Game/gameDate";
  7. import Weapon from "../Game/weapon";
  8. // @ts-ignore
  9. const i18n = require('LanguageData');
  10. const { ccclass } = cc._decorator;
  11. @ccclass
  12. export default class UIWeaponLevelPanel extends UIPage {
  13. private _panel: cc.Node = null;
  14. weapon: cc.Sprite = null;
  15. weaponId: number = 0;
  16. isRange: boolean = true;
  17. constructor() {
  18. super(PanelName.UIWeaponLevelPanel);
  19. this.isValid() && this.onLoad();
  20. }
  21. protected onLoad() {
  22. this._panel = this._page.getChildByName("Panel");
  23. this.weapon = this._panel.getChildByName("weapon").getComponent(cc.Sprite);
  24. let btnNames: string[] = ["BtnPass", "BtnVideo"];
  25. for (let i = 0; i < btnNames.length; i++) {
  26. let btn: cc.Node = cc.find(btnNames[i], this._panel);
  27. if (btn) {
  28. btn.on(cc.Node.EventType.TOUCH_END, this._onBtnClickedHandler, this);
  29. }
  30. }
  31. }
  32. protected onOpen() {
  33. utils.SendEvent("页面-武器升级");
  34. // 暂停游戏逻辑
  35. cocosz.pauseCount++;
  36. let weaponName = "";
  37. let level = 0;
  38. let rangeLevel = cocosz.dataMgr.getGunInfo(cocosz.dataMgr.CurRange).Level;
  39. let meleeLevel = cocosz.dataMgr.getGunInfo(cocosz.dataMgr.CurMelee).Level;
  40. if (rangeLevel < 3) {
  41. // 显示远程
  42. this.isRange = true;
  43. this.weaponId = cocosz.dataMgr.CurRange;
  44. weaponName = Weapon.WeaponName[this.weaponId];
  45. level = rangeLevel;
  46. this.weapon.spriteFrame = cocosz.resMgr.getRes("w_" + weaponName, cc.SpriteFrame);
  47. } else if (meleeLevel < 3) {
  48. // 显示近程
  49. this.isRange = false;
  50. this.weaponId = cocosz.dataMgr.CurMelee;
  51. weaponName = Weapon.WeaponName[this.weaponId]
  52. level = meleeLevel;
  53. this.weapon.spriteFrame = cocosz.resMgr.getRes("w_" + weaponName, cc.SpriteFrame);
  54. } else {
  55. // 直接关闭
  56. cocosz.uiMgr.closePanel(PanelName.UIWeaponLevelPanel);
  57. return;
  58. }
  59. // 显示数据
  60. let info = GameDate.Weapon[weaponName]
  61. let txt1 = cc.find("kuang/txt1", this._panel);
  62. if (txt1) {
  63. let richText = txt1.getComponent(cc.RichText);
  64. if (richText) {
  65. let curNum = info.atk[level];
  66. let nextNum = info.atk[3];
  67. let difNum = nextNum - curNum;
  68. richText.string = `<outline color=black width=2><color=white>${i18n.t("try.gjl") + ": " + curNum}</c><color=green}>${difNum > 0 ? (" +" + difNum) : ""}</c></outline>`;
  69. }
  70. }
  71. let txt2 = cc.find("kuang/txt2", this._panel);
  72. if (txt2) {
  73. let richText = txt2.getComponent(cc.RichText);
  74. if (richText) {
  75. let curNum = 1 / info.atkSpeed[level];
  76. let nextNum = 1 / info.atkSpeed[3];
  77. let difNum = nextNum - curNum;
  78. richText.string = `<outline color=black width=2><color=white>${i18n.t("try.gjpl") + ": " + curNum}</c><color=green}>${difNum > 0 ? (" +" + difNum) : ""}</c></outline>`;
  79. }
  80. }
  81. let txt3 = cc.find("kuang/txt3", this._panel);
  82. if (txt3) {
  83. let richText = txt3.getComponent(cc.RichText);
  84. if (richText) {
  85. let curNum = info.atkRange;
  86. richText.string = `<outline color=black width=2><color=white>${i18n.t("try.gjfw") + ": " + curNum}</c></outline>`;
  87. }
  88. }
  89. let txt4 = cc.find("kuang/txt4", this._panel);
  90. if (txt4) {
  91. let richText = txt4.getComponent(cc.RichText);
  92. if (richText) {
  93. let curNum = info.bulletTotal[level];
  94. let nextNum = info.bulletTotal[3];
  95. let difNum = nextNum - curNum;
  96. richText.string = `<outline color=black width=2><color=white>${i18n.t("try.dyl") + ": " + (this.isRange ? curNum : "♾")}</c><color=green}>${difNum > 0 ? (" +" + difNum) : ""}</c></outline>`;
  97. }
  98. }
  99. }
  100. protected onClose() {
  101. cocosz.gameMgr.gameStart(cocosz.curLevel);
  102. }
  103. /**
  104. * 所有按钮点击事件
  105. * @param event
  106. * @param data
  107. */
  108. private async _onBtnClickedHandler(event: cc.Event, data: any) {
  109. //播放按钮点击音效
  110. await cocosz.audioMgr.playBtnEffect().catch();
  111. switch (event.target.name) {
  112. case "BtnPass": {
  113. cocosz.uiMgr.closePanel(PanelName.UIWeaponLevelPanel);
  114. break;
  115. }
  116. case "BtnVideo": {
  117. utils.SendEvent("视频-弹窗武器升级-播放")
  118. cocosz.watchAD(() => {
  119. // 视频成功
  120. utils.SendEvent("视频-弹窗武器升级-成功")
  121. let info = cocosz.dataMgr.getGunInfo(this.weaponId);
  122. info.Level = 3;// 升到最高级别
  123. cocosz.dataMgr.setGunInfo(this.weaponId, info);
  124. Msg.Show(i18n.t("msg.sjcg"));//升级成功
  125. cocosz.uiMgr.closePanel(PanelName.UIWeaponLevelPanel);
  126. }, () => {
  127. // 视频失败
  128. utils.SendEvent("视频-弹窗武器升级-失败")
  129. cocosz.uiMgr.closePanel(PanelName.UIWeaponLevelPanel);
  130. })
  131. break;
  132. }
  133. }
  134. }
  135. }