Merge branch 'master' of http://git.kingsome.cn/node/card_svr
This commit is contained in:
commit
803cd93982
@ -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<CardGameState, {client: Client,
|
||||
let moreAp = 0;
|
||||
let count = 0;
|
||||
let targetCard;
|
||||
let hasEffectSkill = this.room.battleMan.hasTransEffCardSkill(player);
|
||||
let effectRate = this.room.battleMan.getTransEffCardRate(player);
|
||||
// 检查效果卡, 并从玩家手牌中移除
|
||||
let eff_cnt = 0; // 效果卡数量
|
||||
let dbpt_cnt = 0; // 点数翻倍卡数量
|
||||
let transCount = 0;
|
||||
for (let cardId of effCards) {
|
||||
if (!player.cards.has(cardId + '')) {
|
||||
continue;
|
||||
}
|
||||
let card = player.cards.get(cardId + '');
|
||||
let needRemove = false;
|
||||
if (hasEffectSkill) {
|
||||
needRemove = true;
|
||||
if (card.type === 3) {
|
||||
dbpt_cnt ++;
|
||||
} else {
|
||||
eff_cnt ++;
|
||||
}
|
||||
if (card.type === 3) {
|
||||
dbpt_cnt ++;
|
||||
} else if (card.type === 2){
|
||||
eff_cnt ++;
|
||||
} else {
|
||||
if (card.type === 3) {
|
||||
dbpt_cnt ++;
|
||||
needRemove = true;
|
||||
} else if (card.type === 2) {
|
||||
eff_cnt ++;
|
||||
needRemove = true;
|
||||
}
|
||||
}
|
||||
if (needRemove) {
|
||||
player.cards.delete(cardId + '');
|
||||
player.cardSet.delete(cardId + '');
|
||||
transCount ++;
|
||||
}
|
||||
}
|
||||
gameUtil.deleteCardFromPlayer(player, effCards);
|
||||
if (effectRate && transCount) {
|
||||
eff_cnt += (transCount / effectRate | 0);
|
||||
}
|
||||
for (let card of this.state.cards.values()) {
|
||||
ap += card.number;
|
||||
count ++;
|
||||
|
@ -22,7 +22,7 @@ let gameUtil = {
|
||||
for (let [, cfg] of numCfgMap) {
|
||||
for (let i = 0; i < cfg.count; i++) {
|
||||
let effid = this.getRandomEffect(cfg.weightArr, effCfgMap, countMap);
|
||||
let card = new Card(localId ++, cfg.point, cfg.type_id, effid);
|
||||
let card = new Card(localId++, cfg.point, cfg.type_id, effid);
|
||||
cards.push(card);
|
||||
// if (cfg.type_id == 1) {
|
||||
// let effid = this.getRandomEffect(cfg.weightArr, effCfgMap, countMap);
|
||||
@ -47,7 +47,7 @@ let gameUtil = {
|
||||
*/
|
||||
getRandomEffect(weightArr: number[][], effCfgMap: Map<number, EffectCardCfg>, countMap: Map<number, number>) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 往玩家的卡组里添加卡
|
||||
|
Loading…
x
Reference in New Issue
Block a user