🐞 fix(gvg): 修复离开战场逻辑
This commit is contained in:
@@ -10,7 +10,7 @@ import { getGVGBattleData, getGVGBattleMap } from "./gvgBattleMemory";
|
||||
import { GVGCityMapInfo, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap } from "../../domain/gvgField/returnData";
|
||||
import { GVG } from "../../pubUtils/dicParam";
|
||||
import { GVGHeroInfo, PvpEnemies, PvpHeroInfo } from "../../domain/dbGeneral";
|
||||
import { getGVGConfig } from "./gvgService";
|
||||
import { getGroupKey, getGVGConfig } from "./gvgService";
|
||||
import { GVGLeaguePrepareModel } from "../../db/GVGLeaguePrepare";
|
||||
import { pinus } from "pinus";
|
||||
import { dispatch } from "../../pubUtils/dispatcher";
|
||||
@@ -57,7 +57,7 @@ export async function getGVGCitiesInfo(configId: number, groupKey: string, leagu
|
||||
if(league) {
|
||||
let players = (city.players||[]).filter(cur => cur.leagueCode == league.leagueCode);
|
||||
obj.setTeamCnt(players.length);
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey });
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey, cityId: city.cityId });
|
||||
let score = await r.getMyScore({ leagueCode: league.leagueCode });
|
||||
obj.setScore(score||0);
|
||||
}
|
||||
@@ -131,23 +131,21 @@ export function calBattleScoreByCe(isSuccess: boolean, lineupCe: number) {
|
||||
return isSuccess? winScore: 0;
|
||||
}
|
||||
|
||||
export async function leaveCity(roleId: string, isForce: boolean) {
|
||||
export async function leaveCity(isForce: boolean, roleId: string, serverId: number, guildCode: string, myLeague?: GVGLeagueType) {
|
||||
if(!myLeague) myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return;
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let { configId } = getGVGConfig();
|
||||
let teams = await GVGTeamModel.findByRole(roleId);
|
||||
let hasPoint = false, myTeam: GVGTeamType;
|
||||
for(let team of teams) {
|
||||
if(team.pointId > 0) hasPoint = true;
|
||||
myTeam = team;
|
||||
}
|
||||
let hasPoint = !!teams.find(team => team.pointId > 0);
|
||||
|
||||
if(isForce || !hasPoint) {
|
||||
let leaveResult = await GVGTeamModel.leaveCity(roleId);
|
||||
if(leaveResult) {
|
||||
await GVGCityModel.decreasePlayer(myTeam.configId, myTeam.groupKey, myTeam.cityId, roleId);
|
||||
await GVGUserDataModel.changeCity(myTeam.configId, myTeam.leagueCode, roleId, 0);
|
||||
// 处理内存数据
|
||||
let teamObj = getGVGBattleData(myTeam.groupKey);
|
||||
teamObj.leaveCity(roleId);
|
||||
}
|
||||
await GVGTeamModel.leaveCity(roleId);
|
||||
await GVGCityModel.decreasePlayer(configId, groupKey, roleId);
|
||||
await GVGUserDataModel.changeCity(configId, myLeague.leagueCode, roleId, 0);
|
||||
// 处理内存数据
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.leaveCity(roleId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user