| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- /*
- * @Author: mojunshou 1637302775@qq.com
- * @Date: 2025-04-11 10:14:44
- * @LastEditors: mojunshou 1637302775@qq.com
- * @LastEditTime: 2025-04-25 17:20:58
- * @Description:
- */
- // ADHandler.ts
- import { CocosHandlerType, CocosHandler } from './CocosHandler';
- import { AD_TYPE } from '../config/GameDefine';
- import { oops } from 'db://oops-framework/core/Oops';
- import { UIID } from '../config/GameUIConfig';
- import { smc } from '../SingletonModuleComp';
- import { ServerHandler } from './ServerHandler';
- import { LoginHandler } from './LoginHandler';
- import { GameEvent } from '../config/GameEvent';
- export class ADHandler {
- private static _inst: ADHandler;
- public static get inst(): ADHandler {
- if (!this._inst) {
- this._inst = new ADHandler();
- }
- return this._inst;
- }
- showAd = async (id: string) => {
- smc.game.GameModel.isShowAd = true;
- const { method, param } = this.buildAdParam(id);
- const data: CocosHandlerType = {
- method,
- param: JSON.stringify(param)
- };
- return await CocosHandler.inst.sendMessageToAndroid(data, `广告 ${id}`);
- };
- private buildAdParam(id: string): { method: string, param: any } {
- const param: any = {
- funcId: id,
- callback: {
- onLoaded: '',
- onShow: '',
- onLoadFailed: '',
- onShowFailed: '',
- onClose: ''
- }
- };
- let method = '';
- switch (id) {
- case AD_TYPE.Start:
- method = 'ad.splash';
- param.callback.onLoadFailed = 'ADHandler.inst.adSplashLoadFailed';
- param.callback.onClose = 'ADHandler.inst.adSplashClose';
- break;
- case AD_TYPE.Jion_Main:
- case AD_TYPE.Double_Close:
- case AD_TYPE.Rebates:
- case AD_TYPE.Double_Speed_Close:
- method = 'ad.interstitial';
- param.callback.onLoadFailed = 'ADHandler.inst.adInterstitialLoadFailed';
- param.callback.onClose = 'ADHandler.inst.adInterstitialClose';
- break;
- default:
- oops.gui.waitOpen();
- method = 'ad.reward';
- param.callback.onShow = 'ADHandler.inst.adRewardShow';
- param.callback.onClose = 'ADHandler.inst.adRewardClose';
- param.callback.onLoadFailed = 'ADHandler.inst.adRewardLoadFailed';
- }
- return { method, param };
- }
- //启屏广告关闭
- 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();
- };
- adSplashLoadFailed = () => {
- oops.gui.waitClose();
- smc.game.GameModel.isShowAd = false;
- console.log('[广告] 启屏广告加载失败');
- ServerHandler.inst.getAccountInfo();
- };
- adInterstitialLoadFailed = () => {
- console.log('[广告] 插屏广告加载失败');
- oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
- };
- adInterstitialClose = (type: boolean) => {
- smc.game.GameModel.isShowAd = false;
- console.log('[广告] 插屏广告关闭', type);
- //如果有弹窗,则不发送事件,
- oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
- // 如果是插屏广告
- };
- 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 = "";
- if (smc.game.GameModel.viewType != "" && smc.game.GameModel.viewType != "pass_reward") {
- oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
- }
- //展示失败
- if (smc.game.GameModel.viewType === "revive_reward") {
- oops.message.dispatchEvent(GameEvent.RestartGame);
- }
- };
- adRewardClose = (state: boolean) => {
- oops.gui.waitClose();
- smc.game.GameModel.isShowAd = false;
- console.log("[广告] 激励视频关闭", state)
- if (state) {
- //看完了可以领取奖励
- ServerHandler.inst.getVideorReward();
- if (smc.game.GameModel.viewType === "speed_reward") {
- //直接成功-增加时长
- oops.message.dispatchEvent(GameEvent.updateGameState, "playing");
- oops.message.dispatchEvent(GameEvent.DoubleSpeedOpenSuccess);
- smc.game.GameModel.viewType = "";
- }
- //如果是复活,分数减半
- if (smc.game.GameModel.viewType === "revive_reward") {
- smc.game.GameModel.viewType = "";
- ServerHandler.inst.RestartGame();
- }
- } else {
- //通关奖励,没看完也能过下一关
- if (smc.game.GameModel.viewType == "pass_reward") {
- smc.game.GameModel.viewType = "";
- ServerHandler.inst.getNextLevel();
- } else if (smc.game.GameModel.viewType === "revive_reward") {
- smc.game.GameModel.viewType = "";
- ServerHandler.inst.RestartGame();
- }
- }
- oops.message.dispatchEvent(GameEvent.updateGameState, "playing"); //要判断是暂停才可以继续
- };
- }
- window["ADHandler"] = ADHandler;
|