红点:每日战斗结算增加返回

This commit is contained in:
luying
2021-06-02 20:41:27 +08:00
parent b9a3a96514
commit 6d99619050
2 changed files with 36 additions and 27 deletions

View File

@@ -153,6 +153,7 @@ export class NormalBattleHandler {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
let { warStar } = await RoleModel.findByRoleId(roleId);
let warReward = new WarReward(roleId, roleName, sid, battleId, isSuccess);
let dailyNum = {};
@@ -160,7 +161,7 @@ export class NormalBattleHandler {
let dungeonNum = {};
if (warInfo.warType == WAR_TYPE.DAILY) {
let checkResult = await checkDailyAndIncrease(roleId, battleId, 1, false);
let checkResult = await checkDailyAndIncrease(roleId, [{id: battleId, star, warType: warInfo.warType}, ...warStar], battleId, 1, false);
if (checkResult.status == -1) {
return checkResult.resResult;
}
@@ -208,7 +209,6 @@ export class NormalBattleHandler {
if (isSuccess) { // 挑战胜利
// 是否首通
let { warStar } = await RoleModel.findByRoleId(roleId);
let condition1 = warStar.find(cur => cur.id == battleId);
if (!condition1) {
await switchOnFunc(roleId, FUNC_OPT_TYPE.BATTLE_END, battleId, session);
@@ -274,7 +274,7 @@ export class NormalBattleHandler {
let dailyNum = {};
let dungeonNum = {};
if (warInfo.warType == WAR_TYPE.DAILY) {
let checkResult = await checkDailyAndIncrease(roleId, battleId, count, true);
let checkResult = await checkDailyAndIncrease(roleId, warStar, battleId, count, true);
if (checkResult.status == -1) {
return checkResult.resResult
}

View File

@@ -7,6 +7,8 @@ import { resResult } from '../pubUtils/util';
import { STATUS } from '../consts/statusCode';
import { RoleModel, RoleType } from '../db/Role';
import { gameData } from '../pubUtils/data';
import { DicWar } from '../pubUtils/dictionary/DicWar';
import { WarStar } from '../domain/dbGeneral';
/**
* 获取全部每日关卡列表
@@ -21,27 +23,9 @@ export async function getDailyBattleList(role: RoleType) {
let refreshResult = await DailyRecordModel.refreshRecord(roleId, type);
let wars: {battleId: number, cost: number, star: number, status: number, name: string}[] = new Array();
let dicDailyWar = gameData.dailyWarByType.get(type);
for(let {war_id, cost, gk_name, previousGk } of dicDailyWar) {
let status = 0, star = 0;
let curBattle = warStar.find(cur => cur.id == war_id);
if(curBattle) {
status = 2;
star = curBattle.star;
} else {
if (previousGk) {
let preBattleRecord = warStar.find(cur => cur.id == previousGk);
if(preBattleRecord) {
status = 1;
} else {
status = 0;
}
} else {
status = 1;
}
}
wars.push({
battleId: war_id, cost, star, status, name: gk_name
});
for(let dic of dicDailyWar) {
let war = getDailyWarStatus(dic, warStar);
wars.push(war);
}
let checkDailyResult = await getDailyNum(refreshResult, timesPerDay, timesCanBuy);
result.push({
@@ -52,6 +36,30 @@ export async function getDailyBattleList(role: RoleType) {
return result;
}
function getDailyWarStatus(dicDailyWar: DicWar, warStar: WarStar[]) {
let {war_id, cost, gk_name, previousGk } = dicDailyWar;
let status = 0, star = 0;
let curBattle = warStar.find(cur => cur.id == war_id);
if(curBattle) {
status = 2;
star = curBattle.star;
} else {
if (previousGk) {
let preBattleRecord = warStar.find(cur => cur.id == previousGk);
if(preBattleRecord) {
status = 1;
} else {
status = 0;
}
} else {
status = 1;
}
}
return {
battleId: war_id, cost, star, status, name: gk_name
}
}
// 检查每日本次数checkBattle使用
export async function checkDaily(roleId: string, battleId: number, inc: number) {
let dailyWar = gameData.war.get(battleId);
@@ -66,7 +74,7 @@ export async function checkDaily(roleId: string, battleId: number, inc: number)
return { status: -1, resResult: resResult(STATUS.DAILY_TIMES_LACK) }
}
let checkDailyResult = await getDailyNum(dailyRecord, curDaily.timesPerDay, curDaily.timesCanBuy);
return {status: 1, data: {type, ...checkDailyResult}};
return {status: 1, data: {type, ...checkDailyResult }};
}
/**
@@ -77,10 +85,11 @@ export async function checkDaily(roleId: string, battleId: number, inc: number)
* @param isRef 在计算之前是否检查每日的刷新
*/
export async function checkDailyAndIncrease(roleId: string, battleId: number, inc: number, isRef: boolean) {
export async function checkDailyAndIncrease(roleId: string, warStar: WarStar[], battleId: number, inc: number, isRef: boolean) {
let dailyWar = gameData.war.get(battleId);
if(!dailyWar) return { status: -1, resResult: resResult(STATUS.DAILY_WAR_NOT_FOUND) };
let type = dailyWar.dailyType;
let war = getDailyWarStatus(dailyWar, warStar);
let curDaily = gameData.daily.find(cur => cur.dailyType == type);
if(!curDaily) return { status: -1, resResult: resResult(STATUS.DAILY_TYPE_NOT_FOUND) };
@@ -97,7 +106,7 @@ export async function checkDailyAndIncrease(roleId: string, battleId: number, in
}
let result = await DailyRecordModel.increseDailyCount(roleId, type, inc);
let checkDailyResult = await getDailyNum(result, curDaily.timesPerDay, curDaily.timesCanBuy);
return {status: 1, data: {type, ...checkDailyResult}};
return {status: 1, data: {type, ...checkDailyResult, war}};
}
export async function getDailyNum(dailyRecord: DailyRecord, timesPerDay?: number, timesCanBuy?: number) {