Browse Source

【bug】修改广告失败展示的流程

mojunshou 8 tháng trước cách đây
mục cha
commit
2695c0ce3e
1 tập tin đã thay đổi với 27 bổ sung12 xóa
  1. 27 12
      assets/script/game/common/manager/ADHandler.ts

+ 27 - 12
assets/script/game/common/manager/ADHandler.ts

@@ -2,7 +2,7 @@
  * @Author: mojunshou 1637302775@qq.com
  * @Date: 2025-04-11 10:14:44
  * @LastEditors: mojunshou 1637302775@qq.com
- * @LastEditTime: 2025-04-27 11:00:14
+ * @LastEditTime: 2025-04-27 11:18:59
  * @Description: 
  */
 // ADHandler.ts
@@ -26,7 +26,6 @@ export class ADHandler {
     }
 
     showAd = async (id: string) => {
-        smc.game.GameModel.isShowAd = true;
         const { method, param } = this.buildAdParam(id);
         const data: CocosHandlerType = {
             method,
@@ -76,7 +75,6 @@ export class ADHandler {
     //启屏广告关闭
     adSplashClose = async () => {
         console.log("启屏广告关闭")
-        smc.game.GameModel.isShowAd = false;
         if (oops.gui.has(UIID.KindTips)) oops.gui.remove(UIID.KindTips);
         if (oops.gui.has(UIID.Retention)) oops.gui.remove(UIID.Retention);
         ServerHandler.inst.getAccountInfo();
@@ -84,7 +82,6 @@ export class ADHandler {
 
     adSplashLoadFailed = () => {
         oops.gui.waitClose();
-        smc.game.GameModel.isShowAd = false;
         console.log('[广告] 启屏广告加载失败');
         ServerHandler.inst.getAccountInfo();
     };
@@ -95,7 +92,6 @@ export class ADHandler {
     };
 
     adInterstitialClose = (type: boolean) => {
-        smc.game.GameModel.isShowAd = false;
         console.log('[广告] 插屏广告关闭', type);
         //如果有弹窗,则不发送事件,
         oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
@@ -105,23 +101,38 @@ export class ADHandler {
     adRewardShow = (str: string) => {
         const data = JSON.parse(str);
         ServerHandler.inst.getSign(data.price);
-        oops.gui.waitClose();
     };
 
     adRewardLoadFailed = (str: string) => {
         oops.gui.waitClose();
-        smc.game.GameModel.isShowAd = false;
-        smc.game.GameModel.viewType = "";
+        const viewType = smc.game.GameModel.viewType;
+        // 重置视图类型
+        const resetViewType = () => {
+            smc.game.GameModel.viewType = "";
+        };
         oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
-        //展示失败
-        if (smc.game.GameModel.viewType === "revive_reward") {
-            oops.message.dispatchEvent(GameEvent.RestartGame);
+        // 广告未完成观看
+        switch (viewType) {
+            case "pass_reward":
+                resetViewType();
+                ServerHandler.inst.getNextLevel();
+                break;
+            case "revive_reward":
+                resetViewType();
+                ServerHandler.inst.RestartGame();
+                break;
+            case "double_reward":
+                ServerHandler.inst.getLittleRewards();
+                resetViewType();
+                break;
+            case "speed_reward":   //加速奖励
+                oops.gui.toast("跳过广告,翻倍失败~")
+                break;
         }
     };
 
     adRewardClose = (state: boolean) => {
         oops.gui.waitClose();
-        smc.game.GameModel.isShowAd = false;
         console.log("[广告] 激励视频关闭", state);
         oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
         const viewType = smc.game.GameModel.viewType;
@@ -163,6 +174,10 @@ export class ADHandler {
                     break;
                 case "double_reward":
                     ServerHandler.inst.getLittleRewards();
+                    resetViewType();
+                    break;
+                case "speed_reward":   //加速奖励
+                    oops.gui.toast("跳过广告,翻倍失败~")
                     break;
             }
         }