37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import {Command} from "@colyseus/command";
|
|
import {CardGameState} from "../schema/CardGameState";
|
|
import {GameStateConst} from "../../constants/GameStateConst";
|
|
import gameUtil from "../../utils/game.util";
|
|
import {singleton} from "../../common/Singleton";
|
|
import {GameEnv} from "../../cfg/GameEnv";
|
|
import {NextTurnCommand} from "./NextTurnCommand";
|
|
import arrUtil from "../../utils/array.util";
|
|
|
|
/**
|
|
* 开始游戏
|
|
* 1. 生成卡组
|
|
* 2. 将游戏状态改为 STATE_CHANGE_CARD
|
|
*/
|
|
export class BeginGameCommand extends Command<CardGameState, {}> {
|
|
|
|
async execute() {
|
|
this.state.maxCardId = 0;
|
|
let card0 = gameUtil.initCardQue();
|
|
let card1 = gameUtil.initCardQue();
|
|
let cardAll = card0.concat(card1);
|
|
arrUtil.randomSort(cardAll);
|
|
this.state.cardQueue = cardAll;
|
|
for (let client of this.room.clients) {
|
|
this.room.addCard(client.sessionId, singleton(GameEnv).initCardNum, 0);
|
|
}
|
|
this.state.updateGameState(GameStateConst.STATE_CHANGE_CARD);
|
|
// 超时后结束换卡, 进入下一轮
|
|
const cardChangeTime = singleton(GameEnv).cardChangeTime;
|
|
await this.delay(cardChangeTime*1000);
|
|
if (this.state.gameState == GameStateConst.STATE_CHANGE_CARD) {
|
|
return [new NextTurnCommand()];
|
|
}
|
|
}
|
|
|
|
}
|