✨ feat(共鸣系统): 新增
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user