任务:完成主要接口

This commit is contained in:
luying
2021-04-19 19:35:45 +08:00
parent b29b8634ad
commit ced80d9b94
16 changed files with 515 additions and 41 deletions

View File

@@ -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