HallUI.ts 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. import { _decorator, tween, v3, EditBox, Node, Vec3, Tween, Quat } from 'cc';
  2. import BasePanel from '../core/component/BasePanel';
  3. import { audioMgr } from '../core/manager/AudioManager';
  4. import Data from '../core/manager/Data';
  5. import WindowManager from '../core/manager/WindowManager';
  6. import MsgHints from '../core/utils/MsgHints';
  7. import Utils from '../core/utils/Utils';
  8. import { BoxLayer } from '../gameui/BoxLayer';
  9. import { GameConst, BOX_TYPE } from '../core/common/GameConst';
  10. import i18n from '../core/i18n/runtime-scripts/LanguageData';
  11. import { autoBind } from '../core/extend/AutoBind';
  12. const { ccclass, property } = _decorator;
  13. @ccclass('HallUI')
  14. export class HallUI extends BasePanel {
  15. @autoBind(EditBox)
  16. public editBox: EditBox = null!;
  17. @autoBind
  18. public chestLevel0: Node = null!;
  19. @autoBind
  20. public chestLevel1: Node = null!;
  21. onLoad(): void {
  22. super.onLoad();
  23. this.shake(this.chestLevel0);
  24. this.shake(this.chestLevel1);
  25. }
  26. /**
  27. * 小幅度旋转晃动节点(轻微摇摆效果)
  28. * @param n 要晃动的节点
  29. * @param intensity 晃动强度(默认1,范围0.1-3)
  30. */
  31. public shake(n:Node,intensity: number = 1){
  32. Tween.stopAllByTarget(n);
  33. const originalRotation = n.rotation.clone();
  34. //计算旋转幅度(控制在3度以内的小幅度)
  35. const shakeAngle = 3 * Math.min(Math.max(intensity, 0.1), 3)
  36. //创建旋转四元数
  37. const rightRot = new Quat();
  38. const leftRot = new Quat();
  39. Quat.fromEuler(rightRot, 0, 0, shakeAngle);
  40. Quat.fromEuler(leftRot, 0, 0, -shakeAngle);;
  41. tween(n)
  42. .delay(1.2)
  43. .repeat(50,
  44. tween()
  45. .to(0.15, { rotation: rightRot }, { easing: 'sineInOut' }) // 向右微倾
  46. .to(0.15, { rotation: leftRot }, { easing: 'sineInOut' }) // 向左微倾
  47. .to(0.15, { rotation: originalRotation }, { easing: 'sineInOut' }) // 回正
  48. )
  49. .call(() => {
  50. n.rotation = originalRotation;
  51. })
  52. .start();
  53. }
  54. onBtnClicked(event: any, customEventData: any) {
  55. audioMgr.playOneShot(GameConst.audios.btnclick);
  56. var btnName = event.target.name;
  57. switch (btnName) {
  58. case "btn_setting":
  59. // WindowManager.ins.open("NewPackOpenedLayer");
  60. WindowManager.ins.open("SettingLayer")
  61. break;
  62. case "btn_play":
  63. //获取输入的内容
  64. if(GameConst.isDebug){
  65. let str: string = this.editBox.string;
  66. if(!Utils.isNull(str)){
  67. const level: number = parseInt(str);
  68. Data.user.lv = level;
  69. }
  70. }
  71. WindowManager.ins.open("LevelLayer");
  72. /*platformSystem.platform.showRewardVideo((b) => {
  73. WindowManager.ins.open("LevelLayer");
  74. })*/
  75. break;
  76. case "btn_buy_life":
  77. if (Data.user.life >= GameConst.MAX_LIFE) {
  78. MsgHints.show(i18n("main.体力已满"))
  79. return;
  80. }
  81. WindowManager.ins.open("BuyLifeLayer")
  82. break;
  83. case "btn_buy_coin":
  84. WindowManager.ins.open("BuyCoinLayer");
  85. break;
  86. case "reward0":
  87. case "full0":
  88. let info0 = Data.user.hasLvBox();
  89. if(!info0){
  90. MsgHints.show(i18n(`main.条件不足`));
  91. return;
  92. }
  93. WindowManager.ins.open("BoxLayer").then((com: BoxLayer) => {
  94. com?.setInfo(BOX_TYPE.LEVEL, GameConst.getLvBoxReward(Math.floor(Data.user.lv / GameConst.LvBox_Reward)))
  95. });
  96. break;
  97. case "reward1":
  98. case "full1":
  99. let info1 = Data.user.hasStarBox();
  100. if(!info1){
  101. MsgHints.show(i18n(`main.条件不足`));
  102. return;
  103. }
  104. WindowManager.ins.open("BoxLayer").then((com: BoxLayer) => {
  105. com?.setInfo(BOX_TYPE.STAR, GameConst.getStarBoxReward(Math.floor(Data.user.lv / GameConst.Start_Progress)))
  106. });
  107. break;
  108. }
  109. }
  110. start() {
  111. if(!GameConst.isDebug){
  112. this.editBox.node.active = false;
  113. }
  114. this.SetText("level_lable", i18n("main.LV:%{value}", { value: Data.user.lv}));
  115. this.SetProgressBar("probar_lv", 0.1);
  116. let btn_play = this.GetNode("btn_play")
  117. tween(btn_play).sequence(tween(btn_play).to(1, { scale: v3(1.05, 1.05, 1.05) }), tween(btn_play).to(1, { scale: v3(1, 1, 1) })).repeatForever().start()
  118. }
  119. update() {
  120. if (Data.user.life >= GameConst.MAX_LIFE) {
  121. this.SetText("lbl_life_time", i18n("main.已满"))
  122. }else {
  123. if (Data.user.life_cost_time == 0) {
  124. Data.user.life_cost_time = Date.now();
  125. }
  126. let nLeft = (Date.now() - Data.user.life_cost_time) / 1000;
  127. let addLife = Math.floor(nLeft / 60 / GameConst.MAX_LIFE_RECOVERY_TIME);
  128. if (addLife > 0)
  129. Data.user.life += addLife;
  130. nLeft -= addLife * GameConst.MAX_LIFE_RECOVERY_TIME * 60;
  131. this.SetText("lbl_life_time", Utils.getTimeStrByS(GameConst.MAX_LIFE_RECOVERY_TIME * 60 - nLeft))
  132. }
  133. this.SetText("lbl_life", Data.user.life + "")
  134. this.SetText("lbl_coin", Data.user.coin + "")
  135. this.SetText("lbl_lv", Data.user.lv + "")
  136. this.SetText("lbl_lv_center", Data.user.lv + "")
  137. let info = Data.user.hasLvBox();
  138. this.GetGameObject("full0").active = info
  139. let lvmin = Data.user.lv % 10;
  140. this.SetText("lbl_pro_lv", lvmin + "/10");
  141. this.SetProgressBar("lbl_pro_star", lvmin / 10);
  142. this.SetProgressBar("probar_lv_center", lvmin / 10);
  143. this.SetProgressBar("probar_lv", lvmin / 10);
  144. info = Data.user.hasStarBox();
  145. if (info) {
  146. this.SetText("probar_star", "满");
  147. this.SetProgressBar("probar_star", 1);
  148. this.GetGameObject("full1").active = true;
  149. }else {
  150. let starmin = Data.user.star % GameConst.Start_Progress;
  151. this.GetGameObject("full1").active = false;
  152. this.SetText("lbl_pro_star", starmin + `/${GameConst.Start_Progress}`);
  153. this.SetProgressBar("probar_star", starmin / GameConst.Start_Progress);
  154. }
  155. }
  156. }