名将擂台:基础界面
This commit is contained in:
@@ -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