From 204f4fec3e865e9256b6e6539b0cb55c5b58661b Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 14 Dec 2020 17:46:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8D=A1=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=E8=BF=94=E5=9B=9E=E7=94=9F=E6=88=90=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/global.d.ts | 5 +++-- src/rooms/RoomExtMethod.ts | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/global.d.ts b/src/global.d.ts index 45e7bd7..795ad78 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -234,11 +234,12 @@ declare module "colyseus" { count: number, effectId: number, fromplayer?: string | Player, - options?: any}): void; + options?: any}): number; /** * 添加一个机器人 + * @param playerId */ - addRobot():void; + addRobot(playerId?: string):void; } } diff --git a/src/rooms/RoomExtMethod.ts b/src/rooms/RoomExtMethod.ts index 1f0e7cf..8752426 100644 --- a/src/rooms/RoomExtMethod.ts +++ b/src/rooms/RoomExtMethod.ts @@ -162,20 +162,24 @@ Object.defineProperties(Room.prototype, { */ generateCard: { value: function ({player, count, effectId, fromplayer, options} - : {player: string | Player, count: number, effectId: number, fromplayer?: string | Player, options?: any}): void { + : {player: string | Player, count: number, effectId: number, fromplayer?: string | Player, options?: any}): number { let tmpCards = []; - for (let i = 0; i < count; i++) { - let cardId = 1000 + (this.state.maxCardId ++ ); - let card = gameUtil.generateCardWithEffect(effectId, cardId, options); - tmpCards.push(card); - } - + let maxCount = singleton(GameEnv).maxCardNum; let dstplayer; if (typeof player == 'string') { dstplayer = this.state.players.get(player); } else { dstplayer = player; } + let realCount = Math.min(count, maxCount - dstplayer.cards.size); + + for (let i = 0; i < realCount; i++) { + let cardId = 1000 + (this.state.maxCardId ++ ); + let card = gameUtil.generateCardWithEffect(effectId, cardId, options); + tmpCards.push(card); + } + + let sourcePlayer; if (typeof fromplayer == 'string') { sourcePlayer = this.state.players.get(fromplayer); @@ -197,6 +201,7 @@ Object.defineProperties(Room.prototype, { source: 1 }; this.bDrawCard(bData, {except: client}); + return realCount; } } });