/* * @Author: dgflash * @Date: 2021-07-03 16:13:17 * @LastEditors: mojunshou 1637302775@qq.com * @LastEditTime: 2025-03-19 10:18:14 */ import { _decorator } from "cc"; 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 { ModuleUtil } from "../../../../../extensions/oops-plugin-framework/assets/module/common/ModuleUtil"; import { DemoViewComp } from "../../account/view/DemoViewComp"; import { smc } from "../../common/SingletonModuleComp"; import { UIID } from "../../common/config/GameUIConfig"; import { GameEvent } from "../../common/config/GameEvent"; import { EliminateViewComp } from "../../eliminate/view/EliminateViewComp"; 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(); } enter() { this.addEvent(); this.loadRes(); } private addEvent() { this.on(GameEvent.LoginSuccess, this.onHandler, this); } private onHandler(event: string, args: any) { switch (event) { case GameEvent.LoginSuccess: // 加载流程结束,移除加载提示界面 console.log("加载流程结束,移除加载提示界面"); this.ent.remove(LoadingViewComp); break; } } /** 加载资源,如果登录成功,再进行加载,没登录就进行登录 */ 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, DemoViewComp, UIID.Demo); await ModuleUtil.addViewUiAsync(smc.account, EliminateViewComp, UIID.Game); ModuleUtil.removeViewUi(this.ent, LoadingViewComp, UIID.Loading); // 初始化帐号模块 // smc.account.connect(); //初始化剩下的东西 //这做正式逻辑 } reset(): void { } }