import { _decorator, error, SpriteFrame, sys } from "cc";
import { config } from "./config";
//管理广告、分享、SDK相关内容的组件
export class SdkUtil {
    public static platform: string = 'cocos'; //平台
    public static imgAd: SpriteFrame = null!;
    public static imgShare: SpriteFrame = null!;
    public static isDebugMode: boolean = false;
    public static onlineInterval: number = -1;
    public static isEnableVibrate: boolean = true;
    public static isCheckOffline: boolean = false; //登录后会检查是否展示登录界面，而且只检查一次
    public static isWatchVideoAd: boolean = false;//是否正在播放广告
    public static isEnableMoving: boolean = false;//是否允许屏幕上下移动
    public static isEnableZoom: boolean = false;//是否允许屏幕缩放
    public static arrLockDiary = [];//未解锁日记
    public static vibrateInterval: number = 100;//两次震动之间的间隔,AppActivity里面的震动间隔也是100
    public static vibratePreTime: number = 0;//上次震动时间


    public static videoAd:any =null;
    public static isLookAd:boolean = false; //是否在看广告

    public static tt_systemInfo: any = null;                //抖音_系统信息
    private static tt_isSupportSidebar:boolean = false;     //抖音_是否支持侧边栏
    private static tt_isToEnterFromSidebar:boolean = false; //抖音_是否从侧边栏进入

    private static tt_gameRecorder:any = null;      //抖音游戏录制
    private static tt_recordVideoPath:string = '';  //抖音录制视频路径
    private static tt_totalRecord:number = 300;     //抖音总录制时间
    private static tt_isRecording:boolean = false;  //抖音是否录制中

    //------------------------------  公共  ------------------------------//

    public static init() {
        // this.ttGetSystemInfo(()=> {
        //     this.ttRegisterInfo()
        // })
    }

    // 苹果手机是否有灵动岛
    public static iPhoneIsLingdongdao():boolean {
        if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME) {
            if(SdkUtil.tt_systemInfo !=null) {
                if(SdkUtil.tt_systemInfo.brand=='Apple'||SdkUtil.tt_systemInfo.brand=='devtools')
                if(SdkUtil.tt_systemInfo.model=='iPhone 14'||
                   SdkUtil.tt_systemInfo.model=='iPhone 14 Pro'||
                   SdkUtil.tt_systemInfo.model=='iPhone 14 Pro Max'||
                   SdkUtil.tt_systemInfo.model=='iPhone 15'||
                   SdkUtil.tt_systemInfo.model=='iPhone 15 Pro'||
                   SdkUtil.tt_systemInfo.model=='iPhone 15 Pro Max') {
                    return true
                }
            }
        }
        return false
    }

    // 自定义事件统计
    public static customEventStatistics(eventType: string, objParams?: any) {
        eventType = eventType.toString();
        if (!objParams) { objParams = {}; }
        // console.log({'eventType': eventType},{'objParams': objParams});
        if (this.platform === 'wx') {
            //@ts-ignore
            if (window['wx'] && window['wx']['aldSendEvent']) {
                //@ts-ignore 
                window.wx['aldSendEvent'](eventType, objParams);
            }
        }
        //@ts-ignore
        if (this.platform === 'cocos' && window.cocosAnalytics && window.cocosAnalytics.isInited()) {
            console.log("###统计", eventType, objParams);
            //@ts-ignore
            window.cocosAnalytics.CACustomEvent.onStarted(eventType, objParams);
        }
    }

    // 检测显示添加桌面
    public static checkIsShowAddDesktop():boolean {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            if(SdkUtil.tt_systemInfo.appName=='Douyin' || SdkUtil.tt_systemInfo.appName=='douyin_lite') {
                return true
            }
        }
        return false
    }

    // 分享游戏
    public static shareGame(title: string, call_back) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            call_back()
        } else if(sys.platform == sys.Platform.WECHAT_GAME) {
            title = title + '好刺激、好好玩'
        }else{
            call_back()
        }
    }
    // public static shareGame(title: string, imageUrl: string, videoPath: string) {
    //     if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
    //         if(videoPath!="") {
    //             // this.ttShareScreenRecordVideo(config.gameName,videoPath)
    //         }
    //     } else if(sys.platform == sys.Platform.WECHAT_GAME) {
    //         title = title + '好刺激、好好玩'
    //         // this.wxShare(title, imageUrl)
    //     }
    // }

    // 获取广告id
    public static getAdId(ad_type = config.AD_TYPE.UNKNOWN):string {
        let ad_id = ""
        // if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
        //     if(ad_type == config.AD_TYPE.RE_LIFE) {
        //         ad_id = config.TT_REWARD.RE_LIFE
        //     } else if (ad_type == config.AD_TYPE.ANSWER) {
        //         ad_id = config.TT_REWARD.ANSWER
        //     } else if (ad_type == config.AD_TYPE.LOOK_TIPS) {
        //         ad_id = config.TT_REWARD.LOOK_TIPS
        //     } else if (ad_type == config.AD_TYPE.UN_LOCK_24) {
        //         ad_id = config.TT_REWARD.UN_LOCK_24
        //     } else if (ad_type == config.AD_TYPE.UN_LOCK) {
        //         ad_id = config.TT_REWARD.UN_LOCK
        //     } else if (ad_type == config.AD_TYPE.ADD_TIME) {
        //         ad_id = config.TT_REWARD.ADD_TIME
        //     }
        // } else if (sys.platform == sys.Platform.WECHAT_GAME) {
        //     if(ad_type == config.AD_TYPE.RE_LIFE) {
        //         ad_id = config.WX_REWARD.RE_LIFE
        //     } else if (ad_type == config.AD_TYPE.ANSWER) {
        //         ad_id = config.WX_REWARD.ANSWER
        //     } else if (ad_type == config.AD_TYPE.LOOK_TIPS) {
        //         ad_id = config.WX_REWARD.LOOK_TIPS
        //     } else if (ad_type == config.AD_TYPE.UN_LOCK_24) {
        //         ad_id = config.WX_REWARD.UN_LOCK_24
        //     } else if (ad_type == config.AD_TYPE.UN_LOCK) {
        //         ad_id = config.WX_REWARD.UN_LOCK
        //     } else if (ad_type == config.AD_TYPE.ADD_TIME) {
        //         ad_id = config.WX_REWARD.ADD_TIME
        //     }
        // }
        return ad_id
    }
    
    // 显示激励视频广告
    public static showVideoAd(_adUnitId: string, call_back) {
        call_back()
    }

    // 抖音添加快捷键(目前仅支持:抖音(Douyin) 和 抖音极速版(douyin_lite))
    public static ttAddShortcut(onSuccess:Function = null, onFail:Function = null) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            if(SdkUtil.tt_systemInfo.appName=='Douyin'||SdkUtil.tt_systemInfo.appName=='douyin_lite') {
                if(SdkUtil.tt_systemInfo.brand=='Apple') {
                    tt.addShortcut({
                        success() {
                            console.log("添加桌面成功");
                            onSuccess && onSuccess(null)
                        },
                        fail(err) {
                            console.log("添加桌面失败", err.errMsg);
                            onFail && onFail(err)
                        },
                    });
                } else if(SdkUtil.tt_systemInfo.brand=='Android') {
                    // 检测只支持安卓
                    tt.checkShortcut({
                        success(res) {
                            console.log("检查快捷方式", res.status);
                            if(res.status.exist==false||res.status.needUpdate==true) {
                                tt.addShortcut({
                                    success() {
                                        console.log("添加桌面成功");
                                        onSuccess && onSuccess(null)
                                    },
                                    fail(err) {
                                        console.log("添加桌面失败", err.errMsg);
                                        onFail && onFail(err)
                                    },
                                });
                            }
                        },
                        fail(err) {
                            console.log("检查快捷方式失败", err.errMsg);
                            onFail && onFail(err)
                        },
                    });
                }   
            }
        }
    }

    // 抖音注册信息
    public static ttRegisterInfo() {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.onShow((res) => {
                console.log('tt.onShow =', res)
                // console.log('res=',res)
                if(res.scene == '021036' || res.scene == '101036') {
                    SdkUtil.tt_isToEnterFromSidebar = true
                }
                if(res.scene.launch_from == 'homepage' && res.scene.location == 'sidebar_card') {
                    SdkUtil.tt_isToEnterFromSidebar = true
                }
            });
            tt.onHide(()=>{
                console.log('tt.onHide')
                if(SdkUtil.isLookAd==false) {
                    // statisticsManager.uploadRecordUserLevel(false)
                }
            })
            
            tt.checkScene({
                scene: "sidebar",
                success: (res) => {
                    console.log("check scene success: ", res.isExist);
                    if(res.isExist != undefined || res.isExist != null) {
                        SdkUtil.tt_isSupportSidebar = res.isExist
                    }
                },
                fail: (res) => {
                    console.log("check scene fail:", res);
                }
            });

            let options = tt.getLaunchOptionsSync()
            console.log('getLaunchOptionsSync=', options)
            if(options.scene == '021036' || options.scene == '101036') {
                SdkUtil.tt_isToEnterFromSidebar = true
            }
        }
    }

    // 抖音检测是否显示奖励
    public static ttCheckSceneShowRewards():boolean {
        return SdkUtil.tt_isSupportSidebar
    }

    // 抖音检测是否从侧边栏进入
    public static ttCheckToEnterFromSidebar():boolean {
        return SdkUtil.tt_isToEnterFromSidebar
    }

    // 抖音导航到侧边栏场景
    public static ttNavToSidebarScene() {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.navigateToScene({
                scene: "sidebar",
                success: (res) => {
                    // console.log("navigate to scene success");
                },
                fail: (res) => {
                    // console.log("navigate to scene fail: ", res);
                },
            });
        }
    }

    // 抖音开启屏幕录制
    public static ttStartScreenRecording() {
        if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME) {
            return
        }

        if(this.tt_systemInfo.platform == 'devtools') {
            console.log('抖音模拟器')
            return
        }

        if(this.tt_isRecording==true) {
            this.ttStopScreenRecording()
        }
        
        if(!this.tt_gameRecorder) {
            this.tt_gameRecorder = tt.getGameRecorderManager()
        }
        this.tt_gameRecorder.start({duration: this.tt_totalRecord})
        this.tt_gameRecorder.onStart(()=> {
            this.tt_isRecording = true
            // console.log('GameRecorder onStart onStart onStart')
        })
        this.tt_gameRecorder.onStop((res)=> {
            // console.log('GameRecorder onStop onStop onStop=',res)
            this.tt_isRecording = false
            this.tt_recordVideoPath = res.videoPath
        })
        this.tt_gameRecorder.onError((e)=> {
            console.log('ttGameRecord error:',e)
        })
        
    }

    // 抖音关闭屏幕录制
    public static ttStopScreenRecording(isClearVideoPath:boolean = false) {
        if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME) {
            return
        }

        if(this.tt_gameRecorder == null) {
            return
        }

        if(isClearVideoPath) {
            this.tt_recordVideoPath = "";
        }
        
        this.tt_gameRecorder.stop()        
    }

    // 抖音获取屏幕录制视频文件
    public static ttGetScreenRecordingVideoPath():string {
        return this.tt_recordVideoPath;
    }

    // 抖音分享屏幕录制视频
    private static ttShareScreenRecordVideo(title: string, videoPath: string, onSuccess: Function = null, onFail: Function = null) {
        // tt.shareAppMessage({
        //     title: title,
        //     templateId: config.TT_SHARE_TEMPLATEID,
        //     channel: "video",
        //     extra: {
        //         videoTopics: [config.gameName],
        //         hashtag_list: ['小游戏','小程序'],
        //         videoPath: videoPath,
        //         withVideoId: true,
        //     },
        //     success: (res) => {
        //         console.log('抖音分享屏幕录制视频,成功=',res)
        //         onSuccess && onSuccess();
        //     },
        //     fail: (e) => {
        //         // 当前今日头条ios无法获得分享成功回调 if(res.platform === 'ios' && res.appName === 'Toutiao')
        //         console.log('抖音分享屏幕录制视频,失败=',e)
        //         onFail && onFail()
        //     }
        // })
    }

    public static getUserInfo(call){
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.getUserInfo({
                // withCredentials: true,
                // withRealNameAuthenticationInfo: true,
                success(res) {
                  console.log(`getUserInfo 调用成功`, res.userInfo);
                  call(res.userInfo)
                },
                fail(res) {
                  console.log(`getUserInfo 调用失败`, res.errMsg);
                },
              });
        }else{
            call(null)
        }
    }

    public static login(call){
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.login({
                force: true,
                success(res) {
                  console.log(`login 调用成功${res.code} ${res.anonymousCode}`);
                  call({"code":res.code,"anonymousCode":res.anonymousCode})
                },
                fail(res) {
                  console.log(`login 调用失败`);
                  call(null)
                },
              });
              
        }else{
            call(null)
        }
    }

    public static vibrateShort(){
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.vibrateShort({
                success(res) {
                //   console.log(`${res}`);
                },
                fail(res) {
                //   console.log(`vibrateShort调用失败`);
                },
              });
        }
          
    }

}
