diff --git a/src/rooms/commands/SelectPetCommand.ts b/src/rooms/commands/SelectPetCommand.ts index d5ae8fb..9bd82ec 100644 --- a/src/rooms/commands/SelectPetCommand.ts +++ b/src/rooms/commands/SelectPetCommand.ts @@ -4,6 +4,7 @@ import {Client} from "colyseus"; import {TurnEndCommand} from "./TurnEndCommand"; import {singleton} from "../../common/Singleton"; import {GameEnv} from "../../cfg/GameEnv"; +import gameUtil from "../../utils/game.util"; /** * 选择随从或者法术 @@ -21,37 +22,28 @@ export class SelectPetCommand extends Command, countMap: Map) { let total = 0; - let tmpArr:number[][] = []; + let tmpArr: number[][] = []; for (let data of weightArr) { total += data[1]; tmpArr.push([data[0], total]); @@ -55,7 +55,7 @@ let gameUtil = { let num = Math.random() * total; let effid; for (let data of tmpArr) { - if (data[1] >= num ) { + if (data[1] >= num) { let count = countMap.has(data[0]) ? countMap.get(data[0]) : 0; if (count < effCfgMap.get(data[0]).count) { effid = effCfgMap.get(data[0]).id; @@ -125,14 +125,32 @@ let gameUtil = { * @param count */ removeCard(player: Player, count: number): Card[] { - let cards = []; - let cardArr: Card[] = [...player.cards.values()]; - cards = arrUtil.randomGet(cardArr, count); - for (let card of cards) { - player.cards.delete(card.id + ''); - player.cardSet.delete(card.id + ''); - } - return cards; + let cards = []; + let cardArr: Card[] = [...player.cards.values()]; + cards = arrUtil.randomGet(cardArr, count); + this.deleteCardFromPlayer(player, cards); + return cards; + }, + /** + * 从玩家手牌中删除指定的卡 + * @param player + * @param cards + */ + deleteCardFromPlayer(player: Player, cards: Card[] | string[] | number[]) { + for (let card of cards) { + let cardId = ''; + if (typeof card == 'string') { + cardId = card; + } else if (typeof card == 'number') { + cardId = card + ''; + } else { + cardId = (card as Card).id + ''; + } + if (player.cards.has(cardId)) { + player.cards.delete(cardId); + player.cardSet.delete(cardId); + } + } }, /** * 往玩家的卡组里添加卡