任务:埋点30/70

This commit is contained in:
luying
2021-04-18 11:21:04 +08:00
parent bc07e1ea31
commit 9f4f346447
38 changed files with 1088 additions and 692 deletions

View File

@@ -1,5 +1,5 @@
// 镇念塔表
import { decodeArrayListStr, readJsonFile } from '../util'
import { decodeArrayListStr, readJsonFile, parseNumberList } from '../util'
import { FILENAME } from '../../consts';
export interface DicSuit {
@@ -11,7 +11,7 @@ export interface DicSuit {
readonly totalCount: number;
// 套装效果
readonly effect: Array<{ count: number, seid: number }>;
readonly tireInfo: Map<number,number>;
readonly tireInfo: Array<number>;
}
const str = readJsonFile(FILENAME.DIC_SUIT);
@@ -21,7 +21,7 @@ export const dicSuit = new Map<number, DicSuit>();
arr.forEach(o => {
o.effect = parseSuitEffect(o.effect);
o.tireInfo = parseTireInfo(o.tireInfo);
o.tireInfo = parseNumberList(o.tireInfo);
dicSuit.set(o.id, o);
});
arr = undefined;
@@ -37,13 +37,4 @@ function parseSuitEffect(str: string) {
result.push({ count: parseInt(count), seid: parseFloat(seid) });
}
return result
}
function parseTireInfo(str: string) {
let result = new Map<number,number>();
let arrs = str.split('&');
for (let arr of arrs) {
result.set(parseInt(arr), 1);
}
return result;
}

View File

@@ -0,0 +1,132 @@
// 任务
import { RewardInter } from '../interface';
import { readJsonFile, parseNumberList, parseGoodStr } from '../util';
import { FILENAME, TASK_FUN_TYPE} from '../../consts';
const _ = require('lodash');
type KeysEnum<T> = { [P in keyof Required<T>]: true };
interface DicTaskBase {
// id
readonly id: number;
// 任务类型
readonly taskType: number;
// 类型下面的分组
readonly group: number;
// 任务参数
readonly taskParam: number[];
// 条件
readonly condition: number;
}
const DicTaskKeys: KeysEnum<DicTaskBase> = {
id: true,
taskType: true,
group: true,
taskParam: true,
condition: true
};
// 主线任务
export interface DicMainTask extends DicTaskBase {
// 奖励
readonly taskReward: RewardInter[];
// 任务阶段
readonly taskStage: number;
}
const DicMainTaskKeys: KeysEnum<DicMainTask> = {
id: true,
taskType: true,
group: true,
taskParam: true,
condition: true,
taskStage: true,
taskReward: true
};
// 每日任务
export interface DicDailyTask extends DicTaskBase {
// 奖励
readonly taskReward: RewardInter[];
// 活跃
readonly point: number;
// 经验基数
readonly exp: number;
}
const DicDailyTaskKeys: KeysEnum<DicDailyTask> = {
id: true,
taskType: true,
group: true,
taskParam: true,
condition: true,
taskReward: true,
point: true,
exp: true
};
// 成就
export interface DicAchievement extends DicTaskBase {
// 奖励
readonly taskReward: RewardInter[];
// 活跃
readonly point: number;
}
const DicAchievementKeys: KeysEnum<DicAchievement> = {
id: true,
taskType: true,
group: true,
taskParam: true,
condition: true,
taskReward: true,
point: true
};
export type DicTask = DicTaskBase & { type: number };
export const dicMainTask = new Map<number, DicMainTask>(); // 主线任务
export const dicDailyTask = new Map<number, DicDailyTask>(); // 每日任务
export const dicAchievement = new Map<number, DicAchievement>(); // 成就
export const dicTaskType = new Map<number, DicTask[]>();
const mainTask = readJsonFile(FILENAME.DIC_MAIN_TASK);
let arrMainTask = JSON.parse(mainTask);
arrMainTask.forEach(o => {
o.taskParam = parseNumberList(o.taskParam);
o.taskReward = parseGoodStr(o.taskReward);
dicMainTask.set(o.id, _.pick(o, Object.keys(DicMainTaskKeys)));
pushDicTaskType(o.taskType, TASK_FUN_TYPE.MAIN, o);
});
arrMainTask = undefined;
const dailyTask = readJsonFile(FILENAME.DIC_DAILY_TASK);
let arrDailyTask = JSON.parse(dailyTask);
arrDailyTask.forEach(o => {
o.taskParam = parseNumberList(o.taskParam);
o.taskReward = parseGoodStr(o.taskReward);
dicDailyTask.set(o.id, _.pick(o, Object.keys(DicDailyTaskKeys)));
pushDicTaskType(o.taskType, TASK_FUN_TYPE.DAILY, o);
});
arrDailyTask = undefined;
const achievement = readJsonFile(FILENAME.DIC_ACHIEVEMENT);
let arrAchievement = JSON.parse(achievement);
arrAchievement.forEach(o => {
o.taskParam = parseNumberList(o.taskParam);
o.taskReward = parseGoodStr(o.taskReward);
dicAchievement.set(o.id, _.pick(o, Object.keys(DicAchievementKeys)));
pushDicTaskType(o.taskType, TASK_FUN_TYPE.ACHIEVEMENT, o);
});
arrAchievement = undefined;
function pushDicTaskType(taskType: number, type: number, o: any) {
if(!dicTaskType.has(taskType)) {
dicTaskType.set(taskType, new Array<DicTask>());
}
let newObj = _.pick(o, Object.keys(DicTaskKeys));
newObj.type = type;
dicTaskType.get(taskType).push(newObj)
}