装备:升星

This commit is contained in:
luying
2022-02-16 13:19:58 +08:00
parent db31f3344f
commit 862c3f4d65
11 changed files with 1038 additions and 746 deletions

View File

@@ -11,34 +11,33 @@ export interface DicEquipSuit {
readonly equips: number[];
// 按星级可解锁的属性
readonly effect: { star: number, seid: number }[];
// 解锁条件索引
readonly effectCondition: Map<number, number>
}
export const dicEquipSuit = new Map<number, DicEquipSuit>();
export const dicEquipSuitByJobClass = new Map<number, number>();
export function loadEquipSuit() {
dicEquipSuit.clear();
let arr = readFileAndParse(FILENAME.DIC_EQUIP);
dicEquipSuitByJobClass.clear();
let arr = readFileAndParse(FILENAME.DIC_EQUIP_SUIT);
arr.forEach(o => {
o.equips = parseNumberList(o.equips);
parseRandomEffect(o, o.effect);
dicEquipSuit.set(o.jobClass, o);
o.effect = parseEffect(o.effect);
dicEquipSuit.set(o.id, o);
dicEquipSuitByJobClass.set(o.jobClass, o.id);
});
arr = undefined;
}
function parseRandomEffect(o: any, str: string) {
if (!str) return null;
function parseEffect(str: string) {
let result = new Array<{star: number, seid: number}>();
if(!str) return result;
let decodeArr = decodeArrayListStr(str);
let effect: number[] = [], effectCondition = new Map<number, number>();
for (let [star, seid] of decodeArr) {
if (isNaN(parseInt(star)) || isNaN(parseFloat(seid))) {
for(let [star, seid] of decodeArr) {
if(isNaN(parseInt(star)) || isNaN(parseInt(seid))) {
throw new Error('data table format wrong');
}
effect.push(parseInt(seid));
effectCondition.set(parseInt(seid), parseInt(star));
result.push({star: parseInt(star), seid: parseInt(seid)});
}
o.effect = effect;
o.effectCondition = effectCondition;
return result
}