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