✨ feat(gvg): 激战期接口详细返回
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user