Files
ZYZ/shared/pubUtils/dictionary/DicWarJson.ts
2021-11-02 10:16:50 +08:00

88 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 关卡表
import {decodeArrayListStr, parseNumberList, readWarJsonFileAndParse} from '../util'
export interface DicWarJson {
// 关卡id
readonly warId: number;
// 武将编号
readonly actorId: number;
// 武将名字
readonly actorName: string;
// 战场中指向该角色的唯一代码
readonly dataId: number;
// 角色属于我方/敌方/友军
readonly relation: number;
// 上阵时的方向
readonly dirction: number;
// 客户端存入数组的顺序
readonly outIndex: number;
// x坐标
readonly x: number;
// y坐标
readonly y: number;
// 剧本中调用角色时的变量
readonly var: number;
// 角色等级
readonly lv: number;
// 是否隐藏
readonly hide: number;
// 角色使用的AI类型
readonly initial_ai: number;
// 属性
readonly attribute: {id: number, val: number}[];
// 武将技能
readonly skill: string;
// 武将被动技能
readonly seid: string;
// 角色星级
readonly star: number;
// s动画
readonly spine: string;
// boss阶段
readonly bossStage: number;
// 敌人是小boss还是大boss和gateActivityPoint的id相对应
readonly enemyType: number;
// 召唤技能的召唤物
readonly callSkillData: string;
// 敌军数量
readonly enemyCount: number;
// pvp中随机敌军
readonly randomEnemy: number[];
}
export const dicWarJson = new Map<number, Array<DicWarJson>>();
export function loadWarJson() {
dicWarJson.clear();
readWarJsonFileAndParse().forEach(arr => {
let warjson = new Array<DicWarJson>();
let warid = 0;
let enemyCount = 0;
arr.forEach(o => {
o.attribute = parseAttribute(o.attribute);
if(o.warId) warid = o.warId;
if(o.relation == 2) enemyCount++;
});
arr.forEach(o => {
o.randomEnemy = parseNumberList(o.randomEnemy);
o.enemyCount = enemyCount;
warjson.push(o);
});
dicWarJson.set(warid, warjson);
})
}
export function parseAttribute(str: string) {
let result = new Array<{ id: number, val: number }>();
if (!str) return result;
let decodeArr = decodeArrayListStr(str);
for (let [id, val] of decodeArr) {
if (isNaN(parseInt(id)) || isNaN(parseInt(val))) {
throw new Error('data table format wrong');
}
result.push({ id: parseInt(id), val: parseInt(val) });
}
return result
}