import { AssetManager, director, instantiate, isValid, Node, Prefab } from "cc"; import { bundleMgr } from "../Mgr/BundleMgr"; import { resMgr } from "../Mgr/ResMgr"; export interface evt { onComClick: () => void; onGetReward: (itemId: number, count: number) => void; onViedoReward: (success: boolean) => void; onSaveGameData: (save_data: number) => void; } export interface TurnObj { itemArr: Array<{ itemId: number, count: number, weigth: number }>; total: number; } /** 主窗口 */ const mainPopup = "Turn/Prefab/Popup/turnPopup"; /** 包名 */ const bundleName = "Turn"; /** 定义一个类 */ class Ch_turn { /** 私有构造函数 */ private constructor() { } /** 单例模式 */ public static readonly instance: Ch_turn = new Ch_turn(); private _firstParent: Node | null = null; private _secondParent: Node | null = null; private _itemArr: Array<{ itemId: number, count: number, weigth: number }> = []; private _data: TurnObj = { itemArr: this._itemArr, total: 0 }; private _evt = chsdk.get_new_event(); get evt() { return this._evt; } /** * 初始化数据 * @param data */ init(total: number = 0) { // 初始化 this._data.total = total ? total : 0; } /** 公共点击事件 */ onComClick() { this.evt.emit(this.evt.key.onComClick); } /** * 获得奖励 * @param itemId */ onGetReward(itemId: number, count: number) { // console.log("获得奖励", itemId); this.evt.emit(this.evt.key.onGetReward, itemId, count); } /** * 看视频广告 */ onViedoReward(success: boolean) { this.evt.emit(this.evt.key.onViedoReward, success); } /** * 保存游戏数据 * @param save_data */ onSaveGameData(total: number) { this._data.total = total; this.evt.emit(this.evt.key.onSaveGameData, total); } /** * 获取内部父节点 * @returns */ getInterParent() { return this._secondParent; } /** * 获取游戏数据 */ getGameData() { return this._data; } /** * 清空数据 */ protected clear() { this._data.total = 0; } /** * 加载分包 * @param preogerss * @param onComplete */ loadBundle(preogerss?: (progress: number) => void, onComplete?: (err: Error | null, bundle: AssetManager.Bundle | null) => void): void { const onProgress = (progress: number) => { chsdk.log.debug(`加载进度:${progress}%`); if (preogerss) { preogerss(progress); } }; bundleMgr.getBundle(bundleName, onProgress) .then((bundle) => { if (bundle) { chsdk.log.debug('分包加载成功!'); // 在这里可以执行加载完成后的操作 if (onComplete) { onComplete(null, bundle); } } else { chsdk.log.debug('分包加载失败!'); // 这里可以执行失败后的操作 setTimeout(() => { // 这里可以尝试重新加载分包 this.loadBundle(preogerss, onComplete); }, 1000); } }) } /** * 显示主窗口 * @param parent 父节点 * @param interParent 界面父节点 */ show(parent?: Node, interParent?: Node) { this._firstParent = parent ? parent : null; this._secondParent = interParent ? interParent : null; resMgr.loadRes(mainPopup).then((prefab: Prefab) => { let node = instantiate(prefab); if (parent) { if (isValid(parent)) { node.parent = parent; } else { node.destroy(); } } else { let canvas = director.getScene().getChildByName("Canvas"); if (canvas) { node.parent = canvas; } } }); } } /** 导出单例模式的实例 */ export const ch_turn: Ch_turn = Ch_turn.instance;