| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /*
- * @Author: dgflash
- * @Date: 2022-04-15 14:44:04
- * @LastEditors: mojunshou 1637302775@qq.com
- * @LastEditTime: 2025-03-19 15:05:36
- */
- import { _decorator, Component, game, sys } from "cc";
- import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops";
- import { UIID } from "../../common/config/GameUIConfig";
- import { Hot, HotOptions } from "./Hot";
- import { LoadingViewComp } from "./LoadingViewComp";
- import { tips } from "../../common/tips/TipsManager";
- const { ccclass, property } = _decorator;
- /** 热更新界面控制脚本 */
- @ccclass('HotUpdate')
- export class HotUpdate extends Component {
- /** 热更新业务管理对象 */
- private hot = new Hot();
- /** 公用加载界面UI做更新提示 */
- private lv: LoadingViewComp = null!;
- onLoad() {
- if (sys.isNative) {
- this.lv = this.getComponent(LoadingViewComp)!;
- this.lv.data.prompt = oops.language.getLangByID("update_tips_check_update");
- this.startHotUpdate();
- }
- }
- /** 开始热更新 */
- private startHotUpdate() {
- let options = new HotOptions();
- options.onVersionInfo = (data: any) => {
- // console.log(`【热更新界面】本地版本:${data.local},远程版本:${data.server}`);
- };
- options.onUpdateProgress = (event: jsb.EventAssetsManager) => {
- // 进度提示字
- let pc = event.getPercent();
- let _total = event.getTotalBytes();
- let _have = event.getDownloadedBytes();
- let total: string, have: string;
- if (_total < 1048576) { // 小于1m,就显示kb
- _total = Math.ceil(_total / 1024)
- total = _total + 'K'
- }
- else { // 显示m
- total = (_total / (1024 * 1024)).toFixed(1);
- total = total + 'M'
- }
- if (_have < 1048576) { // 小于1m,就显示kb
- _have = Math.ceil(_have / 1024)
- have = _have + 'K'
- }
- else { // 显示m
- have = (_have / (1024 * 1024)).toFixed(1);
- have = have + 'M'
- }
- if (total == '0K') {
- this.lv.data.prompt = oops.language.getLangByID("update_tips_check_update");
- }
- else {
- this.lv.data.prompt = oops.language.getLangByID("update_tips_update") + have + '/' + total + ' (' + parseInt(pc * 100 + "") + '%)';
- }
- // 进度条
- if (!isNaN(event.getPercent())) {
- this.lv.data.finished = event.getDownloadedFiles();
- this.lv.data.total = event.getTotalFiles();
- this.lv.data.progress = (event.getPercent() * 100).toFixed(2);
- }
- };
- options.onNeedToUpdate = (data: any, totalBytes: number) => {
- this.lv.data.prompt = oops.language.getLangByID("update_tips_new_version");
- let total: string = "";
- if (totalBytes < 1048576) { // 小于1m,就显示kb
- // totalBytes = Math.ceil(totalBytes / 1024);
- // total = total + 'KB';
- total = Math.ceil(totalBytes / 1024) + 'KB';
- }
- else {
- total = (totalBytes / (1024 * 1024)).toFixed(1);
- total = total + 'MB';
- }
- // 提示更新
- this.checkForceUpdate(() => {
- // 非 WIFI 环境提示玩家
- this.showUpdateDialog(total, () => {
- this.hot.hotUpdate();
- })
- });
- };
- options.onNoNeedToUpdate = () => {
- this.lv.enter();
- };
- options.onUpdateFailed = () => {
- this.lv.data.prompt = oops.language.getLangByID("update_tips_update_fail");
- this.hot.checkUpdate();
- };
- options.onUpdateSucceed = () => {
- this.lv.data.progress = 100;
- this.lv.data.prompt = oops.language.getLangByID("update_tips_update_success");
- setTimeout(() => {
- game.restart();
- }, 1000);
- };
- this.hot.init(options);
- }
- /** 检查是否强制更新信息 */
- private checkForceUpdate(callback: Function) {
- let operate: any = {
- title: 'common_prompt_title_sys',
- content: "update_tips_force",
- okWord: 'common_prompt_ok',
- cancelWord: 'common_prompt_cancal',
- okFunc: () => {
- this.hot.clearHotUpdateStorage();
- callback();
- },
- cancelFunc: () => {
- game.end();
- },
- needCancel: true
- };
- oops.gui.open(UIID.Confirm, operate);
- }
- /** 非 WIFI 环境提示玩家 */
- private showUpdateDialog(size: string, callback: Function) {
- if (sys.getNetworkType() == sys.NetworkType.LAN) {
- callback();
- return;
- }
- tips.alert(oops.language.getLangByID("update_nowifi_tip") + size, callback);
- }
- }
|