✨ feat(gvg): 激战期接口详细返回

This commit is contained in:
luying
2023-02-17 10:59:38 +08:00
parent ab0b7aa9ae
commit 26832196b6
14 changed files with 917 additions and 214 deletions
@@ -14,29 +14,41 @@ class GVGBattleData {
private rolePoints: Map<string, number[]> = new Map(); // roleId => pointId[],用于更新玩家的积分
private roleToTeam: Map<string, string[]> = new Map(); // roleId => teamCode
private areaToTeams: Map<number, Set<string>> = new Map(); // areaId => teamCode set,用于定时下发地图玩家数据
private hasRobot: Map<number, boolean> = new Map(); // cityId => boolean
constructor(groupId: number, serverType: number) {
this.groupId = groupId;
this.serverType = serverType;
}
public findTeamsByArea(areaId: number) {
let teamCodes = this.areaToTeams.get(areaId)||new Set();
let teams: GVGTeamMem[] = [];
for(let teamCode of teamCodes) {
let team = this.teams.get(teamCode);
if(team) teams.push(team);
}
return teams.slice(0, 20);
}
public leaveCity(roleId: string) {
let teamCodes = this.roleToTeam.get(roleId)||[];
for(let teamCode of teamCodes) {
let team = this.teams.get(teamCode);
if(team) team.setCity(0, 0);
if(team) team.setCity(0);
}
this.rolePoints.delete(roleId);
}
public enterCity(teams: GVGTeamType[]) {
for(let team of teams) {
let fromAreaId = this.teams.get(team.teamCode)?.areaId||0;
console.log('#### team', team.teamCode)
if(!this.teams.has(team.teamCode)) {
this.teams.set(team.teamCode, new GVGTeamMem(team))
}
let originTeam = this.teams.get(team.teamCode);
let fromAreaId = originTeam.areaId;
originTeam.setCity(team.cityId, team.areaId);
this.teams.get(team.teamCode).setCity(team.cityId, team.areaId, team.pointId);
if(team.pointId > 0) {
if(!this.rolePoints.has(team.roleId)) this.rolePoints.set(team.roleId, []);
this.rolePoints.get(team.roleId).push(team.pointId);
@@ -45,6 +57,8 @@ class GVGBattleData {
if(teamCodesOfRole.indexOf(team.teamCode) == -1) teamCodesOfRole.push(team.teamCode);
this.roleToTeam.set(team.roleId, teamCodesOfRole);
this.setAreaMap(team.teamCode, fromAreaId, team.areaId);
if(team.isRobot) this.hasRobot.set(team.cityId, team.isRobot);
}
}
@@ -61,11 +75,10 @@ class GVGBattleData {
}
}
public move(teamCode: string, areaId: number, startMoveTime: number, stopMoveTime: number) {
public move(teamCode: string, areaId: number, fromAreaId: number, startMoveTime: number, stopMoveTime: number) {
let team = this.teams.get(teamCode);
if(!team) return;
let fromAreaId = team.areaId;
team.moveToArea(areaId, startMoveTime, stopMoveTime);
team.moveToArea(areaId, fromAreaId, startMoveTime, stopMoveTime);
this.setAreaMap(teamCode, fromAreaId, areaId);
}
@@ -82,6 +95,10 @@ class GVGBattleData {
if(!team) return;
team.pointId = pointId;
}
public checkHasRobot(cityId: number) {
return this.hasRobot.get(cityId)||false;
}
}
export function getGVGBattleData(groupId: number, serverType: number) {