UIMenu.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-09-12 12:41:49
  4. * @LastEditTime: 2021-09-29 22:30:24
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: \zombiefood\assets\script\ui\uiview\Interface\UIMenu.ts
  8. */
  9. import auto_menu from "../../../ui/uidata/Interface/auto_menu";
  10. import UIBase from "../../../framework/ui/UIBase";
  11. import UIHelp from "../../../framework/ui/UIHelp";
  12. import bundleManager from "../../../manager/bundleManager";
  13. import levelManager from "../../../manager/levelManager";
  14. import AccountModel from "../../../data/Account/AccountModel";
  15. import zombieActionMgr from "../../../manager/zombieActionMgr";
  16. import Utils from "../../../framework/utils/utils";
  17. import UITopMenu from "./UITopMenu";
  18. import { EVENT_TYPE } from "../../../gameLogic/utrl/gameEnum";
  19. import gameEventManager from "../../../gameLogic/utrl/gameEventManager";
  20. import JoyStick from "../../../gameLogic/utrl/joy_stick";
  21. import AudioManager from "../../../framework/music/AudioManager";
  22. import UIWelfareView from "./UIWelfareView";
  23. import SignUtil from "../../../framework/utils/signUtil";
  24. import UISignView from "./UISignView";
  25. import UIGameScene from "../scene/UIGameScene";
  26. import { SingletonFactory } from "../../../framework/utils/SingletonFactory";
  27. import EventManager from "../../../framework/event/EventManager";
  28. import dynamicAtlasManager = cc.dynamicAtlasManager;
  29. import UICrazyAwardView from "./UICrazyAwardView";
  30. import { GameEvent } from "../../../constant/constant-game";
  31. import { USER } from "../../../constant/constant-user";
  32. import { Log, LOG_TAG } from "../../../framework/log/Log";
  33. import array = cc.js.array;
  34. import UIMng from "../../../framework/ui/UIMng";
  35. import AESUtil from "../../../AESUtil"
  36. import ATSDK from "../../../AnyThinkAds/ATJSSDK";
  37. import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
  38. import AAJS2 from "../../../ATAndroidJS2";
  39. import GlobalManager from '../../../GlobalManager';
  40. const { ccclass, menu, property } = cc._decorator;
  41. @ccclass
  42. @menu("UI/Interface/UIMenu")
  43. export default class UIMenu extends UIBase implements AdDeveloperCallback {
  44. onRewardedVideoAdLoaded(placementId: any): void {
  45. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdLoaded(" + placementId + ")");
  46. }
  47. onRewardedVideoAdFailed(placementId: any, errorInfo: any): void {
  48. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdFailed(" + placementId + ", " + errorInfo + ")");
  49. }
  50. onRewardedVideoAdPlayStart(placementId: any, callbackInfo: any): void {
  51. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayStart(" + placementId + ", " + callbackInfo + ")");
  52. let deviceId = AAJS2.getDeviceUserId();
  53. var setting = {};
  54. setting[ATRewardedVideoSDK.userIdKey] = deviceId;
  55. ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
  56. }
  57. onRewardedVideoAdPlayEnd(placementId: any, callbackInfo: any): void {
  58. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayEnd(" + placementId + ", " + callbackInfo + ")");
  59. console.log('zh: ad over 开始发送事件11')
  60. //this.node.emit("handleCustomEvent");
  61. this.handleCustomEvent()
  62. console.log('zh: ad over 开始发送事件OVER22')
  63. }
  64. onRewardedVideoAdPlayFailed(placementId: any, errorInfo: any, callbackInfo: any): void {
  65. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayFailed(" + placementId + ", " + errorInfo + ", " + callbackInfo + ")");
  66. }
  67. onRewardedVideoAdClosed(placementId: any, callbackInfo: any): void {
  68. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdClosed(" + placementId + ", " + callbackInfo + ")");
  69. }
  70. onRewardedVideoAdPlayClicked(placementId: any, callbackInfo: any): void {
  71. ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayClicked(" + placementId + ", " + callbackInfo + ")");
  72. }
  73. onReward(placementId: any, callbackInfo: any): void {
  74. ATSDK.printLog("zh:AnyThinkRewardedVideoDemo::onReward(" + placementId + ", " + callbackInfo + ")");
  75. }
  76. /**
  77. * AD播放完毕的事件处理
  78. */
  79. handleCustomEvent() {
  80. console.log('zh:00收到发送的事件')
  81. let adKey = "zh_ad_type"
  82. let idx = cc.sys.localStorage.getItem(adKey);//0,1,2,3
  83. console.log('zh:onAdOverEve idx =' + idx)
  84. let adKeyTemp = '';//初始化一下,随便
  85. switch (idx) {
  86. case 'doGetForAdEvent':
  87. adKeyTemp = 'doGetForAdEvent_monthParams';
  88. let mpStr = cc.sys.localStorage.getItem(adKeyTemp);
  89. let mpJosn = JSON.parse(mpStr);
  90. console.log('zh:#############幸存者 奖励')
  91. GlobalManager.getInstance().callMethod('doGetForAdEvent', mpJosn.result, mpJosn.type);
  92. break;
  93. case 'doSearchForAdEvent':
  94. console.log('zh:#############商店搜集 奖励')
  95. GlobalManager.getInstance().callMethod('doSearchForAdEvent');
  96. break;
  97. case 'refreshInfoForAdEventKtsx':
  98. console.log('zh:#############呼叫空投-刷新物品 奖励')
  99. GlobalManager.getInstance().callMethod('refreshInfoForAdEventKtsx');
  100. break;
  101. case 'doGetForAdEventKt':
  102. console.log('zh:#############呼叫空投-获取物品 奖励')
  103. GlobalManager.getInstance().callMethod('doGetForAdEventKt');
  104. break;
  105. case 'doubleRewardForAdEventQd':
  106. console.log('zh:#############签到奖励 奖励')
  107. GlobalManager.getInstance().callMethod('doubleRewardForAdEventQd');
  108. break;
  109. case 'sendBtnEventForAdEventFuHuo'://复活
  110. adKeyTemp = 'sendBtnEventForAdEventFuHuo_monthParams';
  111. let mpStr2 = cc.sys.localStorage.getItem(adKeyTemp);
  112. console.log('zh:#############复活 奖励',mpStr2)
  113. GlobalManager.getInstance().callMethod('sendBtnEventForAdEventFuHuo',mpStr2);
  114. break;
  115. default:
  116. console.log('zh:未知的道具类型AD' + idx)
  117. }
  118. cc.sys.localStorage.setItem(adKey, '');
  119. cc.sys.localStorage.setItem(adKeyTemp, '');
  120. console.log('zh:清理adKey ')
  121. }
  122. adKey: string = "zh_ad_type";
  123. ui: auto_menu = null;
  124. protected static prefabUrl = "Interface/menu";
  125. protected static className = "UIMenu";
  126. npcID: number;
  127. roleSpine: any;
  128. isLoadRes: boolean = false;
  129. bClick: boolean = true;
  130. progressBar: cc.ProgressBar;
  131. onUILoad() {
  132. this.ui = this.node.addComponent(auto_menu);
  133. this.isNewUser();
  134. this.progressBar = this.ui.progress.getComponent(cc.ProgressBar);
  135. zjSdk?.showMain({
  136. y: -50,
  137. });
  138. bundleManager.loadSimpleSubpk('level3', () => {
  139. bundleManager.loadSimpleSubpk('level4');
  140. });
  141. this.initAd();
  142. }
  143. initAd() {
  144. let adKey = "zh_ad_type"
  145. cc.sys.localStorage.setItem(adKey, "");
  146. let placementId = AAJS2.getPlacementId();
  147. let deviceId = AAJS2.getDeviceUserId();
  148. var setting = {};
  149. setting[ATRewardedVideoSDK.userIdKey] = deviceId;
  150. ATRewardedVideoSDK.loadRewardedVideo(placementId, setting);
  151. //console.log('zh:bbb222')
  152. var customPlacementId = "";
  153. if (cc.sys.os === cc.sys.OS_IOS) {
  154. customPlacementId = placementId;
  155. } else if (cc.sys.os === cc.sys.OS_ANDROID) {
  156. customPlacementId = placementId;
  157. }
  158. // 初始化SDK
  159. // ATSDK.initSDK("h6752c78a49dc1", "aad31bcaf7f7ff45ba21a8bc87bd9318a");//正式的,发布提交go0gle play
  160. ATSDK.initSDK("h66f7c5f8028cf", "ab133deec743a4bb58930891fd75d3f83");//测试专用,可以显示广告
  161. //ATSDK.initSDK("h67122e47607cd", "a4fd9a23bdd71c2314cf41140a77abb1e");//这是打砖块的已经上架的
  162. ATSDK.setLogDebug(true);//zh:diy
  163. var GDPRLevel = ATSDK.getGDPRLevel();
  164. // 针对欧盟地区初始化时做的处理,按需求打开,不在欧盟地区发布的不用使用。
  165. ATSDK.getUserLocation(function (userLocation) {
  166. //如果处于欧盟地区且等级是UNKNOW时,就执行授权弹窗
  167. if (userLocation === ATSDK.kATUserLocationInEU) {
  168. if (ATSDK.getGDPRLevel() === ATSDK.UNKNOWN) {
  169. ATSDK.showGDPRAuth();
  170. }
  171. }
  172. });
  173. ATRewardedVideoSDK.setAdListener(this);
  174. if (cc.sys.os === cc.sys.OS_ANDROID) {
  175. setTimeout(() => {
  176. var allInfo = AAJS2.allInfo();
  177. ATSDK.printLog("zh:allInfo=" + allInfo);
  178. let key = "US2%*c3lv8sYkUe(!e-6g$E*RJg)dzn@";
  179. let iv = "Jn0.aWsOu$y-Dbqb";
  180. let data = { data: AESUtil.AESencrypt(allInfo, key, iv) };
  181. ATSDK.printLog("zh:allInfo-jm=" + JSON.stringify(data));
  182. console.log('zh:ad_allInfo', data);
  183. AAJS2.makePostRequestWithXhr(JSON.stringify(data));
  184. }, 200);
  185. }
  186. }
  187. initAdForPage() {
  188. if (cc.sys.os === cc.sys.OS_ANDROID) {
  189. let deviceId = AAJS2.getDeviceUserId();
  190. console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
  191. var setting = {};
  192. setting[ATRewardedVideoSDK.userIdKey] = deviceId;
  193. ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
  194. }
  195. }
  196. isNewUser() {
  197. let playerDt = AccountModel.getInstance().playerDtList;
  198. if (playerDt.length > 0) {
  199. AccountModel.getInstance().is_new = 0;
  200. }
  201. if (AccountModel.getInstance().is_new == 1) {
  202. zjSdk?.sendEvent('主界面曝光-新')
  203. } else {
  204. zjSdk?.sendEvent('主界面曝光-旧')
  205. }
  206. }
  207. start_btn() {
  208. if (!this.bClick) { return };
  209. if (!this.bloadRes()) {
  210. UIHelp.ShowTips('Loading resources...');//资源加载中......
  211. return;
  212. }
  213. this.bClick = false;
  214. zjSdk?.sendEvent('点击开始按钮');
  215. console.log('zh:1')
  216. zjSdk?.gameBegin(() => {
  217. console.log('zh:2')
  218. zjSdk?.hideMain();
  219. if (zjSdk?.hasOwnProperty('ZjGmData')) {
  220. if (zjSdk?.ZjGmData.instance.gameConfig.isShowInnerCrazyAward == '1') {
  221. GameEvent.isShowInnerCrazyAward = true;
  222. }
  223. if (zjSdk?.ZjGmData.instance.gameConfig.hasOwnProperty('firstCrazyByZombieNum')) {
  224. GameEvent.firstCrazyByZombieNum = parseInt(zjSdk?.ZjGmData.instance.gameConfig.firstCrazyByZombieNum)
  225. }
  226. if (zjSdk?.ZjGmData.instance.gameConfig.hasOwnProperty('crazyByZombieNumTimes')) {
  227. GameEvent.crazyByZombieNumTimes = parseInt(zjSdk?.ZjGmData.instance.gameConfig.crazyByZombieNumTimes)
  228. } if (zjSdk?.ZjGmData.instance.gameConfig.hasOwnProperty('crazyAwardPopMaxTimes')) {
  229. GameEvent.crazyAwardPopMaxTimes = parseInt(zjSdk?.ZjGmData.instance.gameConfig.crazyAwardPopMaxTimes)
  230. }
  231. }
  232. console.log('zh:3')
  233. let curLevel = AccountModel.getInstance().curLevel;
  234. if (curLevel == 1 && AccountModel.getInstance().is_new == 1) {
  235. console.log('zh:4')
  236. this.onClose();
  237. gameEventManager.emit(EVENT_TYPE.playStoryAni, (node) => {
  238. console.log('zh:5')
  239. levelManager.open(curLevel, () => {
  240. cc.director.getScene().getChildByName('Canvas').getChildByName('maskNode').opacity = 0;
  241. UITopMenu.getInstance().node.active = true;
  242. this.tryShowUI();
  243. node.destroy();
  244. })
  245. });
  246. return;
  247. }
  248. console.log('zh:6')
  249. levelManager.open(curLevel, () => {
  250. console.log('zh:7')
  251. cc.director.getScene().getChildByName('Canvas').getChildByName('maskNode').opacity = 0;
  252. UITopMenu.getInstance().node.active = true;
  253. this.onClose();
  254. this.tryShowUI(false);
  255. console.log('zh:8')
  256. })
  257. })
  258. }
  259. tryShowUI(isNewBee = true) {
  260. //调用签到
  261. const callSign = () => {
  262. if (!SignUtil.canSign()) {
  263. return false;
  264. }
  265. const openSign = () => {
  266. if (SignUtil.canSign()) {
  267. gameEventManager.emit(EVENT_TYPE.CHANGE_STATUS, true);
  268. UIHelp.ShowUI(UISignView, null, isNewBee);
  269. }
  270. }
  271. uiRoot.getComponent(UIGameScene).scheduleOnce(async () => {
  272. if (UIMng.getInstance().UILock) {
  273. EventManager.once(EVENT_TYPE.unLockUI, () => {
  274. this.scheduleOnce(() => {
  275. if (SignUtil.canSign()) {
  276. gameEventManager.emit(EVENT_TYPE.CHANGE_STATUS, true);
  277. UIHelp.ShowUI(UISignView, null, isNewBee);
  278. }
  279. }, 1)
  280. })
  281. }
  282. openSign();
  283. }, isNewBee ? 30 : 0);
  284. return true;
  285. }
  286. //调用福利
  287. const callWelfare = (delay) => {
  288. const openWelfare = () => {
  289. if (isNewBee &&
  290. AccountModel.getInstance().curWelfare.length != 0) {
  291. return
  292. }
  293. gameEventManager.emit(EVENT_TYPE.CHANGE_STATUS, true);
  294. UIHelp.ShowUI(UIWelfareView, null, isNewBee);
  295. }
  296. if (AccountModel.getInstance().curWelfare.length !== 4) {
  297. uiRoot.getComponent(UIGameScene).scheduleOnce(() => {
  298. if (UIMng.getInstance().UILock) {
  299. EventManager.once(EVENT_TYPE.unLockUI, () => {
  300. this.scheduleOnce(() => {
  301. openWelfare();
  302. }, 1)
  303. })
  304. return;
  305. }
  306. //新手点击过不要跳了
  307. openWelfare();
  308. }, delay);
  309. }
  310. };
  311. let uiRoot = cc.director.getScene().getChildByName('Canvas');
  312. const isShowSign = callSign();
  313. //新手
  314. if (isNewBee) {
  315. EventManager.once(EVENT_TYPE.closeSign, () => {
  316. callWelfare(30);
  317. })
  318. } else if (isShowSign) {
  319. EventManager.once(EVENT_TYPE.closeSign, () => {
  320. callWelfare(0);
  321. })
  322. } else {
  323. callWelfare(0);
  324. }
  325. }
  326. bloadRes() {
  327. if (bundleManager.localResIsload == true && bundleManager.getBunleTotal() == bundleManager.bundleTotal) {
  328. return true;
  329. }
  330. return false;
  331. }
  332. update(dt) {
  333. if (this.bloadRes() && !this.isLoadRes) {
  334. this.node.$loading_lb.getComponent(cc.Label).string = '加载完成';
  335. this.progressBar.progress = 1;
  336. this.scheduleOnce(() => {
  337. this.ui.progress.active = false;
  338. this.node.$loading_lb.active = false;
  339. this.ui.start_btn.active = true;
  340. }, 0.2)
  341. this.isLoadRes = true;
  342. this.addSprite();
  343. setTimeout(() => {
  344. AudioManager.play('bg', 1, true, 'BGM');
  345. }, 50);
  346. levelManager.preLoadLevel(AccountModel.getInstance().curLevel);
  347. }
  348. if (!this.bloadRes()) {
  349. this.node.$loading_lb.getComponent(cc.Label).string = '正在加载中......';
  350. if (this.progressBar.progress < 1) {
  351. this.progressBar.progress += dt * 0.5;
  352. }
  353. }
  354. }
  355. addSprite() {
  356. this.initRedWarn();
  357. }
  358. initRedWarn() {
  359. let redWarn = new cc.Node;
  360. redWarn.name = "redWarn";
  361. redWarn.setContentSize(cc.size(1800, 2000));
  362. redWarn.addComponent(cc.Sprite);
  363. bundleManager.setBundleFrame('UI', 'main/hjianbianBG', redWarn);
  364. redWarn.active = false;
  365. redWarn.parent = cc.director.getScene().getChildByName('Canvas');
  366. cc.tween(redWarn)
  367. .repeatForever(cc.tween().to(0.5, { opacity: 0 }).to(0.5, { opacity: 255 }))
  368. .start();
  369. }
  370. onClose() {
  371. UIHelp.CloseUI(UIMenu);
  372. }
  373. }