feat(共鸣系统): 新增

This commit is contained in:
zhangxk
2023-10-09 15:11:54 +08:00
parent cd87b9e74c
commit 53a0b0f340
18 changed files with 1195 additions and 14 deletions

View File

@@ -16,16 +16,21 @@ export interface DicFriendShip {
// 羁绊武将ID
readonly hids: Array<number>;
// 属性加成
readonly attributes: Array<{id: number, number: number}>
readonly attributes: Array<{ id: number, number: number }>
// 升到这一级所需的羁绊值
readonly shipExp: number;
readonly index: number;
}
export const friendShips = new Map<string, { level: number, shipExp: number }[]>();
export const friendShipsByLv = new Map<string, DicFriendShip>();
export const friendShipsMax = new Map<string, number>();
export const friendShipByIndex = new Map<string, number>();
export function loadFriendShip() {
friendShips.clear();
friendShipByIndex.clear();
let arr = readFileAndParse(FILENAME.DIC_FRIEND_SHIP);
arr.forEach(o => {
@@ -33,32 +38,35 @@ export function loadFriendShip() {
o.hids = parseNumberList(o.memberId);
let key1 = `${o.actorId}_${o.shipId}`;
let shipSumValue = 0;
if(!friendShips.has(key1)) {
if (!friendShips.has(key1)) {
friendShips.set(key1, []);
shipSumValue = 0;
}
shipSumValue += o.shipExp;
friendShips.get(key1).push({ level: o.level, shipExp: shipSumValue });
if(!friendShipsMax.has(key1) || friendShipsMax.get(key1) < o.level) {
if (!friendShipsMax.has(key1) || friendShipsMax.get(key1) < o.level) {
friendShipsMax.set(key1, o.level);
}
let key2 = `${o.actorId}_${o.shipId}_${o.level}`;
friendShipsByLv.set(key2, o);
let newKey = `${o.actorId}_${o.index}`;
if (!friendShipByIndex.has(newKey)) friendShipByIndex.set(newKey, o.shipId);
});
arr = undefined;
}
function parseAttribute(str: string) {
let result = new Array<{id: number, number: number}>();
if(!str) return result;
let result = new Array<{ id: number, number: number }>();
if (!str) return result;
let decodeArr = decodeArrayListStr(str);
for(let [id, number] of decodeArr) {
if(isNaN(parseInt(id)) || isNaN(parseInt(number))) {
for (let [id, number] of decodeArr) {
if (isNaN(parseInt(id)) || isNaN(parseInt(number))) {
throw new Error('data table format wrong');
}
result.push({id: parseInt(id), number: parseInt(number)});
}
result.push({ id: parseInt(id), number: parseInt(number) });
}
return result
}

View File

@@ -0,0 +1,26 @@
import { parseGoodStr, readFileAndParse } from '../util'
import { FILENAME } from '../../consts'
import { RewardInter } from '../interface';
export interface DicResonance {
readonly id: number;
readonly name: string;
readonly openLimit: number;
readonly openConsume: RewardInter[];
}
export const dicResonance = new Map<number, DicResonance>();
export function loadResonance() {
dicResonance.clear();
let arr = readFileAndParse(FILENAME.DIC_RESONANCE);
arr.forEach(o => {
o.openConsume = parseGoodStr(o.openConsume);
dicResonance.set(o.id, o);
});
arr = undefined;
}