squidGame/tgx-games-client/assets/module_arean/scripts/AreanGameScene.ts

137 lines
3.0 KiB
TypeScript
Raw Permalink Normal View History

2025-02-07 10:49:34 +08:00
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';
2025-02-10 17:40:26 +08:00
import { AreanPlayer } from './AreanPlayer';
2025-02-07 10:49:34 +08:00
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<Prefab>(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) {
}
}