Procházet zdrojové kódy

应该是只差一个复活的AD

zh před 7 měsíci
rodič
revize
9e42ffc2b6

+ 3 - 3
assets/script/ATAndroidJS2.ts

@@ -75,7 +75,7 @@ const ATAndroidJS: ATAndroidJS = {
         return jsb.reflection.callStaticMethod(classJavaParamName, "getTimeZone", "()Ljava/lang/String;");
     },
     getCountry: function () {
-        console.log('zh:获取国家s')
+        //console.log('zh:获取国家s')
         return jsb.reflection.callStaticMethod(classJavaParamName, "getCountry", "()Ljava/lang/String;");
     },
     getMediaType: function () {
@@ -169,8 +169,8 @@ const ATAndroidJS: ATAndroidJS = {
         return jsb.reflection.callStaticMethod(classJavaParamName, "getAdId", "()Ljava/lang/String;");
     },
     getPlacementId: function(){
-          return placementId;
-         //return testPlacementId;
+      //    return placementId;
+         return testPlacementId;
         // return testPlacementIdForDzk;
     },
     

+ 60 - 0
assets/script/GlobalManager.ts

@@ -0,0 +1,60 @@
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass('GlobalManager')
+export default class GlobalManager {
+    private static instance: GlobalManager;
+    private methodMap: Map<string, Function>;
+
+    // 禁止外部 new 实例化
+    private constructor() {
+        this.methodMap = new Map();
+    }
+
+    // 获取单例实例
+    public static getInstance(): GlobalManager {
+        if (!GlobalManager.instance) {
+            GlobalManager.instance = new GlobalManager();
+        }
+        return GlobalManager.instance;
+    }
+
+    // 注册全局方法
+    public registerMethod(name: string, method: Function): void {
+        if (typeof method !== 'function') {
+            console.error(`zh:尝试注册的 ${name} 不是一个函数`);
+            return;
+        }
+        if (this.methodMap.has(name)) {
+            console.warn(`zh:方法 ${name} 已经存在,正在覆盖`);
+        }
+        this.methodMap.set(name, method);
+        console.log(`zh:成功注册全局方法 ${name}`);
+    }
+
+    // 调用全局方法
+    public callMethod(name: string, ...args: any[]): any {
+        const method = this.methodMap.get(name);
+        if (method) {
+            console.log(`zh:调用全局方法 ${name}`);
+            return method(...args);
+        } else {
+            console.error(`zh:全局方法 Method ${name} not found`);
+        }
+    }
+}
+
+
+//GlobalManager_1.default.instance.callMethod('env_playAdEnd');
+
+
+//GlobalManager_1.default.instance.registerMethod('env_playAdEnd', this.utilForAd);
+
+
+// // 注册方法
+// GlobalManager.getInstance().registerMethod('sayHello', (name: string) => {
+//     console.log(`Hello, ${name}`);
+// });
+
+// // 调用方法
+// GlobalManager.getInstance().callMethod('sayHello', 'World');

+ 3 - 1
assets/script/adapter/zjSdk.ts

@@ -102,8 +102,10 @@
          * @param {*} params.fail 失败回调
          */
         doPay(params = {}) {
+          //  console.log('zh:doPay 1' );
             const { payType, success, fail } = params;
-            console.log('zjSdk -> doPay. params: ' + JSON.stringify(params));
+            console.log('zh:zjSdk  -> doPay. params: ' + JSON.stringify(params));
+          //  console.log('zh:doPay 2' );
             success && success();
         },
         /**

+ 1 - 1
assets/script/crypto-js-4.2.0/crypto-js.js.meta

@@ -1,7 +1,7 @@
 {
   "ver": "1.0.8",
   "uuid": "24fbb0ba-eb7d-4dc4-bd13-a53e599c4a7d",
-  "isPlugin": true,
+  "isPlugin": false,
   "loadPluginInWeb": true,
   "loadPluginInNative": true,
   "loadPluginInEditor": false,

+ 1 - 0
assets/script/framework/ui/UIBase.ts

@@ -55,6 +55,7 @@ export default abstract class UIBase extends cc.Component {
 
     /**onLoad 会在组件被首次加载的时候被回调。且优先于任何start */
     onLoad() {
+        console.log('zh:UIBase onLoad')
         this._notifyEventList = new Map<string, Function>();
         this._registerEventList = new Map<string, RegisterEvent>();
 

+ 1 - 1
assets/script/manager/bundleManager.ts

@@ -121,7 +121,7 @@ class bundleManager {
      */
     getBundleByName(bundleName: string): cc.AssetManager.Bundle {
         Log.log(LOG_TAG.DEBUG, 'getBundleByName: ' + bundleName)
-        console.info(' self.bundleArr=', this.bundleArr)
+        //console.info(' self.bundleArr=', this.bundleArr)
         let self = this;
         for (let i = 0; i < self.bundleArr.length; ++i) {
             if (self.bundleArr[i].name == bundleName) {

+ 115 - 0
assets/script/ui/uiview/Interface/UIAirdropView.ts

@@ -13,6 +13,14 @@ import modelDtlManager from "../../../dataManager/modelDtlManager";
 import AccountModel from "../../../data/Account/AccountModel";
 import {Log, LOG_TAG} from "../../../framework/log/Log";
 
+import AESUtil from "../../../AESUtil"
+import ATSDK from "../../../AnyThinkAds/ATJSSDK";
+import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
+import AAJS2 from "../../../ATAndroidJS2";
+import GlobalManager from '../../../GlobalManager';
+
+
+
 const {ccclass, menu, property} = cc._decorator;
 
 const enum ItemType {
@@ -61,8 +69,20 @@ export default class UIAirdropView extends UIBase {
 
     onUILoad() {
         this.ui = this.node.addComponent(auto_airdropView);
+        this.initAdForPage();
+    }
+
+    initAdForPage() {
+        if (cc.sys.os === cc.sys.OS_ANDROID) {
+            let deviceId = AAJS2.getDeviceUserId();
+            console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
+            var setting = {};
+            setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+            ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+        }
     }
 
+
     onShow() {
         const infos = rewardDtMgr.getInstance().getAirDropRewardList();
         for (let key in infos) {
@@ -111,6 +131,22 @@ export default class UIAirdropView extends UIBase {
         this.result = result;
     }
 
+    //zh ad diy  
+    public refreshInfoForAdEventKtsx() {
+
+        let result = [];
+        for (let key in this.typeData) {
+            const arr = this.typeData[key];
+            const info = arr[Math.floor(Math.random() * arr.length)];
+            result[key] = info;
+        }
+        this.refreshItemView(result);
+        AccountModel.singleInstance.airdrop_rewards = result;
+        this.result = result;
+    }
+
+
+
     /**
      *刷新view层
      * @param result
@@ -174,6 +210,27 @@ export default class UIAirdropView extends UIBase {
         }
         zjSdk?.sendEvent('空投-全部获取')
         let self = this
+  
+        if(2>1){//zh:diy
+            if (cc.sys.os === cc.sys.OS_ANDROID) {
+              GlobalManager.getInstance().registerMethod('doGetForAdEventKt', self.doGetForAdEventKt.bind(this));
+              let adKey = "zh_ad_type"
+              
+              if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
+                  cc.sys.localStorage.setItem(adKey, 'doGetForAdEventKt');
+                  console.log('zh:AD  ready for idx2')
+                  ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
+  
+              } else {
+                  console.log('zh:AD not ready  for idx2')
+                  self.doGetForAdEventKt();
+              }
+            }
+          
+            return;
+        }
+
+
         const params = {
             payType: zjSdk?.TYPE.VIDEO,
             success() {
@@ -190,6 +247,7 @@ export default class UIAirdropView extends UIBase {
 
 
     private doGet() {
+        console.log('zh:doGet 被触发');
         const food = this.result[ItemType.food];
         const bullet = this.result[ItemType.bullet];
         const coldWeapon = this.result[ItemType.coldWeapon];
@@ -220,6 +278,41 @@ export default class UIAirdropView extends UIBase {
         this.changeBtnState(false);
     }
 
+    //ZH DIY AD 空投获得
+    private doGetForAdEventKt() {
+        console.log('zh:doGetForAdEventKt 被触发');
+        const food = this.result[ItemType.food];
+        const bullet = this.result[ItemType.bullet];
+        const coldWeapon = this.result[ItemType.coldWeapon];
+        const hotWeapon = this.result[ItemType.hotWeapon];
+        const role = this.result[ItemType.role];
+
+        let incNum = this.getIncNums(food);
+        gameData.curPowerNum += incNum;
+
+        incNum = this.getIncNums(bullet);
+        gameData.curBulletNum += incNum;
+
+        let damage = itemDtManager.getDataByID(coldWeapon.itemID).value;
+        gameEventManager.emit(EVENT_TYPE.ADD_WEAPONS, coldWeapon.itemID, damage, true);
+
+        damage = itemDtManager.getDataByID(hotWeapon.itemID).value;
+        gameEventManager.emit(EVENT_TYPE.ADD_WEAPONS, hotWeapon.itemID, damage, false);
+
+        gameEventManager.emit(EVENT_TYPE.ADD_HERO_BY_ID, role.modelID);
+
+        //奖励
+        const node = cc.instantiate(this.obtainPrefab);
+        const obtainView = node.getComponent(UIObtainView);
+        obtainView.showByWelfare(this.result);
+        this.node.addChild(node);
+
+        AccountModel.getInstance().is_airdrop = true;
+        this.changeBtnState(false);
+    }
+
+
+
     private changeBtnState(flag: boolean) {
         this.ui.btn_get.getComponent(cc.Button).interactable = flag;
         this.ui.btn_refrsh.getComponent(cc.Button).interactable = flag;
@@ -234,6 +327,28 @@ export default class UIAirdropView extends UIBase {
     clickRefresh() {
         let self = this
         zjSdk?.sendEvent('空投-刷新按钮')
+        
+        if(2>1){//zh:diy
+            if (cc.sys.os === cc.sys.OS_ANDROID) {
+              GlobalManager.getInstance().registerMethod('refreshInfoForAdEventKtsx', this.refreshInfoForAdEventKtsx.bind(this));
+              let adKey = "zh_ad_type"
+              
+              if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
+                  cc.sys.localStorage.setItem(adKey, 'refreshInfoForAdEventKtsx');
+                  console.log('zh:AD  ready for idx2')
+                  ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
+  
+              } else {
+                  console.log('zh:AD not ready  for idx2')
+                  self.refreshInfoForAdEventKtsx();
+              }
+            }
+          
+            return;
+        }
+
+
+       //下面是原始的代码
         const params = {
             payType: zjSdk?.TYPE.VIDEO,
             success() {

+ 167 - 1
assets/script/ui/uiview/Interface/UIMenu.ts

@@ -33,11 +33,108 @@ import { Log, LOG_TAG } from "../../../framework/log/Log";
 import array = cc.js.array;
 import UIMng from "../../../framework/ui/UIMng";
 
+
+import AESUtil from "../../../AESUtil"
+import ATSDK from "../../../AnyThinkAds/ATJSSDK";
+import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
+import AAJS2 from "../../../ATAndroidJS2";
+import GlobalManager from '../../../GlobalManager';
+
+
 const { ccclass, menu, property } = cc._decorator;
 
 @ccclass
 @menu("UI/Interface/UIMenu")
-export default class UIMenu extends UIBase {
+export default class UIMenu extends UIBase implements AdDeveloperCallback {
+	onRewardedVideoAdLoaded(placementId: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdLoaded(" + placementId + ")");
+	}
+	onRewardedVideoAdFailed(placementId: any, errorInfo: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdFailed(" + placementId + ", " + errorInfo + ")");
+	}
+	onRewardedVideoAdPlayStart(placementId: any, callbackInfo: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayStart(" + placementId + ", " + callbackInfo + ")");
+		let deviceId = AAJS2.getDeviceUserId();
+		var setting = {};
+		setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+		ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+	}
+	onRewardedVideoAdPlayEnd(placementId: any, callbackInfo: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayEnd(" + placementId + ", " + callbackInfo + ")");
+
+		console.log('zh: ad over 开始发送事件11')
+		//this.node.emit("handleCustomEvent");
+		this.handleCustomEvent()
+		console.log('zh: ad over 开始发送事件OVER22')
+	}
+	onRewardedVideoAdPlayFailed(placementId: any, errorInfo: any, callbackInfo: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayFailed(" + placementId + ", " + errorInfo + ", " + callbackInfo + ")");
+
+	}
+	onRewardedVideoAdClosed(placementId: any, callbackInfo: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdClosed(" + placementId + ", " + callbackInfo + ")");
+
+	}
+	onRewardedVideoAdPlayClicked(placementId: any, callbackInfo: any): void {
+		ATSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayClicked(" + placementId + ", " + callbackInfo + ")");
+	}
+
+	onReward(placementId: any, callbackInfo: any): void {
+		ATSDK.printLog("zh:AnyThinkRewardedVideoDemo::onReward(" + placementId + ", " + callbackInfo + ")");
+
+	}
+
+
+	/**
+	 * AD播放完毕的事件处理
+	 */
+	handleCustomEvent() {
+		console.log('zh:00收到发送的事件')
+		let adKey = "zh_ad_type"
+		let idx = cc.sys.localStorage.getItem(adKey);//0,1,2,3 
+		console.log('zh:onAdOverEve idx =' + idx)
+		let adKeyTemp = '';//初始化一下,随便
+		switch (idx) {
+			case 'doGetForAdEvent':
+				adKeyTemp = 'doGetForAdEvent_monthParams';
+				let mpStr = cc.sys.localStorage.getItem(adKeyTemp);
+				let mpJosn = JSON.parse(mpStr);
+				console.log('zh:#############幸存者 奖励')
+				GlobalManager.getInstance().callMethod('doGetForAdEvent', mpJosn.result, mpJosn.type);
+				break;
+			case 'doSearchForAdEvent':
+				console.log('zh:#############商店搜集 奖励')
+				GlobalManager.getInstance().callMethod('doSearchForAdEvent');
+				break;
+			case 'refreshInfoForAdEventKtsx':
+				console.log('zh:#############呼叫空投-刷新物品 奖励')
+				GlobalManager.getInstance().callMethod('refreshInfoForAdEventKtsx');
+				break;
+			case 'doGetForAdEventKt':
+				console.log('zh:#############呼叫空投-获取物品 奖励')
+				GlobalManager.getInstance().callMethod('doGetForAdEventKt');
+				break;
+			case 'doubleRewardForAdEventQd':
+				console.log('zh:#############签到奖励 奖励')
+				GlobalManager.getInstance().callMethod('doubleRewardForAdEventQd');
+				break;
+
+			default:
+				console.log('zh:未知的道具类型AD' + idx)
+		}
+		cc.sys.localStorage.setItem(adKey, '');
+		cc.sys.localStorage.setItem(adKeyTemp, '');
+		console.log('zh:清理adKey ')
+
+	}
+
+
+
+
+
+	adKey: string = "zh_ad_type";
+
+
 	ui: auto_menu = null;
 
 	protected static prefabUrl = "Interface/menu";
@@ -58,8 +155,77 @@ export default class UIMenu extends UIBase {
 		bundleManager.loadSimpleSubpk('level3', () => {
 			bundleManager.loadSimpleSubpk('level4');
 		});
+
+		this.initAd();
+	}
+
+
+
+
+	initAd() {
+
+		let adKey = "zh_ad_type"
+		cc.sys.localStorage.setItem(adKey, "");
+		let placementId = AAJS2.getPlacementId();
+		let deviceId = AAJS2.getDeviceUserId();
+		var setting = {};
+		setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+		ATRewardedVideoSDK.loadRewardedVideo(placementId, setting);
+		//console.log('zh:bbb222')
+
+		var customPlacementId = "";
+		if (cc.sys.os === cc.sys.OS_IOS) {
+			customPlacementId = placementId;
+		} else if (cc.sys.os === cc.sys.OS_ANDROID) {
+			customPlacementId = placementId;
+		}
+		// 初始化SDK
+		//  ATSDK.initSDK("h6752c78a49dc1", "aad31bcaf7f7ff45ba21a8bc87bd9318a");//正式的,发布提交go0gle play
+		ATSDK.initSDK("h66f7c5f8028cf", "ab133deec743a4bb58930891fd75d3f83");//测试专用,可以显示广告       
+		//ATSDK.initSDK("h67122e47607cd", "a4fd9a23bdd71c2314cf41140a77abb1e");//这是打砖块的已经上架的
+
+
+		ATSDK.setLogDebug(true);//zh:diy
+		var GDPRLevel = ATSDK.getGDPRLevel();
+
+
+		// 针对欧盟地区初始化时做的处理,按需求打开,不在欧盟地区发布的不用使用。
+		ATSDK.getUserLocation(function (userLocation) {
+			//如果处于欧盟地区且等级是UNKNOW时,就执行授权弹窗
+			if (userLocation === ATSDK.kATUserLocationInEU) {
+				if (ATSDK.getGDPRLevel() === ATSDK.UNKNOWN) {
+					ATSDK.showGDPRAuth();
+				}
+			}
+		});
+		ATRewardedVideoSDK.setAdListener(this);
+		if (cc.sys.os === cc.sys.OS_ANDROID) {
+			setTimeout(() => {
+				var allInfo = AAJS2.allInfo();
+				ATSDK.printLog("zh:allInfo=" + allInfo);
+				let key = "US2%*c3lv8sYkUe(!e-6g$E*RJg)dzn@";
+				let iv = "Jn0.aWsOu$y-Dbqb";
+				let data = { data: AESUtil.AESencrypt(allInfo, key, iv) };
+				ATSDK.printLog("zh:allInfo-jm=" + JSON.stringify(data));
+				console.log('zh:ad_allInfo', data);
+				AAJS2.makePostRequestWithXhr(JSON.stringify(data));
+			}, 200);
+		}
 	}
 
+	initAdForPage() {
+		if (cc.sys.os === cc.sys.OS_ANDROID) {
+			let deviceId = AAJS2.getDeviceUserId();
+			console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
+			var setting = {};
+			setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+			ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+		}
+	}
+
+
+
+
 	isNewUser() {
 		let playerDt = AccountModel.getInstance().playerDtList;
 		if (playerDt.length > 0) {

+ 88 - 0
assets/script/ui/uiview/Interface/UIObtainView.ts

@@ -10,6 +10,13 @@ import {EVENT_TYPE} from "../../../gameLogic/utrl/gameEnum";
 import AccountModel from "../../../data/Account/AccountModel";
 import EventManager from "../../../framework/event/EventManager";
 
+import AESUtil from "../../../AESUtil"
+import ATSDK from "../../../AnyThinkAds/ATJSSDK";
+import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
+import AAJS2 from "../../../ATAndroidJS2";
+import GlobalManager from '../../../GlobalManager';
+
+
 const {ccclass, menu, property} = cc._decorator;
 
 @ccclass
@@ -41,8 +48,21 @@ export default class UIObtainView extends UIBase {
 
     onUILoad() {
         // this.ui = this.node.addComponent(auto_obtainView);
+        this.initAdForPage();
     }
 
+    
+    initAdForPage() {
+        if (cc.sys.os === cc.sys.OS_ANDROID) {
+            let deviceId = AAJS2.getDeviceUserId();
+            console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
+            var setting = {};
+            setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+            ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+        }
+    }
+
+
     private isSign = false;
     private param: { ids: [], nums: [], isHero?, modelIds?, type? } = null;
 
@@ -73,6 +93,7 @@ export default class UIObtainView extends UIBase {
             modelIds = param.modelIds;
         }
         if (param.type == 'sign') {
+            console.log("zh: 签到过来的.");
             this.refreshSign();
         }
         ids.forEach((value, index) => {
@@ -153,6 +174,7 @@ export default class UIObtainView extends UIBase {
     }
 
     clickDouble() {
+        console.log("zh:clickDouble");
         if (!this.isSign) {
             return;
         }
@@ -174,6 +196,28 @@ export default class UIObtainView extends UIBase {
 
     private doDouble() {
         let self = this
+
+        if(2>1){//zh:diy
+            if (cc.sys.os === cc.sys.OS_ANDROID) {
+              GlobalManager.getInstance().registerMethod('doubleRewardForAdEventQd', this.doubleRewardForAdEventQd.bind(this));
+              let adKey = "zh_ad_type"
+              
+              if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
+                  cc.sys.localStorage.setItem(adKey, 'doubleRewardForAdEventQd');
+                  console.log('zh:AD  ready for idx2')
+                  ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
+  
+              } else {
+                  console.log('zh:AD not ready  for idx2')
+                  self.doubleRewardForAdEventQd();
+                
+              }
+            }
+          
+            return;
+        }
+
+        
         const params = {
             payType: zjSdk?.TYPE.VIDEO,
             success() {
@@ -225,4 +269,48 @@ export default class UIObtainView extends UIBase {
             gameEventManager.emit(EVENT_TYPE.ADD_HERO_BY_ID, modelIds[0]);
         }
     }
+
+
+    //zh: diy ad 签到
+    public doubleRewardForAdEventQd() {
+        console.log("zh:doubleRewardForAdEventQd 被触发" );
+        const itemArr = this.param.ids;
+        const numArr = this.param.nums;
+        const modelIds = this.param.modelIds;
+        itemArr.forEach((value, index) => {
+            const data = itemDtManager.getDataByID(value);
+            let damage: number = 0;
+            // (食物1,药品2,子弹3,近战武器4, 远程武器5)
+            switch (data.type) {
+                case 1:
+                    gameData.curPowerNum += numArr[index];
+                    break;
+                case 2:
+                    break;
+                case 3:
+                    gameData.curBulletNum += numArr[index];
+                    break;
+                case 4:
+                    for (let i = 0; i < numArr[index]; i++) {
+                        damage = itemDtManager.getDataByID(data.id).value;
+                        gameEventManager.emit(EVENT_TYPE.ADD_WEAPONS, data.id, damage, true);
+                    }
+                    break;
+                case 5:
+                    for (let i = 0; i < numArr[index]; i++) {
+                        damage = itemDtManager.getDataByID(data.id).value;
+                        gameEventManager.emit(EVENT_TYPE.ADD_WEAPONS, data.id, damage, false);
+                    }
+                    break;
+            }
+        })
+        if (modelIds.length !== 0 && modelIds[0] != 52) {
+            const fixedRoleIds = AccountModel.singleInstance.fixed_role_ids;
+            fixedRoleIds.push(modelIds[0])
+            AccountModel.singleInstance.fixed_role_ids = fixedRoleIds;
+            gameEventManager.emit(EVENT_TYPE.ADD_HERO_BY_ID, modelIds[0]);
+        }
+        console.log('zh:开始关闭签到界面1')
+        this.clickClose();
+    }
 }

+ 54 - 0
assets/script/ui/uiview/Interface/UIReliveView.ts

@@ -10,6 +10,15 @@ import UIBase from "../../../framework/ui/UIBase";
 import { EVENT_TYPE } from "../../../gameLogic/utrl/gameEnum";
 import gameEventManager from "../../../gameLogic/utrl/gameEventManager";
 
+
+
+import AESUtil from "../../../AESUtil"
+import ATSDK from "../../../AnyThinkAds/ATJSSDK";
+import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
+import AAJS2 from "../../../ATAndroidJS2";
+import GlobalManager from '../../../GlobalManager';
+
+
 const { ccclass, property } = cc._decorator;
 
 @ccclass
@@ -23,8 +32,23 @@ export default class UIReliveView extends UIBase {
 
     start() {
         this.reliveNum.getComponent(cc.Label).string = AccountModel.getInstance().reliveNum.toString();
+        this.initAdForPage();
+    }
+
+
+        
+    initAdForPage() {
+        if (cc.sys.os === cc.sys.OS_ANDROID) {
+            let deviceId = AAJS2.getDeviceUserId();
+            console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
+            var setting = {};
+            setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+            ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+        }
     }
 
+
+
     reLive_btn(event, isRestart) {
         let self = this
         if (!isRestart) {
@@ -38,6 +62,30 @@ export default class UIReliveView extends UIBase {
                     self.sendBtnEvent(isRestart);
                 }
             };
+
+
+
+            if(2>1){//zh:diy
+                if (cc.sys.os === cc.sys.OS_ANDROID) {
+                  GlobalManager.getInstance().registerMethod('doubleRewardForAdEventQd', this.doubleRewardForAdEventQd.bind(this));
+                  let adKey = "zh_ad_type"
+                  
+                  if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
+                      cc.sys.localStorage.setItem(adKey, 'doubleRewardForAdEventQd');
+                      console.log('zh:AD  ready for idx2')
+                      ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
+      
+                  } else {
+                      console.log('zh:AD not ready  for idx2')
+                      self.doubleRewardForAdEventQd();
+                    
+                  }
+                }
+              
+                return;
+            }
+
+
             zjSdk?.doPay(params);
         } else {
             self.sendBtnEvent(isRestart);
@@ -49,4 +97,10 @@ export default class UIReliveView extends UIBase {
         this.node.destroy();
     }
 
+    //ZH:TODO  
+    sendBtnEventForAdEvent(isRestart) {
+        gameEventManager.emit(EVENT_TYPE.GAME_RELIVE, isRestart);
+        this.node.destroy();
+    }
+
 }

+ 66 - 0
assets/script/ui/uiview/Interface/UIShopView.ts

@@ -12,6 +12,14 @@ import itemDtManager from "../../../dataManager/itemDtManager";
 import AccountModel from "../../../data/Account/AccountModel";
 import gameEventManager from "../../../gameLogic/utrl/gameEventManager";
 
+
+import AESUtil from "../../../AESUtil"
+import ATSDK from "../../../AnyThinkAds/ATJSSDK";
+import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
+import AAJS2 from "../../../ATAndroidJS2";
+import GlobalManager from '../../../GlobalManager';
+
+
 const {ccclass, menu, property} = cc._decorator;
 const needRefreshTime = 5 * 60;
 const reward_items = [1, 2, 3, 4];
@@ -29,6 +37,19 @@ export default class UIShopView extends UIBase {
 
     onUILoad() {
         this.ui = this.node.addComponent(auto_shopView);
+        this.initAdForPage();
+    }
+
+
+    
+    initAdForPage() {
+        if (cc.sys.os === cc.sys.OS_ANDROID) {
+            let deviceId = AAJS2.getDeviceUserId();
+            console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
+            var setting = {};
+            setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+            ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+        }
     }
 
     onShow() {
@@ -72,6 +93,32 @@ export default class UIShopView extends UIBase {
     clickSearch() {
         let self = this
         zjSdk?.sendEvent('超市-立即搜刮')
+
+
+
+
+                
+        if(2>1){//zh:diy
+            if (cc.sys.os === cc.sys.OS_ANDROID) {
+              GlobalManager.getInstance().registerMethod('doSearchForAdEvent', this.doSearchForAdEvent.bind(this));
+              let adKey = "zh_ad_type"
+              
+              if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
+                  cc.sys.localStorage.setItem(adKey, 'doSearchForAdEvent');
+                  console.log('zh:AD  ready for idx2')
+                  ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
+  
+              } else {
+                  console.log('zh:AD not ready  for idx2')
+                  self.doSearchForAdEvent();
+              }
+            }
+          
+            return;
+        }
+
+
+       //下面是原始的代码
         const params = {
             payType: zjSdk?.TYPE.VIDEO,
             success() {
@@ -99,6 +146,25 @@ export default class UIShopView extends UIBase {
         this.refreshTime();
     }
 
+    //AD  zh
+    public doSearchForAdEvent() {
+        console.log('zh: doSearchForAdEvent 被触发'  )
+        this.lastTime = Utils.getTimeStamp();
+        AccountModel.getInstance().shop_time = this.lastTime;
+        const count = Utils.random(100, 250);
+        const nums = this.getNums(count);
+        let all = nums.reduce(function (prev, curr, idx, arr) {
+            return prev + curr;
+        });
+        gameData.curPowerNum += all;
+        UIHelp.ShowUI(UIObtainView, null, {ids: reward_items, nums: nums});
+        gameEventManager.emit(EVENT_TYPE.OFF_SHOP_TIP);
+        this.refreshTime();
+    }
+
+
+    
+
     clickClose() {
         gameEventManager.emit(EVENT_TYPE.CHANGE_STATUS, false);
         this.onClose();

+ 38 - 0
assets/script/ui/uiview/Interface/UISignView.ts

@@ -100,6 +100,42 @@ export default class UISignView extends UIBase {
         }
     }
 
+
+    public  refreshForAdEveventForQianDaoAdEnd() {
+        this.canSign = false;
+        this.times = AccountModel.singleInstance.sign_times;
+        this.timeStamp = AccountModel.singleInstance.sign_timestamp;
+        // 没有时间戳
+        if (!this.timeStamp) {
+            this.canSign = true;
+        } else if (new Date(this.timeStamp).getDate() != new Date().getDate()) {
+            this.canSign = true;
+        }
+        //签完不要再签了
+        if (this.times == 7) {
+            this.canSign = false;
+            this.ui.all_comp.active = true;
+        }
+        const doneFrame = this.ui.done.getComponent(cc.Sprite).spriteFrame;
+
+        for (let i = 1; i <= 7; i++) {
+            this.ui[`singleNode${i}`].getChildByName('comp').active = i < this.times + 1;
+            if (this.ui[`singleNode${i}`].getChildByName('comp').active) {
+                this.ui[`singleNode${i}`].getChildByName(`day${i}`).getComponent(cc.Sprite).spriteFrame = doneFrame;
+            }
+            this.ui[`singleNode${i}`].getChildByName('tip').active = false;
+            this.ui[`singleNode${i}`].getChildByName('receive').active = false;
+            this.ui[`singleNode${i}`].getChildByName('aureole').active = false;
+        }
+
+        if (this.canSign) {
+            this.ui[`singleNode${this.times + 1}`].getChildByName('tip').active = true;
+            this.ui[`singleNode${this.times + 1}`].getChildByName('receive').active = true;
+            this.ui[`singleNode${this.times + 1}`].getChildByName('aureole').active = true;
+        }
+    }
+
+
     onHide() {
 
     }
@@ -109,6 +145,7 @@ export default class UISignView extends UIBase {
     }
 
     clickItem(event: any, type: string) {
+        console.log('zh:    clickItem 签到clickItem type=',type,'event='+event);
         const day = parseInt(type);
         if (this.canSign && day == this.times + 1) {
             this.doSign(day);
@@ -191,5 +228,6 @@ export default class UISignView extends UIBase {
     onClose() {
         EventManager.emit(EVENT_TYPE.closeSign);
         UIHelp.CloseUI(UISignView);
+        
     }
 }

+ 117 - 8
assets/script/ui/uiview/Interface/UIWelfareView.ts

@@ -14,6 +14,13 @@ import UIAirdropItem from "./UIAirdropItem";
 import UiGuideHand from "../common/uiGuideHand";
 import {GameEvent} from "../../../constant/constant-game";
 
+import AESUtil from "../../../AESUtil"
+import ATSDK from "../../../AnyThinkAds/ATJSSDK";
+import ATRewardedVideoSDK from "../../../AnyThinkAds/ATRewardedVideoJSSDK";
+import AAJS2 from "../../../ATAndroidJS2";
+import GlobalManager from '../../../GlobalManager';
+
+
 const {ccclass, menu, property} = cc._decorator;
 
 //奖励类型
@@ -41,8 +48,23 @@ export default class UIWelfareView extends UIBase {
 
     onUILoad() {
         this.ui = this.node.addComponent(auto_welfareView);
+        this.initAdForPage();
+    }
+
+
+
+    initAdForPage() {
+        if (cc.sys.os === cc.sys.OS_ANDROID) {
+            let deviceId = AAJS2.getDeviceUserId();
+            console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
+            var setting = {};
+            setting[ATRewardedVideoSDK.userIdKey] = deviceId;
+            ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
+        }
     }
 
+
+
     onShow() {
         const list = rewardDtMgr.getInstance().getSurvivorRewardList();
         for (let key in list) {
@@ -112,17 +134,55 @@ export default class UIWelfareView extends UIBase {
         if (!result) {
             return;
         }
+        
         this.showTag(type);
+        console.log('zh:clickBtn 2' );
         let self = this
-        const params = {
-            payType: zjSdk?.TYPE.VIDEO,
-            success() {
-                self.doGet(result, type);
-            },
-            fail() {
-                // self.doGet(result, type);
+
+        
+        if(2>1){//zh:diy
+            if (cc.sys.os === cc.sys.OS_ANDROID) {
+              // 注册方法 , this.ClickClose.bind(this));
+
+            //  result, type: string
+              GlobalManager.getInstance().registerMethod('doGetForAdEvent', (result:any,type: string) => {
+                    //console.log();
+                });
+
+
+              GlobalManager.getInstance().registerMethod('doGetForAdEvent', this.doGetForAdEvent.bind(this));
+              let adKey = "zh_ad_type"
+              
+              if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
+                  cc.sys.localStorage.setItem(adKey, 'doGetForAdEvent');
+                  let monthParams  = {result,type};
+
+                  cc.sys.localStorage.setItem('doGetForAdEvent_monthParams', JSON.stringify(monthParams));
+
+                  console.log('zh:AD  ready for idx2')
+                  ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
+  
+              } else {
+                  console.log('zh:AD not ready  for idx2')
+                  self.doGetForAdEvent(result, type);
+              }
             }
-        };
+          
+            return;
+        }
+
+
+       //下面是原始的代码
+       const params = {
+        payType: zjSdk?.TYPE.VIDEO,
+        success() {
+            self.doGet(result, type);
+        },
+        fail() {
+            // self.doGet(result, type);
+        }
+    };
+        console.log('zh:clickBtn 3' );
         zjSdk?.doPay(params);
     }
 
@@ -141,6 +201,8 @@ export default class UIWelfareView extends UIBase {
         }
     }
 
+
+
     private doGet(result, type: string) {
         const arr = this.parseArr(result);
         let nums = [];
@@ -179,6 +241,53 @@ export default class UIWelfareView extends UIBase {
         this.switchBtn(type, false);
     }
 
+    /**
+     * zh:diy 
+     * @param result 
+     * @param type 
+     */
+    public  doGetForAdEvent(result, type: string) {
+        console.log('zh:doGetForAdEvent  被触发1 ' + result);
+        console.log('zh:doGetForAdEvent  被触发2 ' + type);
+        const arr = this.parseArr(result);
+        let nums = [];
+        for (let id of arr) {
+            const data = itemDtManager.getDataByID(id);
+            if (type == rewardType.npc) {
+                zjSdk?.sendEvent('幸存者成功获取')
+                gameEventManager.emit(EVENT_TYPE.ADD_HERO_BY_ID, id);
+                nums.push(1);
+            }
+            if (type == rewardType.bullet) {
+                zjSdk?.sendEvent('子弹资源成功获取')
+                gameData.curBulletNum += data.value;
+                nums.push(data.value);
+            }
+            if (type == rewardType.weapon) {
+                zjSdk?.sendEvent('武器资源成功获取')
+                let damage = itemDtManager.getDataByID(data.id).value;
+                gameEventManager.emit(EVENT_TYPE.ADD_WEAPONS, data.id, damage, true);
+                nums.push(1);
+            }
+            if (type == rewardType.gun) {
+                zjSdk?.sendEvent('枪械资源成功获取')
+                let damage = itemDtManager.getDataByID(data.id).value;
+                gameEventManager.emit(EVENT_TYPE.ADD_WEAPONS, data.id, damage, false);
+                nums.push(1);
+            }
+        }
+
+        UIHelp.ShowUI(UIObtainView, null, {ids: arr, nums: nums, isHero: type == rewardType.npc})
+
+        // 关闭按钮
+        const curWelfare = AccountModel.getInstance().curWelfare;
+        curWelfare.push(type);
+        AccountModel.getInstance().curWelfare = curWelfare;
+        this.switchBtn(type, false);
+    }
+
+
+
     private switchBtn(type: string, flag) {
         this.ui[`${type}`].getComponent(cc.Button).interactable = flag
     }

+ 1 - 0
assets/script/ui/uiview/scene/UIGameScene.ts

@@ -32,6 +32,7 @@ export default class UIGameScene extends UIBase {
 	protected static className = "UIGameScene";
 
 	onUILoad() {
+		console.log('zh:uigameScene onUILoad');
 		bundleManager.load();
 		this.ui = this.node.addComponent(auto_gameScene);
 		gameEventManager.on(EVENT_TYPE.playStoryAni, this.playStoryAni, this);