import { _decorator, BaseRenderData, Component, director, instantiate, Prefab, Node, assetManager } from 'cc'; import { tgxUIMgr, tgxUIWaiting } from '../../core_tgx/tgx'; import { areanMgr } from './AreanManager'; import { AreanEvent, AreanNetMgr } from './AreanNetMgr'; import { resLoader } from '../../core_tgx/base/utils/ResLoader'; import { ModuleDef } from '../../scripts/ModuleDef'; import { EFightModel, IAreanPlayer } from '../../module_basic/shared/protocols/public/arean/AreanTypeDef'; import { UserMgr } from '../../module_basic/scripts/UserMgr'; import { UserLocalCache } from '../../module_basic/scripts/UserLocalCache'; import { AreanPlayer } from './AreanPlayer'; const { ccclass, property } = _decorator; @ccclass('AreanGameScene') export class AreanGameScene extends Component { @property({ type: Node }) battleLoading: Node = null; protected onLoad(): void { this.listenEvent(); UserMgr.inst.isInGame=true; } async start() { areanMgr.initData(); tgxUIMgr.inst.closeAll(); tgxUIWaiting.show(); let gameMode = UserLocalCache.inst.fightModel; switch(gameMode){ case EFightModel.Match: this.GameBeginPush(); break; case EFightModel.Ranking: this.GameBeginPush(); break; case EFightModel.Room: if(AreanNetMgr.inst.isInGame()){ this.GameBeginPush(); }else{ this.initData(); } break; } } listenEvent() { director.on(AreanEvent.GameBegin, this.GameBeginPush, this); } GameBeginPush() { tgxUIWaiting.show(); this.battleLoading.active = true; let gameHUD = this.node.getChildByName("GameHUD"); if (gameHUD) { this.node.removeChild(gameHUD) } var bundle = assetManager.getBundle('level2'); if(bundle){ director.loadScene("scene/level2Scene"); }else{ assetManager.loadBundle("level2",()=>{ director.loadScene("scene/level2Scene"); tgxUIWaiting.hide(); }) } } async onCompleteCallback() { this.battleLoading.active = false; let gameMode = UserLocalCache.inst.fightModel; switch(gameMode){ case EFightModel.Match: case EFightModel.Ranking: await AreanNetMgr.inst.rpc_Ready(); console.log("准备2") break; case EFightModel.Room: break; } AreanNetMgr.inst.sendMsg_InBattleView(); } update(deltaTime: number) { } protected onDestroy(): void { UserMgr.inst.isInGame=false; } async initData() { resLoader.load(ModuleDef.Arean, "GameHUD", (err, prefab) => { if (err) { console.log("GameManager start err:", err); return; } if (prefab) { let node = instantiate(prefab); node.name = "GameHUD"; this.node.addChild(node); tgxUIWaiting.hide(); } }); } onPlayerComes(_player: IAreanPlayer) { if (areanMgr.player == null) { this.createPlayer(_player); } else { areanMgr.player.onPlayerDataChange(_player); } } createPlayer(player: IAreanPlayer) { let _player = new AreanPlayer(player); areanMgr.player = _player; areanMgr.playerGroup.push(_player); _player.setReady(true); } createAIPlayer(levelID: number) { } }