🐞 fix(gvg): 投石车定时任务

This commit is contained in:
luying
2023-02-17 11:00:23 +08:00
parent 4359bfd9cc
commit 7543baa8cb
17 changed files with 304 additions and 52 deletions
@@ -1,7 +1,7 @@
// 存在激战期的内存数据
import { pinus } from "pinus";
import { GVG_PERIOD } from "../../consts";
import { GVG_CATAPULT, GVG_PERIOD } from "../../consts";
import { GVGTeamModel, GVGTeamType } from "../../db/GVGTeam";
import { GVGTeamMem } from "../../domain/battleField/gvgBattle";
import { dispatch } from "../../pubUtils/dispatcher";
@@ -34,6 +34,18 @@ class GVGBattleData {
return teams.slice(0, 20);
}
public findCatapultAttackTeam(areaIds: number[], leagueCode: string) {
let teams: string[] = [];
for(let areaId of areaIds) {
let teamCodes = this.areaToTeams.get(areaId)||new Set();
for(let teamCode of teamCodes) {
let team = this.teams.get(teamCode);
if(team && team.leagueCode != leagueCode && !team.isRobot) teams.push(teamCode);
}
}
return teams;
}
public leaveCity(roleId: string) {
let teamCodes = this.roleToTeam.get(roleId)||[];
for(let teamCode of teamCodes) {
@@ -117,11 +129,17 @@ class GVGBattleData {
this.enterCity(team); continue;
}
let { areaId: fromAreaId, pointId: fromPointId } = teamMem;
teamMem.battleEnd(team);
teamMem.updateTeam(team);
this.setRolePoints(team.roleId, fromPointId, team.pointId);
this.setAreaMap(team.teamCode, fromAreaId, team.areaId);
}
}
// 投石车
public findCatapult() {
let teamCodes = this.roleToTeam.get(GVG_CATAPULT)||[];
return teamCodes.map(teamCode => this.teams.get(teamCode));
}
}
export function getGVGBattleData(groupId: number, serverType: number) {
@@ -132,11 +150,15 @@ export function getGVGBattleData(groupId: number, serverType: number) {
return gvgBattleMap.get(key);
}
export function getGVGBattleMap() {
return gvgBattleMap;
}
export async function initTeamToMem() {
let sid = pinus.app.getServerId();
let servers = pinus.app.getServersByType('guild');
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.BATTLE) return;
// if(period != GVG_PERIOD.BATTLE) return;
let teams = await GVGTeamModel.findByConfigId(configId);
for(let team of teams) {
if(dispatch(team.cityId.toString(), servers)?.id == sid) {