package com.mints.goodmoney.manager;


import android.content.Context;

import com.bytedance.sdk.openadsdk.TTAdConfig;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.cmcm.cmgame.CmGameSdk;
import com.cmcm.cmgame.gamedata.CmGameAppInfo;
import com.mints.goodmoney.BuildConfig;
import com.mints.goodmoney.MintsApplication;
import com.mints.goodmoney.utils.CmGameImageLoader;

/**
 * 描述：猎豹游戏
 * 作者：孟崔广
 * 时间：2020/10/10 11:29
 * 邮箱：mengcga@163.com
 */
public class LiebaoManager {

    /**
     * APP_ID
     */
    public static final String APP_ID = "haozhuanqian";

    /**
     * APP_HOST
     */
    public static final String APP_HOST = "https://haozhuanqian-xyx-big-svc.beike.cn";

    private static LiebaoManager _inst;
    private Context context;

    public static LiebaoManager getInstance() {
        if (_inst != null) {
            return _inst;
        } else {
            _inst = new LiebaoManager();
            return _inst;
        }
    }

    private LiebaoManager() {
        init();
    }

    private void init() {
        context = MintsApplication.getContext();
    }


    /**
     * 游戏SDK初始化
     */
    public void initCmGameSdk() {
        final String adAppId = TtCsjAdManager.TT_AD_APPID;   // 穿山甲appid

        TTAdSdk.init(context,
                new TTAdConfig.Builder()
                        .appId(adAppId)
                        .useTextureView(false) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景，可以使用TextureView
                        .appName(TtCsjAdManager.TT_AD_NAME)
                        .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
                        .allowShowNotify(true) //是否允许sdk展示通知栏提示
                        .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页
                        .debug(BuildConfig.DEBUG) //测试阶段打开，可以通过日志排查问题，上线时去除该调用
                        .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI, TTAdConstant.NETWORK_STATE_3G) //允许直接下载的网络状态集合
                        .supportMultiProcess(false) //是否支持多进程，true支持
                        .build());


        CmGameAppInfo cmGameAppInfo = new CmGameAppInfo();
        cmGameAppInfo.setAppId(APP_ID);       // GameSdkID，向我方申请
        cmGameAppInfo.setAppHost(APP_HOST);   // 游戏host地址，向我方申请


        // 设置游戏的广告id
        CmGameAppInfo.TTInfo ttInfo = new CmGameAppInfo.TTInfo();
        // 游戏内广告有如下6种；
        ttInfo.setGameLoad_EXADId(TtCsjAdManager.TT_AD_INSERT_LOADING_ID_LIEBAO); // 游戏加载时，插屏广告1:1，模板渲染
        ttInfo.setRewardVideoId(TtCsjAdManager.TT_AD_VEDIO_GAME);   // 激励视频
        ttInfo.setFullVideoId(TtCsjAdManager.TT_AD_ALLVEDIO_ID_LIEBAO); // 全屏视频，插屏场景下展示
//        ttInfo.setExpressInteractionId(TtCsjAdManager.TT_AD_INSERT_ID_LIEBAO); // 插屏广告，插屏场景下展示，模板渲染，2：3
//        ttInfo.setExpressBannerId("901121159"); // Banner广告，模板渲染，尺寸：600*150，会导致游戏卡慢，暂时不用
        ttInfo.setGameEndExpressFeedAdId(TtCsjAdManager.TT_AD_NATIVEEXPRESS_ID_LIEBAO_LISTEXIT); // 游戏退出弹框，信息流广告，模板渲染
        // 游戏列表页面有如下2种：
        ttInfo.setGameListExpressFeedId(TtCsjAdManager.TT_AD_NATIVEEXPRESS_ID_LIEBAO_LISTEXIT); // 游戏列表，信息流广告，模板渲染
//        ttInfo.setGamelistExpressInteractionId("901121536"); // 模板渲染1：1，不能用于游戏tab页的入口
        cmGameAppInfo.setTtInfo(ttInfo);

        // 需要支持广点通广告时，才需下面代码
        // 【设置广点通广告id】
        CmGameAppInfo.GDTAdInfo gdtAdInfo = new CmGameAppInfo.GDTAdInfo();
        gdtAdInfo.setAppId(YlhAdManager.YLH_AD_APPID);               // 广点通的APPID
        // 游戏内广告场景；
        gdtAdInfo.setRewardVideoId(YlhAdManager.YLH_AD_VEDIO_GAME_POSTID); // 激励视频
        gdtAdInfo.setGameLoadInterId(YlhAdManager.YLH_AD_INTERSTITIALAD_LIEBAO);//游戏加载中的插屏
//        gdtAdInfo.setBannerId(YlhAdManager.YLH_AD_BANNER_LIEBAO); // banner广告
        gdtAdInfo.setPlayGameInterId(YlhAdManager.YLH_AD_INTERSTITIALAD_LIEBAO);//游戏进行中关卡插屏
        cmGameAppInfo.setGdtAdInfo(gdtAdInfo);

//
//        // 【设置广点通和穿山甲广告占比】
//        // 概率设置规则，如下：
//        // 0： 全部使用穿山甲广告
//        // 100： 全部采用广点通广告
//        // 40：穿山甲广告命中概率是60%，广点通是40%，如果一方没广告，则用另一方补量。
        cmGameAppInfo.setRewardAdProbability(40);        // 默认值为0，全部采用穿山甲激励视频广告
//
//
//        // 戏关卡间插屏广告概率设置建议，代码默认值为20
//        // 1)80%流量给穿山甲，20%给优量汇，原因:穿山甲全屏视频广告收益更高，优量汇收益低但体验 好
//        // 2)概率云端控制，媒体自行下发2种广告源占比
        cmGameAppInfo.setExpressInterAdProbability(60);

        // 功能默认开启，可使用如下方法来关闭
//        cmGameAppInfo.setShowLogin(false);

        // 退出弹窗确认窗口，但不需要游戏推荐内容，该场景使用于网赚场景，因为需要退出后立即给用户奖励。
        cmGameAppInfo.setQuitGameConfirmRecommand(false);
        // 游戏退出确认弹窗，增加自定义文案，颜色也可以根据自己需要调整
        cmGameAppInfo.setQuitGameConfirmTip("<font color=\"#ef0d12\">主人，下次可在“个人中心”找到我哦~</font>");
        CmGameSdk.initCmGameSdk((MintsApplication) this.context, cmGameAppInfo, new CmGameImageLoader(), BuildConfig.DEBUG);
    }

    /**
     * 获取最新游戏信息和生成游戏游客账号
     * <p>
     * 如下方法，用于获取最新游戏信息和生成游戏游客账号，生成游客账号后，才能成功进入游戏。
     * 调用时机:自定义游戏界面或者调用单独游戏，需要进入游戏前，调用此方法。
     * 使用sdk提供的默认游戏列表，是不需要调用此方法，内部已经封装调用。
     * 此方法多次调用，不影响，但不能在后台进程调用。
     */
    public void initCmGameAccount() {
        CmGameSdk.initCmGameAccount();
    }

    /**
     * 登录账号后，APP需要传入保存的loginInfo信息
     *
     * @param userInfo
     */
    public void restoreCmGameAccount(String userInfo) {
        CmGameSdk.restoreCmGameAccount(userInfo);
    }

    /**
     * 用户退出账号时，APP调用清除游戏账号信息的接口，清除游戏本地游戏数据
     */
    public void clearCmGameAccount() {
        CmGameSdk.clearCmGameAccount();
    }

    /**
     * 调起指定游戏
     *
     * @param gameId
     */
    public void startH5Game(String gameId) {
        CmGameSdk.startH5Game(gameId);
    }
}
