玩家增加,删除卡牌添加日志

This commit is contained in:
zhl 2020-12-29 11:56:57 +08:00
parent ea19b69eca
commit 92841345c7
4 changed files with 47 additions and 33 deletions

View File

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

View File

@ -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);
}
/**
* ,

View File

@ -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;

View File

@ -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;
},
/**