xy-server/game/battle/BattleMgr.ts
2025-04-23 09:34:08 +08:00

61 lines
1.4 KiB
TypeScript

import PlayerMgr from "../object/PlayerMgr";
import Battle from "./Battle";
import {BattleType} from "../role/EEnum";
export default class BattleMgr {
static shared=new BattleMgr();
battle_seed_id:number=10000;
battle_list:any;
constructor() {
this.battle_list = {};
}
createBattle() {
let battle = new Battle(this.battle_seed_id);
this.battle_list[this.battle_seed_id] = battle;
battle.battle_id = this.battle_seed_id;
this.battle_seed_id++;
return battle;
}
getBattle(battleid:any):Battle{
return this.battle_list[battleid];
}
destroyBattle(battleid:any) {
let battle = this.battle_list[battleid];
if (battle) {
for (const onlyid in battle.plist) {
if (battle.plist.hasOwnProperty(onlyid)) {
let player = PlayerMgr.shared.getPlayerByOnlyId(onlyid,false);
if (player) {
player.exitBattle(battle.isPlayerWin(player.onlyid));
}
}
}
battle.destroy();
}
delete this.battle_list[battleid];
}
playerOffline(battleid:any, onlyid:any) {
let battle = this.battle_list[battleid];
if (battle) {
if(battle.battle_type != BattleType.AREAN){
battle.setObjOffline(onlyid);
if (battle.checkOnlinePlayer() == false) {
this.destroyBattle(battleid);
}
}
}
}
playerBackToBattle(battleid:any, onlyid:any) {
let battle = this.battle_list[battleid];
if (battle) {
battle.setObjOnline(onlyid);
battle.backToBattle(onlyid);
}
}
}