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; } } });