完善不同模式下卡组的生成
This commit is contained in:
parent
f7517f16bc
commit
94ac572a64
@ -7,8 +7,8 @@ export class SystemCardCfg implements Cfg {
|
|||||||
public point: number;
|
public point: number;
|
||||||
public weight: string;
|
public weight: string;
|
||||||
public weightArr: number[][];
|
public weightArr: number[][];
|
||||||
public baseUsage: boolean;
|
public primaryaccess: number;
|
||||||
public advUsage: boolean;
|
public intermediateaccess: number;
|
||||||
public decode(data: any) {
|
public decode(data: any) {
|
||||||
this.id = data.id;
|
this.id = data.id;
|
||||||
this.type_id = data.type_id;
|
this.type_id = data.type_id;
|
||||||
@ -21,7 +21,7 @@ export class SystemCardCfg implements Cfg {
|
|||||||
let subArr = str.split(':');
|
let subArr = str.split(':');
|
||||||
this.weightArr.push([parseInt(subArr[0]), parseInt(subArr[1])]);
|
this.weightArr.push([parseInt(subArr[0]), parseInt(subArr[1])]);
|
||||||
}
|
}
|
||||||
this.baseUsage = !!data.primaryaccess
|
this.primaryaccess = data.primaryaccess
|
||||||
this.advUsage = !!data.intermediateaccess
|
this.intermediateaccess = data.intermediateaccess
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,17 +24,17 @@ let gameUtil = {
|
|||||||
let countMap: Map<number, number> = new Map()
|
let countMap: Map<number, number> = new Map()
|
||||||
let localId = beginNum
|
let localId = beginNum
|
||||||
for (let [, cfg] of numCfgMap) {
|
for (let [, cfg] of numCfgMap) {
|
||||||
if ((advMode && cfg.advUsage) || (!advMode && cfg.baseUsage)) {
|
let count = advMode ? cfg.intermediateaccess : cfg.primaryaccess
|
||||||
for (let i = 0; i < cfg.count; i++) {
|
|
||||||
let [effid, effType] = this.getRandomEffect(cfg.weightArr, effCfgMap, countMap)
|
for (let i = 0; i < count; i++) {
|
||||||
let type = cfg.type_id
|
let [effid, effType] = this.getRandomEffect(cfg.weightArr, effCfgMap, countMap, advMode)
|
||||||
// 如果效果的type_id为11, 说明是自选随从卡, 则将card的type改为11
|
let type = cfg.type_id
|
||||||
if (effType == EffectType.variable_unit) {
|
// 如果效果的type_id为11, 说明是自选随从卡, 则将card的type改为11
|
||||||
type = CardType.variable_unit
|
if (effType == EffectType.variable_unit) {
|
||||||
}
|
type = CardType.variable_unit
|
||||||
let card = new Card(localId++, cfg.point, type, effid)
|
|
||||||
cards.push(card)
|
|
||||||
}
|
}
|
||||||
|
let card = new Card(localId++, cfg.point, type, effid)
|
||||||
|
cards.push(card)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,13 +106,23 @@ let gameUtil = {
|
|||||||
* @param weightArr 配表中的权重列表
|
* @param weightArr 配表中的权重列表
|
||||||
* @param effCfgMap 配表中的所有效果卡的配置
|
* @param effCfgMap 配表中的所有效果卡的配置
|
||||||
* @param countMap 当前已生成的效果卡数量
|
* @param countMap 当前已生成的效果卡数量
|
||||||
|
* @param advMode
|
||||||
*/
|
*/
|
||||||
getRandomEffect(weightArr: number[][], effCfgMap: Map<number, EffectCardCfg>, countMap: Map<number, number>): number[] {
|
getRandomEffect(weightArr: number[][], effCfgMap: Map<number, EffectCardCfg>, countMap: Map<number, number>, advMode: boolean): number[] {
|
||||||
let total = 0
|
let total = 0
|
||||||
let tmpArr: number[][] = []
|
let tmpArr: number[][] = []
|
||||||
for (let data of weightArr) {
|
for (let data of weightArr) {
|
||||||
total += data[1]
|
// 把配表中不希望在该模式下使用的卡剔除
|
||||||
tmpArr.push([data[0], total])
|
let effid = data[0]
|
||||||
|
let effCfg = effCfgMap.get(effid)
|
||||||
|
if (!effCfg) {
|
||||||
|
error(`config of ${effid} not found`)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ((advMode && effCfg.intermediateaccess) || (!advMode && effCfg.primaryaccess)) {
|
||||||
|
total += data[1]
|
||||||
|
tmpArr.push([effid, total])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let num = Math.random() * total
|
let num = Math.random() * total
|
||||||
let effid
|
let effid
|
||||||
|
Loading…
x
Reference in New Issue
Block a user