feat(gvg): 激战期挑战相关接口整理

This commit is contained in:
luying
2023-02-14 20:31:43 +08:00
parent c0cc85ae0a
commit a838aba8e5
12 changed files with 316 additions and 129 deletions

View File

@@ -1,6 +1,6 @@
import { GVGTeamMem } from "../../domain/battleField/gvgBattle";
import { GVGLeagueType } from "../../db/GVGLeague";
import { GVGTeamModel, GVGTeamType } from "../../db/GVGTeam";
import { GVGTeamModel, GVGTeamType, GVGTeamUpdate } from "../../db/GVGTeam";
import { GVGCityModel, GVGCityType } from "../../db/GVGCity";
import { gameData } from "../../pubUtils/data";
import { STATUS } from "../../consts";
@@ -8,6 +8,8 @@ import { nowSeconds } from "../../pubUtils/timeUtil";
import { DicGVGAreaPoint } from "../../pubUtils/dictionary/DicGVGAreaPoint";
import { getGVGBattleData } from "./gvgBattleMemory";
import { GVGCityMapInfo } from "../../domain/gvgField/returnData";
import { pick } from "underscore";
import { GVG } from "../../pubUtils/dicParam";
/**
@@ -71,17 +73,24 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe
return STATUS.SUCCESS;
}
export async function initRobots(groupId: number, serverType: number, cityId: number) {
let teamObj = getGVGBattleData(groupId, serverType);
if(!teamObj.checkHasRobot(cityId)) {
let dicPoints: DicGVGAreaPoint[] = [];
let { areaIds = []} = gameData.gvgCity.get(cityId);
for(let [_, point] of gameData.gvgAreaPoint) {
if(areaIds.indexOf(point.areaId) != -1) dicPoints.push(point);
export async function initRobots(confidId: number, groupId: number, serverType: number, cityId: number) {
let robotTeams = await GVGTeamModel.findRobotTeams(groupId, serverType, cityId);
let updateDicPoints: DicGVGAreaPoint[] = [];
let { areaIds = []} = gameData.gvgCity.get(cityId);
for(let [_, point] of gameData.gvgAreaPoint) {
if(areaIds.indexOf(point.areaId) == -1) continue;
let robotTeam = robotTeams.find(team => team.pointId == point.pointId);
if(!robotTeam || (!robotTeam.isBroken && robotTeam.configId != confidId) ) {
updateDicPoints.push(point);
}
let teams = await GVGTeamModel.initRobots(groupId, serverType, cityId, dicPoints);
teamObj.enterCity(teams);
}
if(updateDicPoints.length > 0) {
robotTeams = await GVGTeamModel.initRobots(confidId, groupId, serverType, cityId, updateDicPoints);
// 存入内存
let teamObj = getGVGBattleData(groupId, serverType);
teamObj.enterCity(robotTeams);
}
return robotTeams;
}
export function checkAreaIsInCity(cityId: number, areaIds: number[]) {
@@ -91,4 +100,22 @@ export function checkAreaIsInCity(cityId: number, areaIds: number[]) {
if(dicCity.areaIds.indexOf(areaId) == -1) return false;
}
return true;
}
export function calBattleScoreByCe(isSuccess: boolean, lineupCe: number) {
let winScore = Math.floor(lineupCe/GVG.GVG_BATTLE_SCORE);
if(winScore <= 0) winScore = 1;
return isSuccess? winScore: 0;
}
// 计算打投石车/守卫的得分
export function calLeagueScore(team: GVGTeamType) {
return 0
}
export async function teamBreak(city: GVGCityType, team: GVGTeamType) {
if(team.durability > 0) return team
let areaId = getBirthAreaOfCity(city, team.leagueCode);
team = await GVGTeamModel.teamBreak(team.teamCode, team.isRobot, team.maxDurability, areaId);
return team;
}