diff --git a/src/rooms/commands/TurnEndCommand.ts b/src/rooms/commands/TurnEndCommand.ts index e0385e4..5f62705 100644 --- a/src/rooms/commands/TurnEndCommand.ts +++ b/src/rooms/commands/TurnEndCommand.ts @@ -3,6 +3,9 @@ import {CardGameState} from "../schema/CardGameState"; import {GameEnv} from "../../cfg/GameEnv"; import {PartResultCommand} from "./PartResultCommand"; import {NextTurnCommand} from "./NextTurnCommand"; +import {PlayerStateConst} from "../../constants/PlayerStateConst"; +import {Wait} from "./Wait"; +import {GameResultCommand} from "./GameResultCommand"; /** * 一轮结束 @@ -17,14 +20,30 @@ export class TurnEndCommand extends Command { this.room.battleMan.onPlayerRoundEnd(player); } } - if (this.state.currentTurn - && sessionIds.indexOf(this.state.currentTurn) == (sessionIds.length - 1)) { - // 每n轮结束的时候结算一次 - const roundNum = new GameEnv().duelRoundNum; - if (this.state.round % roundNum == (roundNum - 1)) { - return [new PartResultCommand()]; + // if (this.state.currentTurn + // && sessionIds.indexOf(this.state.currentTurn) == (sessionIds.length - 1)) { + // // 每n轮结束的时候结算一次 + // const roundNum = new GameEnv().duelRoundNum; + // if (this.state.round % roundNum == (roundNum - 1)) { + // return [new PartResultCommand()]; + // } + // } + // 判断是否胜利 + + let deadCount0 = 0; + let deadCount1 = 0; + for (let [, player] of this.state.players) { + if (player.team == 0 && player.state == PlayerStateConst.PLAYER_DEAD ) { + deadCount0 ++; + } else if (player.team == 1 && player.state == PlayerStateConst.PLAYER_DEAD ){ + deadCount1 ++; } } + const roundNum = new GameEnv().duelRoundNum; + const totalRound = roundNum * new GameEnv().maxDuelNum; + if ((deadCount0 == 2 || deadCount1 == 2) || (this.state.round >= totalRound - 1)) { // 游戏结束 + return [new GameResultCommand()]; + } return [new NextTurnCommand()] }