玩家增加,删除卡牌添加日志
This commit is contained in:
parent
ea19b69eca
commit
92841345c7
@ -10,5 +10,7 @@ export const robotLog = debug('jc:robot');
|
||||
|
||||
export const assistLog = debug('jc:assist');
|
||||
|
||||
export const cardLog = debug('jc:card');
|
||||
|
||||
export const error = debug('jc:error');
|
||||
error.log = console.error.bind(console);
|
||||
|
@ -65,8 +65,7 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
|
||||
for (let card of tmpCards) {
|
||||
this.state.cards.set(card.id + '', card);
|
||||
player.cardQueue.push(card);
|
||||
player.cards.delete(card.id + '');
|
||||
player.cardSet.delete(card.id + '');
|
||||
gameUtil.deleteCardFromPlayer(player, card.id);
|
||||
}
|
||||
/**
|
||||
* 这说明是当前轮正常出牌,
|
||||
|
@ -6,6 +6,7 @@ import {debugRoom} from "../../common/Debug";
|
||||
import {TurnEndCommand} from "./TurnEndCommand";
|
||||
import {Player} from "../schema/Player";
|
||||
import {Card} from "../schema/Card";
|
||||
import gameUtil from "../../utils/game.util";
|
||||
|
||||
/**
|
||||
* 根据条件决定吃牌玩家, 并执行吃牌逻辑
|
||||
@ -80,8 +81,7 @@ export class EatConfirmCommand extends Command<CardGameState, { timeUp: boolean
|
||||
let card = player.cards.get(id + '').clone();
|
||||
this.state.cards.set(id + '', card);
|
||||
player.cardQueue.push(card);
|
||||
player.cards.delete(id + '');
|
||||
player.cardSet.delete(id + '');
|
||||
gameUtil.deleteCardFromPlayer(player, id);
|
||||
}
|
||||
let cardArr: Card[] = [...this.state.cards.values()];
|
||||
let time = new GameEnv().playerActTime * 1000 + player.extraTime;
|
||||
|
@ -4,7 +4,7 @@ import {Player} from "../rooms/schema/Player";
|
||||
import {BaseConst} from "../constants/BaseConst";
|
||||
import {SystemCardCfg} from "../cfg/parsers/SystemCardCfg";
|
||||
import {EffectCardCfg} from "../cfg/parsers/EffectCardCfg";
|
||||
import {error} from "../common/Debug";
|
||||
import {cardLog, error} from "../common/Debug";
|
||||
import {Room} from "colyseus";
|
||||
import {PlayerStateConst} from "../constants/PlayerStateConst";
|
||||
import {GameEnv} from "../cfg/GameEnv";
|
||||
@ -188,30 +188,36 @@ let gameUtil = {
|
||||
* @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 + '';
|
||||
}
|
||||
deleteCardFromPlayer(player: Player, cards: Card[] | string[] | number[] | number | string) {
|
||||
let deleteOne = function (cardId: string) {
|
||||
if (player.cards.has(cardId)) {
|
||||
if (cardLog.enabled) {
|
||||
let card = player.cards.get(cardId);
|
||||
cardLog(`delete: ${player.id} ${card.id} ${card.effect} ${card.type} `)
|
||||
}
|
||||
player.cards.delete(cardId);
|
||||
player.cardSet.delete(cardId);
|
||||
}
|
||||
}
|
||||
if (typeof cards == 'number' || typeof cards == 'string') {
|
||||
const cardId = cards + '';
|
||||
deleteOne(cardId);
|
||||
} else {
|
||||
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 + '';
|
||||
}
|
||||
deleteOne(cardId);
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
/**
|
||||
* 往玩家的卡组里添加卡
|
||||
* @param room
|
||||
* @param player
|
||||
* @param cards
|
||||
* @param fromplayer
|
||||
*/
|
||||
addCardToPlayer(room: Room, player: Player, cards: Card[], fromplayer?: Player) {
|
||||
pushInPlayerCards(player: Player, cards: Card[]) {
|
||||
const effectMap = global.$cfg.get(BaseConst.EFFECTCARD);
|
||||
for (let card of cards) {
|
||||
// 如果card的type == 11, 说明是自选随从卡, 则替换成玩家牌组中的卡
|
||||
@ -221,6 +227,17 @@ let gameUtil = {
|
||||
player.cards.set(card.id + '', card);
|
||||
player.cardSet.add(card.id + '');
|
||||
}
|
||||
cardLog(`add: ${player.id} ${cards.map(o => [o.id, o.effect, o.type])}`)
|
||||
},
|
||||
/**
|
||||
* 往玩家的卡组里添加卡
|
||||
* @param room
|
||||
* @param player
|
||||
* @param cards
|
||||
* @param fromplayer
|
||||
*/
|
||||
addCardToPlayer(room: Room, player: Player, cards: Card[], fromplayer?: Player) {
|
||||
this.pushInPlayerCards(player, cards);
|
||||
player.countTotal += cards.length;
|
||||
room.battleMan.onCardGetted(player, cards, fromplayer);
|
||||
},
|
||||
@ -233,21 +250,17 @@ let gameUtil = {
|
||||
changeCard(cardArr: Card[], player: Player, targetCards: Card[]): Card[] {
|
||||
const effectMap = global.$cfg.get(BaseConst.EFFECTCARD);
|
||||
let cards: Card[] = [];
|
||||
let tmpCards: Card[] = [];
|
||||
for (let card of targetCards) {
|
||||
player.cards.delete(card.id + '');
|
||||
player.cardSet.delete(card.id + '');
|
||||
tmpCards.push(card.clone());
|
||||
}
|
||||
cardArr.randomInsert(targetCards);
|
||||
this.deleteCardFromPlayer(player, targetCards);
|
||||
cardArr.randomInsert(tmpCards);
|
||||
let count = targetCards.length;
|
||||
for (let i = 0; i < count; i++) {
|
||||
let card = cardArr.pop();
|
||||
if (card.type == CardType.variable_unit && effectMap.get(card.effect).type_id == EffectType.variable_unit) {
|
||||
card.effect = this.getRandomServant(player);
|
||||
}
|
||||
cards.push(card);
|
||||
player.cards.set(card.id + '', card);
|
||||
player.cardSet.add(card.id + '');
|
||||
cards.push(cardArr.pop());
|
||||
}
|
||||
this.pushInPlayerCards(player, cards);
|
||||
return cards;
|
||||
},
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user