🐞 fix(gvg): 联军信息变动同步

This commit is contained in:
luying
2023-02-27 21:54:54 +08:00
parent 1f04496865
commit a89692f4ef
11 changed files with 121 additions and 11 deletions
@@ -16,6 +16,7 @@ class GVGBattleData {
private teams: Map<string, GVGTeamMem> = new Map(); // 队伍, teamCode => team
private rolePoints: Map<string, Map<number, string>> = new Map(); // roleId => pointId[],用于更新玩家的积分
private roleToTeam: Map<string, string[]> = new Map(); // roleId => teamCode
private leagueToTeam: Map<string, Set<string>> = new Map(); // leagueCode => teamCode
public areaToTeams: Map<number, Set<string>> = new Map(); // areaId => teamCode set,用于定时下发地图玩家数据
constructor(groupKey: string) {
@@ -54,6 +55,8 @@ class GVGBattleData {
for(let [_areaId, teamSet] of this.areaToTeams) {
if(teamSet.has(teamCode)) teamSet.delete(teamCode);
}
if(team.leagueCode && this.leagueToTeam.has(team.leagueCode))
this.leagueToTeam.get(team.leagueCode).delete(teamCode);
}
this.rolePoints.delete(roleId);
}
@@ -73,6 +76,14 @@ class GVGBattleData {
let teamCodesOfRole = this.roleToTeam.get(team.roleId)||[];
if(teamCodesOfRole.indexOf(team.teamCode) == -1) teamCodesOfRole.push(team.teamCode);
this.roleToTeam.set(team.roleId, teamCodesOfRole);
if(team.leagueCode) {
if(!this.leagueToTeam.has(team.leagueCode)) {
this.leagueToTeam.set(team.leagueCode, new Set());
}
if(!this.leagueToTeam.get(team.leagueCode).has(team.teamCode))
this.leagueToTeam.get(team.leagueCode).add(team.teamCode);
}
this.setAreaMap(team.teamCode, fromAreaId, team.areaId);
}
}
@@ -174,6 +185,23 @@ class GVGBattleData {
public findAreas() {
return this.areaToTeams.keys();
}
public updateLeagueInfo(leagueCode: string, leagueName: string) {
let teamCodes = this.leagueToTeam.get(leagueCode)||new Set();
for(let teamCode of teamCodes) {
let team = this.teams.get(teamCode);
team.leagueName = leagueName;
}
}
public updateRoleInfo(roleId: string, info: { roleName?: string, lv?: number }) {
let teamCodes = this.leagueToTeam.get(roleId)||new Set();
for(let teamCode of teamCodes) {
let team = this.teams.get(teamCode);
if(info.roleName) team.roleName = info.roleName;
if(info.lv) team.lv = info.lv;
}
}
}
export function getGVGBattleData(groupKey: string) {