BattleUI.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { _decorator, Component, find, Label, Node, NodeEventType } from 'cc';
  2. import { UserManager } from './Manager/UserMgr';
  3. import { GameUtil } from './GameUtil';
  4. import { tgxUIMgr } from '../../core_tgx/tgx';
  5. import { UI_BattleGambit } from '../../scripts/UIDef';
  6. import { EventDispatcher } from '../../core_tgx/easy_ui_framework/EventDispatcher';
  7. import { GameEvent } from './Enum/GameEvent';
  8. import { GlobalConfig } from '../../start/Config/GlobalConfig';
  9. import { AdvertMgr } from '../../core_tgx/base/ad/AdvertMgr';
  10. import { LevelManager } from './Manager/LevelMgr';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('BattleUI')
  13. export class BattleUI extends Component {
  14. @property(Node)
  15. public renderAd: Node = null;
  16. @property(Label)
  17. public lbRenderFreeCount: Label = null;
  18. @property(Node)
  19. public radarAd: Node = null;
  20. @property(Label)
  21. public lbRadarFreeCount: Label = null;
  22. protected onLoad(): void {
  23. this.registerListener();
  24. }
  25. protected onDestroy(): void {
  26. this.unregisterListener();
  27. }
  28. start() {
  29. this.updateBtnsCountUI();
  30. }
  31. protected onEnable(): void {
  32. this.resetRemainPos();
  33. }
  34. private registerListener() {
  35. EventDispatcher.instance.on(GameEvent.EVENT_REFRESH_PLAYER_INFO,this.updateBtnsCountUI,this);
  36. EventDispatcher.instance.on(GameEvent.EVENT_CAMERA_SPLIT,this.startCamerSplit,this);
  37. const btnRender = find('Canvas/GameUI/BattleUI/BottomBtns/BtnRender')!;
  38. const btnProbe = find('Canvas/GameUI/BattleUI/BottomBtns/BtnProbe')!;
  39. btnRender.on(NodeEventType.TOUCH_END, () => this.onScreenShot(), this);
  40. btnProbe.on(NodeEventType.TOUCH_END, () => this.onRadar(), this);
  41. }
  42. private resetRemainPos(){
  43. const {level} = LevelManager.instance.levelModel;
  44. const remain = this.node.getChildByName('Remain');
  45. remain.setPosition(-50,590,0); //默认居中
  46. if(level > 1){
  47. console.log(`当前等级:${level}`)
  48. remain.setPosition(-250,590,0);
  49. }
  50. }
  51. private updateBtnsCountUI(){
  52. const {radarFreeCount,freeScreenShotCount} = UserManager.instance.userModel;
  53. this.lbRenderFreeCount.string = `${freeScreenShotCount}`;
  54. this.lbRadarFreeCount.string = `${radarFreeCount}`;
  55. this.renderAd.active = false; //默认隐藏
  56. this.radarAd.active = false; //默认隐藏
  57. if(radarFreeCount <= 0){
  58. this.lbRadarFreeCount.string = '';
  59. this.radarAd.active = true;
  60. }
  61. if(freeScreenShotCount <= 0){
  62. this.lbRenderFreeCount.string = '';
  63. this.renderAd.active = true;
  64. }
  65. }
  66. private onScreenShot(){
  67. this.useAbility(
  68. UserManager.instance.userModel.freeScreenShotCount,
  69. (count) => UserManager.instance.reduceFreeScreenShotCount(count),
  70. GameEvent.EVENT_CAMERA_SCREENSHOT
  71. );
  72. }
  73. private onRadar(){
  74. this.useAbility(
  75. UserManager.instance.userModel.radarFreeCount,
  76. (count) => UserManager.instance.reduceRadarFreeCount(count),
  77. GameEvent.EVENT_CAMERA_SCREENSHOT_RADAR
  78. );
  79. }
  80. private useAbility(freeCount: number,reduceFn: (count: number) => void,eventName: string) {
  81. if(freeCount <= 0) {
  82. if (!GlobalConfig.isDebug) {
  83. AdvertMgr.instance.showReawardVideo(() => {
  84. EventDispatcher.instance.emit(eventName);
  85. });
  86. } else {
  87. EventDispatcher.instance.emit(eventName);
  88. }
  89. } else {
  90. reduceFn(1);
  91. EventDispatcher.instance.emit(eventName);
  92. }
  93. }
  94. private startCamerSplit() {
  95. this.node.active = false;
  96. }
  97. private unregisterListener() {
  98. EventDispatcher.instance.off(GameEvent.EVENT_REFRESH_PLAYER_INFO,this.updateBtnsCountUI,this);
  99. }
  100. }