名将擂台:基础界面
This commit is contained in:
@@ -46,6 +46,7 @@ import { sendMessageToAllWithSuc, sendMessageToServerWithSuc, sendMessageToUser,
|
||||
import { getSurvey } from './gmService';
|
||||
import { ComBattleTeamModel } from '../db/ComBattleTeam';
|
||||
import { INFO_WINDOW } from '../pubUtils/dicParam';
|
||||
import { getLadderData } from './ladderService';
|
||||
|
||||
/**
|
||||
* init: 初始的时候是否推送 true-推 false-不推
|
||||
@@ -79,6 +80,7 @@ const modules = [
|
||||
{ id: 24, type: 'donate', init: false, refresh: true, guild: true },
|
||||
{ id: 25, type: 'shop', init: false, refresh: true, guild: false },
|
||||
{ id: 26, type: 'survey', init: false, refresh: true, guild: false },
|
||||
{ id: 27, type: 'ladder', init: false, refresh: true, guild: false },
|
||||
]
|
||||
|
||||
export async function pushData(hasInit: boolean, role: RoleType, session: FrontendOrBackendSession, pushType: 'entry' | 'refresh' = 'entry') {
|
||||
@@ -206,6 +208,8 @@ export async function getModuleData(type: string, data: { role: RoleType, sessio
|
||||
return getMainChapter(role);
|
||||
case 'survey':
|
||||
return await getSurvey(role.roleId, role.lv);
|
||||
case 'ladder':
|
||||
return await getLadderData(role.roleId, false);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import { LadderMatchModel, LadderMatchType } from "../db/LadderMatch";
|
||||
import { LadderMatchRecModel } from "../db/LadderMatchRec";
|
||||
import { RoleModel } from "../db/Role";
|
||||
import { LadderDataReturn } from "../domain/battleField/ladder";
|
||||
import { gameData } from "../pubUtils/data";
|
||||
import { ItemInter } from "../pubUtils/interface";
|
||||
import { shouldRefresh } from "../pubUtils/util";
|
||||
import { combineItems } from "./role/util";
|
||||
|
||||
export function refreshLadderDaily(ladderData: LadderMatchType) {
|
||||
|
||||
let { refOppCnt = 0, buyCnt = 0, challengeCnt = 0, refDaily } = ladderData;
|
||||
let curTime = new Date();
|
||||
let shouldRefOpp = shouldRefresh(refDaily, curTime);
|
||||
if (shouldRefOpp) {
|
||||
refOppCnt = 0; buyCnt = 0; challengeCnt =0; refDaily = curTime;
|
||||
}
|
||||
return {
|
||||
shouldRefOpp,
|
||||
refOppCnt, refDaily, buyCnt, challengeCnt,
|
||||
}
|
||||
}
|
||||
|
||||
export function getBuyCntCost(buyCnt: number, incCnt: number) {
|
||||
let items: ItemInter[] = [];
|
||||
for(let i = 1; i <= incCnt; i++) {
|
||||
let cost = getSingleBuyCost(buyCnt + i);
|
||||
if(!cost) return false;
|
||||
items.push(cost);
|
||||
}
|
||||
return combineItems(items);
|
||||
}
|
||||
|
||||
function getSingleBuyCost(buyCnt: number) {
|
||||
for(let { id, count, times } of gameData.ladderConsume) {
|
||||
if(buyCnt <= times) {
|
||||
return { id, count }
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export async function getLadderData(roleId: string, needOppPlayer: boolean) {
|
||||
let ladderData = await LadderMatchModel.findByRoleId(roleId);
|
||||
if(!ladderData) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
ladderData = await LadderMatchModel.createLadder({ serverId: role.serverId, roleId: role.roleId, role: role._id });
|
||||
}
|
||||
|
||||
// 刷新次数
|
||||
let refOppObj = refreshLadderDaily(ladderData);
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
ladderData = await LadderMatchModel.updateByRoleId(roleId, refOppObj);
|
||||
}
|
||||
|
||||
let ladderRec = await LadderMatchRecModel.findNotCompleteRecByRoleId(roleId);
|
||||
|
||||
let result = new LadderDataReturn();
|
||||
result.setLadderData(ladderData, ladderRec);
|
||||
|
||||
if(needOppPlayer) {
|
||||
// let oppPlayersReturn = await getEnemies(ladderData.oppPlayers||[], ladderData.winStreakNum);
|
||||
// result.setOppPlayers(oppPlayersReturn);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user