修改吃牌各方法的调用顺序
This commit is contained in:
parent
b6a90db867
commit
93bea66c12
@ -9,8 +9,8 @@
|
||||
"debug": "node --require ts-node/register --inspect src/index.ts",
|
||||
"dev": "DEBUG=colyseus:*,jc:* node --require ts-node/register --inspect src/index.ts",
|
||||
"dev:less": "DEBUG=colyseus:command,jc:* node --require ts-node/register --inspect=0.0.0.0:9229 src/index.ts",
|
||||
"dev:jc": "DEBUG=jc:* node --require ts-node/register --inspect=0.0.0.0:9229 src/index.ts",
|
||||
"dev:robot": "DEBUG=jc:* node --require ts-node/register --inspect=0.0.0.0:9228 src/robot.ts",
|
||||
"dev:jc": "DEBUG=jc:* node --require ts-node/register src/index.ts",
|
||||
"dev:robot": "DEBUG=jc:* node --require ts-node/register src/robot.ts",
|
||||
"loadtest": "colyseus-loadtest loadtest/example.ts --room my_room --numClients 3",
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"robot": "node --require ts-node/register --inspect=0.0.0.0:9228 src/robot.ts"
|
||||
|
@ -5,7 +5,7 @@ import {Client} from "colyseus";
|
||||
import {NextSubCommand} from "./NextSubCommand";
|
||||
import {GameStateConst} from "../../constants/GameStateConst";
|
||||
import {GameEnv} from "../../cfg/GameEnv";
|
||||
import {debugRoom} from "../../common/Debug";
|
||||
import {debugRoom, error} from "../../common/Debug";
|
||||
import {TurnEndCommand} from "./TurnEndCommand";
|
||||
import {Card} from "../schema/Card";
|
||||
import {Wait} from "./Wait";
|
||||
@ -28,20 +28,24 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
|
||||
this.room.send(client,'discard_card_s2c', {errcode: 1, errmsg: 'player不存在'});
|
||||
return;
|
||||
}
|
||||
if (!gameUtil.checkCardsExists(player.cards, cards)) {
|
||||
this.room.send(client,'discard_card_s2c', {errcode: 2, errmsg: '要出的牌在手牌中不存在'});
|
||||
return;
|
||||
let tmpCards = [];
|
||||
for (let id of cards) {
|
||||
if (player.cards.has(id + '')) {
|
||||
if (!player.cards.get(id + '').number) {
|
||||
error(`${player.id} 的手牌 ${id} 数据有问题`);
|
||||
}
|
||||
tmpCards.push(player.cards.get(id + ''));
|
||||
} else {
|
||||
error(`${player.id} 出的牌 ${id} 在手牌中不存在`)
|
||||
this.room.send(client,'discard_card_s2c', {errcode: 2, errmsg: `要出的牌 ${id} 在手牌中不存在`});
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (this.state.currentTurn != client.sessionId) {
|
||||
this.room.send(client,'discard_card_s2c', {errcode: 3, errmsg: '不是当前轮'});
|
||||
return;
|
||||
}
|
||||
let tmpCards = [];
|
||||
for (let id of cards) {
|
||||
if (player.cards.has(id + '')) {
|
||||
tmpCards.push(player.cards.get(id + ''));
|
||||
}
|
||||
}
|
||||
|
||||
if (!gameUtil.checkDiscard(tmpCards, new GameEnv().selfEatCount)) {
|
||||
this.room.send(client,'discard_card_s2c', {errcode: 4, errmsg: '出牌不符合规则'});
|
||||
return;
|
||||
@ -80,11 +84,11 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
|
||||
}
|
||||
} else {
|
||||
let cardArr: Card[] = [...this.state.cards.values()];
|
||||
this.room.battleMan.onCardLinkOver(player, cardArr);
|
||||
this.state.updateGameState(GameStateConst.STATE_PICK_PET);
|
||||
let self = this;
|
||||
this.room.send(client,'eat_card_s2c', {player: player.id, errcode: 0, errmsg: ''});
|
||||
this.room.battleMan.onCardLinkOver(player, cardArr);
|
||||
let time = new GameEnv().playerActTime * 1000 + player.extraTime;
|
||||
this.state.updateGameState(GameStateConst.STATE_PICK_PET);
|
||||
// 开启选随从计时, 计时结束后结束当前轮
|
||||
let timeOverSelectPet = function () {
|
||||
player.extraTime = 0;
|
||||
|
@ -80,28 +80,26 @@ export class EatConfirmCommand extends Command<CardGameState, { timeUp: boolean
|
||||
player.cardSet.delete(id + '');
|
||||
}
|
||||
let cardArr: Card[] = [...this.state.cards.values()];
|
||||
this.state.updateGameState(GameStateConst.STATE_PICK_PET);
|
||||
let time = new GameEnv().playerActTime * 1000 + player.extraTime;
|
||||
let self = this;
|
||||
|
||||
// 开启选随从计时, 计时结束后结束当前轮
|
||||
let timeOverSelectPet = function () {
|
||||
player.extraTime = 0;
|
||||
debugRoom('选随从或者法术时间到, 自动出牌, 自动进入下一轮');
|
||||
self.room.dispatcher.dispatch(new TurnEndCommand());
|
||||
}
|
||||
self.room.beginSchedule(time, timeOverSelectPet, `select_pet`);
|
||||
|
||||
let fromPlayer = this.state.players.get(this.state.currentTurn);
|
||||
// 成功后广播吃牌成功消息
|
||||
let client = this.room.getClient(player.id);
|
||||
this.room.broadcast('eat_card_s2c', {player: player.id, errcode: 0, errmsg: ''}, {except: client});
|
||||
this.room.send(client,'eat_card_s2c', {player: player.id, errcode: 0, errmsg: ''});
|
||||
if (fromPlayer.id !== player.id) {
|
||||
this.room.battleMan.onCardLinkOver(player, cardArr, fromPlayer);
|
||||
} else {
|
||||
this.room.battleMan.onCardLinkOver(player, cardArr);
|
||||
}
|
||||
// 成功后广播吃牌成功消息
|
||||
let client = this.room.getClient(player.id);
|
||||
this.room.broadcast('eat_card_s2c', {player: player.id, errcode: 0, errmsg: ''}, {except: client});
|
||||
this.room.send(client,'eat_card_s2c', {player: player.id, errcode: 0, errmsg: ''});
|
||||
// 开启选随从计时, 计时结束后结束当前轮
|
||||
this.state.updateGameState(GameStateConst.STATE_PICK_PET);
|
||||
// 向其他玩家发送吃卡失败的消息
|
||||
for (let [key, val] of tmpActionMap) {
|
||||
if (typeof val != 'number' && key !== player.id) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user