| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- 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<evt>();
- 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<Prefab>(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;
|