武将:职业天赋接口
This commit is contained in:
@@ -17,8 +17,8 @@ export interface DicJob {
|
||||
readonly job_class: number;
|
||||
// 职业类别
|
||||
readonly type: number;
|
||||
// 特性
|
||||
readonly seid: Array<number>;
|
||||
// // 特性
|
||||
// readonly seid: Array<number>;
|
||||
// 训练消耗
|
||||
readonly trainingConsume: Array<RewardInter>;
|
||||
// 升阶消耗
|
||||
@@ -27,15 +27,17 @@ export interface DicJob {
|
||||
readonly ceAttr: Map<number, {id: number, attr: number}>;
|
||||
// 一共有多少阶升级
|
||||
readonly maxStage: number;
|
||||
|
||||
// 到这一阶能获得多少天赋点
|
||||
readonly talentPoint: number;
|
||||
}
|
||||
|
||||
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
||||
const DicJobKeys: KeysEnum<DicJob> = {jobid: true, name: true, grade: true, unlockLevel: true, job_class: true, type: true, seid: true,trainingConsume: true, upGradeConsume: true, ceAttr: true, maxStage: true};
|
||||
const DicJobKeys: KeysEnum<DicJob> = {jobid: true, name: true, grade: true, unlockLevel: true, job_class: true, type: true, trainingConsume: true, upGradeConsume: true, ceAttr: true, maxStage: true, talentPoint: true};
|
||||
|
||||
export const dicJob = new Map<number, DicJob>();
|
||||
export const jobClassMaxGrades = new Map<number, {grade:number, jobid:number}>();
|
||||
export const jobClassAndgrades = new Map<string, {jobid:number, unlockLevel:number}>();
|
||||
export const talentPointOfJob = new Map<number, number>();
|
||||
|
||||
export function loadJob() {
|
||||
dicJob.clear();
|
||||
@@ -43,6 +45,7 @@ export function loadJob() {
|
||||
jobClassAndgrades.clear();
|
||||
|
||||
let arr = readFileAndParse(FILENAME.DIC_JOB);
|
||||
let jobByJobClass = new Map<number, number[]>(); // jobClass => jobid[]
|
||||
|
||||
arr.forEach(o => {
|
||||
if(o.isPlayer) {
|
||||
@@ -56,9 +59,25 @@ export function loadJob() {
|
||||
if (!jobClass || jobClass.grade < o.grade) {
|
||||
jobClassMaxGrades.set(o.job_class, {grade: o.grade,jobid: o.jobid});
|
||||
}
|
||||
jobClassAndgrades.set(o.job_class+'_'+o.grade,{unlockLevel:o.unlockLevel, jobid:o.jobid});
|
||||
jobClassAndgrades.set(o.job_class+'_'+o.grade,{unlockLevel:o.unlockLevel, jobid:o.jobid});
|
||||
if(!jobByJobClass.has(o.job_class)) {
|
||||
jobByJobClass.set(o.job_class, []);
|
||||
}
|
||||
jobByJobClass.get(o.job_class).push(o.jobid);
|
||||
}
|
||||
});
|
||||
for(let [_, { job_class, talentPoint }] of dicJob) {
|
||||
let jobs = jobByJobClass.get(job_class)||[];
|
||||
for(let jobid of jobs) {
|
||||
if(!talentPointOfJob.has(jobid)) {
|
||||
talentPointOfJob.set(jobid, talentPoint);
|
||||
} else {
|
||||
talentPointOfJob.set(jobid, talentPointOfJob.get(jobid) + talentPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jobByJobClass = undefined;
|
||||
arr = undefined;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user