/*
 * @Author: mojunshou 1637302775@qq.com
 * @Date: 2025-03-19 16:23:51
 * @LastEditors: mojunshou 1637302775@qq.com
 * @LastEditTime: 2025-03-28 12:03:26
 * @Description: loading界面
 */
import { _decorator, sys } from "cc";
import { DeviceUtil } from "db://oops-framework/core/utils/DeviceUtil";
import { ModuleUtil } from "db://oops-framework/module/common/ModuleUtil";
import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCVMParentComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCVMParentComp";
import { AndroidEvent } from "../../common/config/AndroidEvent";
import { UIID } from "../../common/config/GameUIConfig";
import { AndroidMessageCenter } from '../../common/manager/AndroidMessageCenter';
import { smc } from "../../common/SingletonModuleComp";
import { EliminateViewComp } from "../../eliminate/view/EliminateViewComp";
import { GameView } from "../../eliminate/view/GameView";

const { ccclass, property } = _decorator;

/** 游戏资源加载 */
@ccclass('LoadingViewComp')
@ecs.register('LoadingView', false)
export class LoadingViewComp extends CCVMParentComp {
    /** VM 组件绑定数据 */
    data: any = {
        /** 加载资源当前进度 */
        finished: 0,
        /** 加载资源最大进度 */
        total: 0,
        /** 加载资源进度比例值 */
        progress: "0",
        /** 加载流程中提示文本 */
        prompt: ""
    };

    private progress: number = 0;

    start() {
        this.enter();
        this.setButton();

        // 初始化安卓消息处理中心
        AndroidMessageCenter.getInstance().init();
    }

    enter() {
        this.addEvent();
        //查看缓存有没有同意过
        // let data = sys.localStorage.getItem("agree");
        // if (!data) {
        //     //打开温馨提示
        //     oops.gui.open(UIID.KindTips);
        //     return;
        // }
        // //有没有登录过
        // let loginData = sys.localStorage.getItem("login");
        // if (!loginData) {
        //     //显示微信登录按钮
        //     // this.showWxLogin();
        // } else {
        //     //登录了就加载
        //     this.loadRes();
        // }
        // if (!DeviceUtil.isNative) {
        //     this.loadRes();
        // } else {

        // }
        this.loadRes();
    }



    private addEvent() {
        this.on(AndroidEvent.AgreePrivacy, this.onAgreePrivacy, this);

    }

    private onAgreePrivacy() {
        console.log("同意隐私协议");
        sys.localStorage.setItem("agree", "true");
        oops.gui.remove(UIID.KindTips);
        //如果是客户端就显示微信登录按钮
        this.loadRes();
    }

    /** 加载资源 */
    private async loadRes() {
        this.data.progress = 0;
        await this.loadCustom();
        this.loadGameRes();
    }

    /** 加载游戏本地JSON数据（自定义内容） */
    private loadCustom() {
        // 加载游戏本地JSON数据的多语言提示文本
        this.data.prompt = oops.language.getLangByID("loading_load_json");
    }

    /** 加载初始游戏内容资源 */
    private loadGameRes() {
        // 加载初始游戏内容资源的多语言提示文本
        this.data.prompt = oops.language.getLangByID("loading_load_game");
        oops.res.loadDir("game", this.onProgressCallback.bind(this), this.onCompleteCallback.bind(this));
    }

    /** 加载进度事件 */
    private onProgressCallback(finished: number, total: number, item: any) {
        this.data.finished = finished;
        this.data.total = total;

        var progress = finished / total;
        if (progress > this.progress) {
            this.progress = progress;
            this.data.progress = (progress * 100).toFixed(2);
        }
    }

    /** 加载完成事件 */
    private async onCompleteCallback() {
        // 获取用户信息的多语言提示文本
        this.data.prompt = oops.language.getLangByID("loading_load_player");
        await ModuleUtil.addViewUiAsync(smc.account, EliminateViewComp, UIID.Eliminate);
        // oops.gui.open(UIID.Game);
        ModuleUtil.removeViewUi(this.ent, LoadingViewComp, UIID.Loading);
    }


    /**
     * @description: 微信登录
     * @return {*}
     */
    private btn_wxlogin() {
        //跟安卓交互

    }

    reset(): void { }
}