SignMediator.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { _decorator, Component, Node, JsonAsset, find, LabelComponent } from 'cc';
  2. import { GUIManager } from '../../../engines/gui/GUIManager';
  3. import { GUIMediator } from '../../../engines/gui/GUIMediator';
  4. import { DataModelEventType } from '../../../engines/models/DataModelEventType';
  5. import { NoticeManager } from '../../../engines/notices/NoticeManager';
  6. import StringUtils from '../../../engines/utils/StringUtils';
  7. import { PlatformManager } from '../../../Platform/PlatformManager';
  8. import GameConfigManager from '../../models/GameConfigManager';
  9. import { GameModel } from '../../models/GameModel';
  10. import { GamePropertys } from '../../models/GamePropertys';
  11. import { UIConst } from '../UIConst';
  12. import { DayItemScript } from './DayItemScript';
  13. const { ccclass, property } = _decorator;
  14. @ccclass('SignMediator')
  15. export class SignMediator extends GUIMediator {
  16. @property({
  17. type: LabelComponent
  18. })
  19. glodLabel: LabelComponent = null;
  20. @property({
  21. type: LabelComponent
  22. })
  23. glodLabel1: LabelComponent = null;
  24. @property({
  25. type: LabelComponent
  26. })
  27. diamondLabel: LabelComponent = null;
  28. @property({
  29. type:Node
  30. })
  31. dayListNode:Node=null;
  32. OnShow(data?:any):void{
  33. this.data=data;
  34. this.RefreshGlod();
  35. this.RefreshDiamond();
  36. this.RefreshView();
  37. this.AddEvent();
  38. }
  39. OnHide():void{
  40. this.RemoveEvent();
  41. }
  42. private AddEvent():void{
  43. GameModel.single.AddEvent(DataModelEventType.PROPERTY_CHANGED,this,this.GameModelPropertyChanged,0);
  44. }
  45. private RemoveEvent():void{
  46. GameModel.single.RemoveEvent(DataModelEventType.PROPERTY_CHANGED,this,this.GameModelPropertyChanged);
  47. }
  48. /**
  49. * 属性改变
  50. */
  51. private GameModelPropertyChanged(key:string):void{
  52. switch (key) {
  53. case GamePropertys.signGetRecord:
  54. this.CallNextFrame(this.RefreshView.bind(this));
  55. break;
  56. case GamePropertys.gold:
  57. this.CallNextFrame(this.RefreshGlod.bind(this));
  58. break;
  59. case GamePropertys.diamond:
  60. this.CallNextFrame(this.RefreshDiamond.bind(this));
  61. break;
  62. }
  63. }
  64. private RefreshGlod(): void {
  65. if (this.glodLabel != null) {
  66. this.glodLabel.string = StringUtils.numberUtilsEn(GameModel.single.gold);
  67. }
  68. this.glodLabel1.string = StringUtils.numberUtilsEn(GameModel.single.fullEarnings) + "/秒";
  69. }
  70. private RefreshDiamond(): void {
  71. if (this.diamondLabel != null) {
  72. this.diamondLabel.string = GameModel.single.diamond.toString();
  73. }
  74. }
  75. private RefreshView():void{
  76. let jsonAsset:JsonAsset=GameConfigManager.GetConfig("Sign");
  77. let json:any=jsonAsset.json;
  78. let config:any[]=json;
  79. let itemConfig:any;
  80. let itemScript:DayItemScript;
  81. let itemNode:Node;
  82. for (let index = 0; index < config.length; index++) {
  83. itemConfig=config[index];
  84. itemNode=find("Day"+(index+1),this.dayListNode);
  85. itemScript=itemNode.getComponent(DayItemScript);
  86. itemScript.UpdateItemRender(itemConfig);
  87. }
  88. }
  89. GetAward():void{
  90. if(GameModel.single.GetSignAwardIndex()<0){
  91. NoticeManager.ShowPrompt("没有可领取的奖励!");
  92. return;
  93. }
  94. PlatformManager.showRewardedVideo(()=>{
  95. GameModel.single.AutoSignAward();
  96. },()=>{
  97. NoticeManager.ShowPrompt("看视频失败");
  98. });
  99. }
  100. CloseButtonClickHandler():void{
  101. GUIManager.single.Show(UIConst.PREPARE_UI);
  102. this.HideSelf();
  103. }
  104. }