任务:完成主要接口
This commit is contained in:
@@ -73,7 +73,9 @@ import { dicShop, dicShopItem } from "./dictionary/DicShop";
|
||||
import { dicShopList } from "./dictionary/DicShopList";
|
||||
import { dicRank } from "./dictionary/DicRank";
|
||||
import { dicRankReward } from "./dictionary/DicRankReward";
|
||||
import { dicTaskType, dicMainTask, dicDailyTask, dicAchievement } from "./dictionary/DicTask";
|
||||
import { dicTaskType, taskMap, dicMainTask, dicDailyTask, dicAchievement } from "./dictionary/DicTask";
|
||||
import { dicMainTaskStage } from "./dictionary/DicMainTaskStage";
|
||||
import { dicTaskBox } from './dictionary/DicTaskBox';
|
||||
|
||||
export const gameData = {
|
||||
blurprtCompose: dicBlueprtCompose,
|
||||
@@ -174,9 +176,12 @@ export const gameData = {
|
||||
rank: dicRank,
|
||||
generalRankReward: dicRankReward,
|
||||
taskType: dicTaskType,
|
||||
tasks: taskMap,
|
||||
mainTask: dicMainTask,
|
||||
dailyTask: dicDailyTask,
|
||||
achievement: dicAchievement
|
||||
achievement: dicAchievement,
|
||||
mainTaskStage: dicMainTaskStage,
|
||||
taskBox: dicTaskBox
|
||||
};
|
||||
|
||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
// 主线任务阶段内容
|
||||
import {readJsonFile, parseNumberList, parseGoodStr} from '../util'
|
||||
import { FILENAME } from '../../consts'
|
||||
import { RewardInter } from '../interface';
|
||||
|
||||
export interface DicMainTaskStage {
|
||||
// id
|
||||
readonly id: number;
|
||||
// 阶段
|
||||
readonly stageId: number;
|
||||
// 包括哪些id
|
||||
readonly mainTaskId: number[];
|
||||
// 奖励
|
||||
readonly reward: RewardInter[];
|
||||
}
|
||||
|
||||
const str = readJsonFile(FILENAME.DIC_MAIN_TASK_STAGE);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
export const dicMainTaskStage = new Map<number, DicMainTaskStage>();
|
||||
|
||||
arr.forEach(o => {
|
||||
o.mainTaskId = parseNumberList(o.mainTaskId);
|
||||
o.reward = parseGoodStr(o.reward);
|
||||
dicMainTaskStage.set(o.id, o);
|
||||
});
|
||||
arr = undefined;
|
||||
@@ -89,6 +89,10 @@ 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 taskMap = new Map<number, Map<number, DicMainTask|DicDailyTask|DicAchievement>>();
|
||||
taskMap.set(TASK_FUN_TYPE.MAIN, dicMainTask);
|
||||
taskMap.set(TASK_FUN_TYPE.DAILY, dicDailyTask);
|
||||
taskMap.set(TASK_FUN_TYPE.ACHIEVEMENT, dicAchievement);
|
||||
|
||||
export const dicTaskType = new Map<number, DicTask[]>();
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// 主线任务阶段内容
|
||||
import {readJsonFile, parseGoodStr} from '../util'
|
||||
import { FILENAME, TASK_FUN_TYPE } from '../../consts'
|
||||
import { RewardInter } from '../interface';
|
||||
|
||||
export interface DicTaskBox {
|
||||
// id
|
||||
readonly id: number;
|
||||
// 积分
|
||||
readonly point: number;
|
||||
// 奖励
|
||||
readonly reward: RewardInter[];
|
||||
}
|
||||
|
||||
export const dicTaskBox = new Map<number, Map<number, DicTaskBox>>();
|
||||
|
||||
const str1 = readJsonFile(FILENAME.DIC_TASK_BOX);
|
||||
let arr1 = JSON.parse(str1);
|
||||
arr1.forEach(o => {
|
||||
if(!dicTaskBox.has(TASK_FUN_TYPE.DAILY)) {
|
||||
dicTaskBox.set(TASK_FUN_TYPE.DAILY, new Map<number, DicTaskBox>());
|
||||
}
|
||||
o.reward = parseGoodStr(o.reward);
|
||||
dicTaskBox.get(TASK_FUN_TYPE.DAILY).set(o.id, o);
|
||||
});
|
||||
arr1 = undefined;
|
||||
|
||||
const str2 = readJsonFile(FILENAME.DIC_ACHIEVEMENT_BOX);
|
||||
let arr2 = JSON.parse(str2);
|
||||
arr2.forEach(o => {
|
||||
if(!dicTaskBox.has(TASK_FUN_TYPE.ACHIEVEMENT)) {
|
||||
dicTaskBox.set(TASK_FUN_TYPE.ACHIEVEMENT, new Map<number, DicTaskBox>());
|
||||
}
|
||||
o.reward = parseGoodStr(o.reward);
|
||||
dicTaskBox.get(TASK_FUN_TYPE.ACHIEVEMENT).set(o.id, o);
|
||||
});
|
||||
arr2 = undefined;
|
||||
+15
-14
@@ -3,14 +3,14 @@ import { DicTask } from './dictionary/DicTask';
|
||||
import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID } from '../consts';
|
||||
import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec'
|
||||
import { RoleType, RoleModel } from '../db/Role';
|
||||
import { TaskParam } from '../domain/roleField/task';
|
||||
import { TaskParam, TaskListReturn } from '../domain/roleField/task';
|
||||
import { getTodayZeroPoint } from './timeUtil';
|
||||
import { HeroType } from '../db/Hero';
|
||||
import { EquipType, EquipModel } from '../db/Equip';
|
||||
import { ItemInter } from './interface';
|
||||
|
||||
export async function checkTaskWithRoles(taskType: number, roles: RoleType[], funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
for(let role of roles) {
|
||||
if(role) {
|
||||
let singlePush = await checkTaskWithRole(role.roleId, taskType, role, funcs);
|
||||
@@ -21,7 +21,7 @@ export async function checkTaskWithRoles(taskType: number, roles: RoleType[], fu
|
||||
}
|
||||
|
||||
export async function checkTaskWithRole(roleId: string, taskType: number, role: RoleType, funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
|
||||
if(taskType == TASK_TYPE.LOGIN_SUM)
|
||||
{
|
||||
@@ -52,7 +52,7 @@ export async function checkTaskWithRole(roleId: string, taskType: number, role:
|
||||
|
||||
|
||||
export async function checkTaskWithHeroes(roleId: string, taskType: number, heroes: HeroType[], funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
for(let hero of heroes) {
|
||||
let singlePush = await checkTaskWithHero(roleId, taskType, hero, [], funcs);
|
||||
pushMessage.concat(singlePush);
|
||||
@@ -61,7 +61,7 @@ export async function checkTaskWithHeroes(roleId: string, taskType: number, hero
|
||||
}
|
||||
|
||||
export async function checkTaskWithHero(roleId: string, taskType: number, hero: HeroType, args: number[] = [], funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
if(taskType == TASK_TYPE.HERO_STAR_UP)
|
||||
{
|
||||
let dicHero = gameData.hero.get(hero.hid);
|
||||
@@ -133,7 +133,7 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero:
|
||||
|
||||
|
||||
export async function checkTaskWithEquip(roleId: string, taskType: number, equip: EquipType, args: number[] = [], funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
if(taskType == TASK_TYPE.EQUIP_QUALITY)
|
||||
{
|
||||
// args[0] 1:装上 -1:脱下
|
||||
@@ -194,7 +194,7 @@ export async function checkTaskWithEquip(roleId: string, taskType: number, equip
|
||||
}
|
||||
|
||||
export async function checkTaskWithArgs(roleId: string, taskType: number, args: number[], funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
|
||||
if(taskType == TASK_TYPE.ROLE_SCHOOL_PUT_HERO)
|
||||
{
|
||||
@@ -231,7 +231,7 @@ export async function checkTaskWithArgs(roleId: string, taskType: number, args:
|
||||
|
||||
export async function checkTaskWithWar(roleId: string, taskType: number, warId: number, heroes: number[], count: number, star: number, funcs?: number[]) {
|
||||
let dicWar = gameData.war.get(warId);
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
if(taskType == TASK_TYPE.BATTLE_WITH_HERO)
|
||||
{
|
||||
pushMessage = await checkTask(roleId, taskType, count, true, { warId, heroes }, funcs);
|
||||
@@ -295,7 +295,7 @@ export async function checkTaskWithWar(roleId: string, taskType: number, warId:
|
||||
|
||||
|
||||
export async function checkTaskWithGoods(roleId: string, taskType: number, goods: ItemInter[], funcs?: number[]) {
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
if(taskType == TASK_TYPE.COM_BATTLE_DROP)
|
||||
{
|
||||
for(let { id, count } of goods) {
|
||||
@@ -309,7 +309,7 @@ export async function checkTaskWithGoods(roleId: string, taskType: number, goods
|
||||
// 根据taskType判断有哪些任务需要check的
|
||||
export async function checkTask(roleId: string, taskType: number, count: number, isInc: boolean, param: TaskParam, funcs?: number[]) {
|
||||
let tasks = gameData.taskType.get(taskType)||[];
|
||||
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
let groups = new Map<number, { task0: DicTask, tasks: DicTask[] }>();
|
||||
for(let dicTask of tasks) {
|
||||
if(!groups.has(dicTask.group)) {
|
||||
@@ -326,8 +326,9 @@ export async function checkTask(roleId: string, taskType: number, count: number,
|
||||
let rec = await checkTaskRec(roleId, group, task0, count, isInc, param, funcs);
|
||||
if(rec) {
|
||||
for(let dicTask of tasks) {
|
||||
if(checkRecResult(rec, dicTask.condition)) {
|
||||
pushMessage.push({ type: dicTask.type, id: dicTask.id, count: rec.count, received: rec.received });
|
||||
if(checkRecResult(rec, dicTask.id, dicTask.condition)) {
|
||||
let received = rec.received||[];
|
||||
pushMessage.push({ type: dicTask.type, id: dicTask.id, count: rec.count, received: received.includes(dicTask.id) });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -473,9 +474,9 @@ function checkHero(taskParam: number[], index: number, heroes: number[]) {
|
||||
return heroes.indexOf(hid) != -1;
|
||||
}
|
||||
|
||||
function checkRecResult(rec: UserTaskRecType, condition: number) {
|
||||
function checkRecResult(rec: UserTaskRecType, id: number, condition: number) {
|
||||
if(!rec) return false;
|
||||
if(rec.received) return false;
|
||||
if(rec.received && rec.received.includes(id)) return false; // 已领取,不再推送
|
||||
|
||||
if(rec.count >= condition) {
|
||||
return rec
|
||||
|
||||
Reference in New Issue
Block a user