SuccessPanel.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. import { BaseView } from "../../../lightMVC/core/base/BaseView";
  2. import SDK from "../../sdk/SDK";
  3. import gameScene from "../../gameScene";
  4. import { App } from "../../Manager/App";
  5. import { SoundManager } from "../../Manager/SoundManager";
  6. import TipPanel from "../tipPanel/TipPanel";
  7. import TipPanelMediator from "../tipPanel/TipPanelMediator";
  8. import AESUtil from "../../AESUtil"
  9. import ATSDK from "../../AnyThinkAds/ATJSSDK";
  10. import ATRewardedVideoSDK from "../../AnyThinkAds/ATRewardedVideoJSSDK";
  11. import AAJS2 from "../../ATAndroidJS2";
  12. import GlobalManager from '../../GlobalManager';
  13. import ATInterstitialSDK from "../../AnyThinkAds/ATInterstitialJSSDK";
  14. import ATBannerSDK from "../../AnyThinkAds/ATBannerJSSDK";
  15. import { AdType } from '../../ATAndroidJS2';
  16. const { ccclass, property } = cc._decorator;
  17. @ccclass
  18. export default class SuccessPanel extends BaseView {
  19. passTime = 0;
  20. protected onLoad(): void {
  21. console.log('zh:SuccessPanel.ts onload ');
  22. // this.initAdForPageInter(); 这里的插屏有问题,所以改为激励
  23. SDK.Instance.initAdForPage();
  24. }
  25. //add判断插屏 开屏等,需要多次准备
  26. //add判断插屏 开屏等,需要多次准备
  27. initAdForPageInter() {
  28. if (cc.sys.os === cc.sys.OS_ANDROID) {
  29. console.log('zh:successpanel.ts 开始准备AD .....');
  30. let deviceId = AAJS2.getDeviceUserId();
  31. var setting = {};
  32. setting[ATRewardedVideoSDK.userIdKey] = deviceId;
  33. //add判断插屏 开屏等
  34. let pid_inter = AAJS2.getPlacementId2(AdType.Inter);
  35. console.log("zh: pid_inter checkstatus:", ATInterstitialSDK.checkAdStatus(pid_inter));
  36. ATInterstitialSDK.loadInterstitial(pid_inter, setting);
  37. }
  38. }
  39. public drawView(): void {
  40. SDK.Instance.showInterstitial();
  41. App.DataManager.MissionComplete[3]++;
  42. App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.list_missionComplete, App.DataManager.MissionComplete);
  43. this.onLoadAll();
  44. this.NextLevel();
  45. this.BackMain();
  46. this.doubleReward();
  47. }
  48. onLoadAll(){
  49. this.ui.getNode("labelCoin").getComponent(cc.Label).string = App.DataManager.UserCoin + "";
  50. this.ui.getNode("labelDiamond").getComponent(cc.Label).string = App.DataManager.UserDiamond + "";
  51. this.ui.getNode("labelAwardCoin").getComponent(cc.Label).string = gameScene.instance.curLevelWinCoin +"";
  52. App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin;
  53. App.DataManager.UserDiamond += 1;
  54. App.LocalStorageUtil.setNumber(App.LocalStorageUtil.lst_Coin, App.DataManager.UserCoin);
  55. App.LocalStorageUtil.setNumber(App.LocalStorageUtil.lst_UserDiamond, App.DataManager.UserDiamond);
  56. }
  57. /**
  58. * 点击游戏下一关
  59. */
  60. public NextLevel(): void {
  61. let nextBtn = this.ui.getNode("next");
  62. nextBtn.on(cc.Node.EventType.TOUCH_END, () => {
  63. if (cc.sys.os == cc.sys.OS_ANDROID) {
  64. if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
  65. cc.sys.localStorage.setItem('yxAdMark', 'callBack_gotoNextLevel');//看广告用于 xx 标记
  66. GlobalManager.instance.registerMethod('callBack_gotoNextLevel', this.callBack_gotoNextLevel.bind(this));
  67. ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
  68. } else {
  69. console.log('zh:AD 没有OK');
  70. this.callBack_gotoNextLevel();
  71. SDK.Instance.initAdForPage();
  72. }
  73. } else {
  74. this.callBack_gotoNextLevel();
  75. }
  76. //this.showInterAd("callBack_gotoNextLevel",true, () => this.callBack_gotoNextLevel());
  77. // if(App.DataManager.CurrentIntoLevel == 15 && App.DataManager.PassProgress[App.DataManager.CurrentIntoLevel] == 3){
  78. // App.Facade.popView(TipPanelMediator, TipPanel, "恭喜你已通关!", false);
  79. // gameScene.instance.ClickBackMain();
  80. // }
  81. // else{
  82. // gameScene.instance.JumpNextLevel();
  83. // }
  84. }, this);
  85. }
  86. private callBack_gotoNextLevel(){
  87. console.log('zh:callBack_gotoNextLevel 被触发' );
  88. if(App.DataManager.CurrentIntoLevel == 15 && App.DataManager.PassProgress[App.DataManager.CurrentIntoLevel] == 3){
  89. // App.Facade.popView(TipPanelMediator, TipPanel, "恭喜你已通关!", false);
  90. App.Facade.popView(TipPanelMediator, TipPanel, "You're a super chef!", false);
  91. gameScene.instance.ClickBackMain();
  92. }
  93. else{
  94. gameScene.instance.JumpNextLevel();
  95. }
  96. }
  97. BackMain(){
  98. let backMainBtn = this.ui.getNode("main");
  99. backMainBtn.on(cc.Node.EventType.TOUCH_END, () => {
  100. gameScene.instance.ClickBackMain();
  101. }, this);
  102. }
  103. /**
  104. * 点击看视频
  105. */
  106. public doubleReward(): void {
  107. let doubleBtn = this.ui.getNode("btnVideo");
  108. doubleBtn.on(cc.Node.EventType.TOUCH_END, () => {
  109. this.ui.getNode("jiantou").getComponent(cc.Animation).stop();
  110. SoundManager.getInstance().VideoStartStop();
  111. if (cc.sys.os == cc.sys.OS_ANDROID) {
  112. if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
  113. cc.sys.localStorage.setItem('yxAdMark', 'callBackFor_successPanel');//看广告用于 xx 标记
  114. GlobalManager.instance.registerMethod('callBackFor_successPanel', this.callBackFor_successPanel.bind(this));
  115. ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
  116. } else {
  117. console.log('zh:AD 没有OK');
  118. this.callBackFor_successPanel();
  119. SDK.Instance.initAdForPage();
  120. }
  121. } else {
  122. this.callBackFor_successPanel();
  123. }
  124. // SDK.Instance.showRewardVideo(() => {
  125. // if(this.ui.getNode("jiantou").angle >= 42){
  126. // App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 2;
  127. // }
  128. // else if(this.ui.getNode("jiantou").angle >= -34 && this.ui.getNode("jiantou").angle < 42){
  129. // App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 3;
  130. // }
  131. // else if(this.ui.getNode("jiantou").angle >= -69 && this.ui.getNode("jiantou").angle < -34){
  132. // App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 4;
  133. // }
  134. // else if(this.ui.getNode("jiantou").angle < -69){
  135. // App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 5;
  136. // }
  137. // App.LocalStorageUtil.setNumber(App.LocalStorageUtil.lst_Coin, App.DataManager.UserCoin);
  138. // SoundManager.getInstance().VideoEndOpen();
  139. // gameScene.instance.JumpNextLevel();
  140. // }, () => {
  141. // SoundManager.getInstance().VideoEndOpen();
  142. // }, () => {
  143. // SoundManager.getInstance().VideoEndOpen();
  144. // });
  145. }, this);
  146. }
  147. public callBackFor_successPanel(){
  148. console.log('zh:callBackFor_successPanel 被触发' );
  149. if(this.ui.getNode("jiantou").angle >= 42){
  150. App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 2;
  151. }
  152. else if(this.ui.getNode("jiantou").angle >= -34 && this.ui.getNode("jiantou").angle < 42){
  153. App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 3;
  154. }
  155. else if(this.ui.getNode("jiantou").angle >= -69 && this.ui.getNode("jiantou").angle < -34){
  156. App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 4;
  157. }
  158. else if(this.ui.getNode("jiantou").angle < -69){
  159. App.DataManager.UserCoin += gameScene.instance.curLevelWinCoin * 5;
  160. }
  161. App.LocalStorageUtil.setNumber(App.LocalStorageUtil.lst_Coin, App.DataManager.UserCoin);
  162. SoundManager.getInstance().VideoEndOpen();
  163. gameScene.instance.JumpNextLevel();
  164. }
  165. public static path(): string {
  166. return "gameScene/prefabs/SuccessPanel";
  167. }
  168. update(dt){
  169. this.passTime+=dt;
  170. if(this.passTime > 0.1){
  171. this.passTime -= 0.1;
  172. if(this.ui.getNode("jiantou").angle >= 42){
  173. this.ui.getNode("labelVideoCoin").getComponent(cc.Label).string = gameScene.instance.curLevelWinCoin * 2 + "";
  174. }
  175. else if(this.ui.getNode("jiantou").angle >= -34 && this.ui.getNode("jiantou").angle < 42){
  176. this.ui.getNode("labelVideoCoin").getComponent(cc.Label).string = gameScene.instance.curLevelWinCoin * 3 + "";
  177. }
  178. else if(this.ui.getNode("jiantou").angle >= -69 && this.ui.getNode("jiantou").angle < -34){
  179. this.ui.getNode("labelVideoCoin").getComponent(cc.Label).string = gameScene.instance.curLevelWinCoin * 4 + "";
  180. }
  181. else if(this.ui.getNode("jiantou").angle < -69){
  182. this.ui.getNode("labelVideoCoin").getComponent(cc.Label).string = gameScene.instance.curLevelWinCoin * 5 + "";
  183. }
  184. }
  185. }
  186. /**
  187. * 显示插屏广告
  188. *
  189. * @param adMarkForClose 插屏广告关闭后调用那个方法的具体指示标识
  190. * @param checkClose 是否需要判断关闭事件,有的不需要,如果AD占用游戏时间则为true
  191. * @param callback 插屏广告关闭(加载失败\非ANDROID平台)的回调
  192. */
  193. private showInterAd(adMarkForClose: string, checkClose: boolean, callback: () => void) {
  194. if (cc.sys.os === cc.sys.OS_ANDROID) {
  195. if (checkClose) {
  196. cc.sys.localStorage.setItem("adMarkForClose", adMarkForClose);//关闭后,调用哪个方法的标识
  197. }
  198. //add判断插屏 开屏等
  199. let pid_inter = AAJS2.getPlacementId2(AdType.Inter);
  200. let boo = ATInterstitialSDK.hasAdReady(pid_inter);
  201. if (boo) {
  202. // 暂停游戏
  203. cc.director.pause();
  204. console.log('zh:showInterAd AD OK');
  205. ATInterstitialSDK.showAd(pid_inter);
  206. //因为跨脚本,所以使用全局注册函数调用,后来发现切换APP,导致ad close事件失效
  207. if (!checkClose) {//如果不占用游戏时间
  208. this.safeCallback(callback);
  209. }
  210. } else {
  211. console.log('zh:showInterAd AD 没有准备好');
  212. //GlobalManager.getInstance().callMethod('initAdForPageInter');
  213. //this.initAdForPageInter();
  214. this.safeCallback(callback);
  215. }
  216. } else {
  217. this.safeCallback(callback);
  218. }
  219. }
  220. // 辅助方法:安全调用回调函数
  221. private safeCallback(callback?: () => void) {
  222. if (callback) {
  223. callback();
  224. }
  225. }
  226. }