任务:埋点30/70
This commit is contained in:
132
shared/pubUtils/dictionary/DicTask.ts
Normal file
132
shared/pubUtils/dictionary/DicTask.ts
Normal 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)
|
||||
}
|
||||
Reference in New Issue
Block a user