主线:添加宝箱
This commit is contained in:
@@ -2,7 +2,7 @@ import { Application, BackendSession, HandlerService, } from 'pinus';
|
||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||
import { BattleSweepRecordModel } from '../../../db/BattleSweepRecord';
|
||||
import { genCode, getReasonByWarType, getWarTypeName } from '../../../pubUtils/util';
|
||||
import { WAR_TYPE, EVENT_STATUS, FUNC_OPT_TYPE, MSG_SOURCE, REDIS_KEY, TASK_TYPE, KING_EXP_RATIO_TYPE, TA_EVENT } from '../../../consts';
|
||||
import { WAR_TYPE, EVENT_STATUS, FUNC_OPT_TYPE, MSG_SOURCE, REDIS_KEY, TASK_TYPE, KING_EXP_RATIO_TYPE, TA_EVENT, ITEM_CHANGE_REASON } from '../../../consts';
|
||||
import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattleService';
|
||||
import { checkTowerWar, towerBattleEnd } from '../../../services/battleService';
|
||||
import { WarReward } from '../../../services/warRewardService';
|
||||
@@ -12,7 +12,7 @@ import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { RScriptRecordModel } from '../../../db/RScriptRecord';
|
||||
import { checkBattleHeroes, roleLevelup, getBattleList, calculateWarStar, getBattleListOfTypes } from '../../../services/normalBattleService';
|
||||
import { checkBattleHeroes, roleLevelup, getBattleList, calculateWarStar, getBattleListOfTypes, getMainChapter, getStarOfChapter } from '../../../services/normalBattleService';
|
||||
import { checkDungeonNum, checkDungeonAndIncrease, saveDungeonFirst } from '../../../services/dungeonService';
|
||||
// import { switchOnFunc } from '../../../services/funcSwitchService';
|
||||
import { gameData } from '../../../pubUtils/data';
|
||||
@@ -26,7 +26,9 @@ import { challengeDailyGK } from '../../../services/activity/dailyGKService';
|
||||
import { challengeNewHeroGK } from '../../../services/activity/newHeroGKService';
|
||||
import { reportTAEvent } from '../../../services/sdkService';
|
||||
import { getVipRegretCnt } from '../../../services/activity/monthlyTicketService';
|
||||
import { isNumber } from 'underscore';
|
||||
import { isArray, isNumber } from 'underscore';
|
||||
import { RewardInter } from '../../../pubUtils/interface';
|
||||
import { addItems } from '../../../services/rewardService';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -117,6 +119,8 @@ export class NormalBattleHandler {
|
||||
// 关卡列表
|
||||
async getBattleList(msg: { types: number[] }, session: BackendSession) {
|
||||
const { types } = msg;
|
||||
if(!isArray(types)) return resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
@@ -422,4 +426,48 @@ export class NormalBattleHandler {
|
||||
|
||||
return resResult(STATUS.SUCCESS, { regretCnt: battleRecord.regretCnt||0, maxRegretCnt });
|
||||
}
|
||||
|
||||
async getMainStarBox(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let role = await RoleModel.findByRoleId(roleId, 'warStar receivedBox');
|
||||
|
||||
let result = getMainChapter(role);
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
}
|
||||
|
||||
// 关卡列表
|
||||
async receiveChapterBox(msg: { chapter: number, id: number }, session: BackendSession) {
|
||||
const { id, chapter } = msg;
|
||||
if(!isNumber(id)) return resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let sid = session.get('sid');
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId, 'warStar receivedBox');
|
||||
let ids: number[] = [];
|
||||
let rewards: RewardInter[] = [];
|
||||
let starOfChapter = getStarOfChapter(role.warStar);
|
||||
|
||||
let boxIds = id == 0? gameData.mainBoxByChapter.get(chapter): [id];
|
||||
|
||||
for(let id of boxIds) {
|
||||
let dicBox = gameData.mainBox.get(id);
|
||||
if(dicBox && dicBox.chapter == chapter) {
|
||||
let star = starOfChapter.get(chapter)
|
||||
if(star >= dicBox.star) {
|
||||
rewards.push(...dicBox.reward);
|
||||
ids.push(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(ids.length <= 0) return resResult(STATUS.BATTLE_NO_BOX_CAN_RECEIVE);
|
||||
role = await RoleModel.receivedBox(roleId, ids);
|
||||
let goods = await addItems(roleId, roleName, sid, rewards, ITEM_CHANGE_REASON.RECEIVE_CHAPTER_BOX)
|
||||
|
||||
let result = getMainChapter(role);
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
...result, goods
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import { getGuildTrainInstance, getTrainBoxRewardsResult } from './guildTrainSer
|
||||
import { BossInstanceModel } from '../db/BossInstance';
|
||||
import { getBossInstanceInfo } from './guildBossService';
|
||||
import { getEvent } from './eventSercive';
|
||||
import { getBattleListOfMain } from './normalBattleService';
|
||||
import { getBattleListOfMain, getMainChapter } from './normalBattleService';
|
||||
import { GuildType } from '../db/Guild';
|
||||
import UserGuild, { UserGuildType } from '../db/UserGuild';
|
||||
import { setPreDayActiveData, getAllGuildActivityStatus } from './guildActivity/guildActivityService';
|
||||
@@ -154,7 +154,8 @@ async function getModuleData(type: string, data: { role: RoleType, session: Fron
|
||||
return await getBattleListOfMain(role);
|
||||
case 'guildActivity':
|
||||
return getAllGuildActivityStatus();
|
||||
|
||||
case 'chapter':
|
||||
return getMainChapter(role);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -193,4 +193,32 @@ export async function getBattleList(role: RoleType, type: number) {
|
||||
}
|
||||
result = result.sort((a, b) => { return a.battleId - b.battleId });
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export function getStarOfChapter(warStar: WarStar[]) {
|
||||
let map = new Map<number, number>();
|
||||
for(let { id, star } of warStar ) {
|
||||
let dicWar = gameData.war.get(id);
|
||||
if(dicWar.warType == WAR_TYPE.NORMAL && star > 0) {
|
||||
if(!map.has(dicWar.chapter)) {
|
||||
map.set(dicWar.chapter, star);
|
||||
} else {
|
||||
map.set(dicWar.chapter, map.get(dicWar.chapter) + star);
|
||||
}
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
export function getMainChapter(role: RoleType) {
|
||||
let chapterMap = getStarOfChapter(role.warStar);
|
||||
let chapterArr: { chapter: number, star: number }[] = [];
|
||||
for(let [ chapter, star ] of chapterMap) {
|
||||
chapterArr.push({ chapter, star });
|
||||
}
|
||||
|
||||
return {
|
||||
star: chapterArr,
|
||||
receivedBox: role.receivedBox||[],
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user