import { Application, BackendSession } from 'pinus'; import { DailyRecordModel } from '../../../db/DailyRecord'; import { BattleRecordModel } from '../../../db/BattleRecord'; import { getGamedata } from '../../../util/gamedata'; import { WAR_TYPE } from '../../../consts/consts'; export default function(app: Application) { return new DailyBattleHandler(app); } export class DailyBattleHandler { constructor(private app: Application) { } // 获取关卡列表 async getData(msg: { }, session: BackendSession) { let roleId = session.get('roleId'); const BattleRecord = await BattleRecordModel.getBattleList(roleId, WAR_TYPE.DAILY); let dicDaily = getGamedata('dic_zyz_daily'); let dicDailyWar = getGamedata('dic_zyz_gk_daily'); let result = new Array(); for(let {dailyType: type, name, timesPerDay: sum} of dicDaily) { let refreshResult = await DailyRecordModel.refreshRecord(roleId, type); let {count} = refreshResult; let wars = new Array(); for(let {war_id, dailyType, cost, gk_name, previousGk } of dicDailyWar) { if(dailyType == type) { let status = 0, star = 0; let curBattle = BattleRecord.find(cur => cur.battleId == war_id); if(curBattle) { status = 2; star = curBattle.star; } else { if (previousGk) { let preBattleRecord = BattleRecord.find(cur => cur.battleId == previousGk); if(preBattleRecord) { status = 1; } else { status = 0; } } else { status = 1; } } wars.push({ battleId: war_id, cost, star, status, name: gk_name }); } } result.push({ type, count, sum, name, wars }); } return { code: 200, data: result } } } // 检查每日本次数checkBattle使用 export async function checkDaily(roleId: string, battleId: number, inc: number) { let dicDaily = getGamedata('dic_zyz_daily'); let dicDailyWar = getGamedata('dic_zyz_gk_daily'); let dailyWar = dicDailyWar.find(cur => cur.war_id == battleId); if(!dailyWar) return { status: -1, msg: '未找到该关卡' }; let type = dailyWar.dailyType; let curDaily = dicDaily.find(cur => cur.dailyType == type); if(!curDaily) return { status: -1, msg: '未找到该类型' }; let dailyRecord = await DailyRecordModel.refreshRecord(roleId, type); let { count } = dailyRecord; if(count + inc > curDaily.sum ) { return { status: -1, msg: '次数不足' } } return {status: 1, type, count, sum: curDaily.sum}; } // 检查每日本次数warEnd和warSweep使用 export async function checkDailyAndIncrease(roleId: string, battleId: number, inc: number, isRef: boolean) { let dicDaily = getGamedata('dic_zyz_daily'); let dicDailyWar = getGamedata('dic_zyz_gk_daily'); let dailyWar = dicDailyWar.find(cur => cur.war_id == battleId); if(!dailyWar) return { status: -1, msg: '未找到该关卡' }; let type = dailyWar.dailyType; let curDaily = dicDaily.find(cur => cur.dailyType == type); if(!curDaily) return { status: -1, msg: '未找到该类型' }; let dailyRecord; if(isRef) { dailyRecord = await DailyRecordModel.refreshRecord(roleId, type); } else { dailyRecord = await DailyRecordModel.getDailyRecordById(roleId, type); } let { count } = dailyRecord; if(count + inc > curDaily.sum ) { return { status: -1, msg: '次数不足' } } let result = await DailyRecordModel.increseDailyCount(roleId, type, inc); return {status: 1, type, count: result.count, sum: curDaily.sum}; }