🐞 fix(gvg): 离开城池的时候未解锁
This commit is contained in:
@@ -341,6 +341,7 @@ export class GVGBattleHandler {
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.move(teamCode, areaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
|
||||
|
||||
await leaveGVGAreaTeamChannel(roleId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupKey, areaId, sid);
|
||||
await pushTeamMoveMessage(team);
|
||||
return resResult(STATUS.SUCCESS, { areaId, cityId, stopMoveTime: team.stopMoveTime, moveCdTime: team.moveCdTime });
|
||||
@@ -365,8 +366,6 @@ export class GVGBattleHandler {
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.move(teamCode, areaId, 0, team.startMoveTime, team.stopMoveTime);
|
||||
|
||||
await leaveGVGAreaTeamChannel(roleId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupKey, areaId, sid);
|
||||
return resResult(STATUS.SUCCESS, { areaId, cityId, curTeam: new MyTeamInfo(team) });
|
||||
}
|
||||
|
||||
|
||||
@@ -10,10 +10,8 @@ import { getGVGConfig, setGVGConfig, setGVGServerGroup } from '../../../services
|
||||
import { GVGConfigType } from '../../../db/GVGConfig';
|
||||
import { catapultHurt, gvgBattleEnd, gvgBattleSeconds, gvgBattleStart, initCatapult, leaveCityMem } from '../../../services/gvg/gvgBattleService';
|
||||
import { clearBattleMemory } from '../../../services/gvg/gvgBattleMemory';
|
||||
import { GVGLeagueType } from '../../../db/GVGLeague';
|
||||
import { updateLeagueNameMem, updateTeamRoleInfoMem } from '../../../services/gvg/gvgTeamService';
|
||||
import { resetPeriodTime, setPeriodTime } from '../../../services/gvg/gvgFightService';
|
||||
import { GVGTeamType } from '../../../db/GVGTeam';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -173,9 +171,9 @@ export class GuildRemote {
|
||||
}
|
||||
}
|
||||
|
||||
public async leaveCityMem(groupKey: string, roleId: string, teams: GVGTeamType[]) {
|
||||
public async leaveCityMem(groupKey: string, roleId: string) {
|
||||
try {
|
||||
return leaveCityMem(groupKey, roleId, teams);
|
||||
return leaveCityMem(groupKey, roleId);
|
||||
} catch(e) {
|
||||
errlogger.error(`remote ${__filename} \n ${e.stack}`);
|
||||
}
|
||||
|
||||
@@ -86,12 +86,13 @@ class GVGBattleData {
|
||||
this.leagueToTeam.get(team.leagueCode).add(team.teamCode);
|
||||
}
|
||||
|
||||
this.setAreaMap(team.teamCode, fromAreaId, team.areaId);
|
||||
this.setAreaMap(team.teamCode, fromAreaId, team.areaId, 'enterCity');
|
||||
}
|
||||
}
|
||||
|
||||
private setAreaMap(teamCode: string, fromAreaId: number, toAreaId: number) {
|
||||
private setAreaMap(teamCode: string, fromAreaId: number, toAreaId: number, fromFun) {
|
||||
if(fromAreaId == toAreaId) return;
|
||||
// console.log('#### gvgBattleMemory setAreaMap', 'teamCode:', teamCode, 'fromAreaId: ', fromAreaId, 'toAreaId:', toAreaId, 'appid', pinus.app.getServerId(), 'from', fromFun)
|
||||
let fromAreaSet = this.areaToTeams.get(fromAreaId);
|
||||
if(fromAreaSet && fromAreaSet.has(teamCode)) fromAreaSet.delete(teamCode);
|
||||
|
||||
@@ -119,7 +120,7 @@ class GVGBattleData {
|
||||
let team = this.teams.get(teamCode);
|
||||
if(!team) return;
|
||||
team.moveToArea(areaId, fromAreaId, startMoveTime, stopMoveTime);
|
||||
this.setAreaMap(teamCode, fromAreaId, areaId);
|
||||
this.setAreaMap(teamCode, fromAreaId, areaId, 'move');
|
||||
}
|
||||
|
||||
public setTime(teamCode: string, teamUpdate: GVGTeamType) {
|
||||
@@ -149,7 +150,7 @@ class GVGBattleData {
|
||||
let { areaId: fromAreaId, pointId: originPointId } = teamMem;
|
||||
teamMem.updateTeam(team);
|
||||
this.setRolePoints(team.roleId, originPointId, curTeamBreak? 0: pointId, team.teamCode);
|
||||
this.setAreaMap(team.teamCode, fromAreaId, team.areaId);
|
||||
this.setAreaMap(team.teamCode, fromAreaId, team.areaId, 'battleEnd');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import { getGVGBattleData, getGVGBattleMap } from "./gvgBattleMemory";
|
||||
import { GVGAttackSpine, GVGCityMapInfo, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap } from "../../domain/gvgField/returnData";
|
||||
import { GVG } from "../../pubUtils/dicParam";
|
||||
import { GVGHeroInfo, PvpEnemies, PvpHeroInfo } from "../../domain/dbGeneral";
|
||||
import { getGroupKey, getGVGConfig, getGVGPeriodData } from "./gvgService";
|
||||
import { getGroupKey, getGVGConfig, getGVGConfigFromRemote, getGVGPeriodData } from "./gvgService";
|
||||
import { GVGLeaguePrepareModel } from "../../db/GVGLeaguePrepare";
|
||||
import { pinus } from "pinus";
|
||||
import { dispatch } from "../../pubUtils/dispatcher";
|
||||
@@ -219,30 +219,31 @@ export async function generNewLineup(roleId: string, heroes: HeroType[], lineup:
|
||||
export async function leaveCity(isForce: boolean, roleId: string, serverId: number, guildCode: string, myLeague?: GVGLeagueType) {
|
||||
if(!myLeague) myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let { configId } = getGVGConfig();
|
||||
let { configId } = await getGVGConfigFromRemote();
|
||||
let teams = await GVGTeamModel.findByRole(roleId);
|
||||
let hasPoint = !!teams.find(team => team.pointId > 0);
|
||||
|
||||
// console.log('######### leaveCity', configId, groupKey)
|
||||
if(isForce || !hasPoint) {
|
||||
await GVGTeamModel.leaveCity(roleId);
|
||||
await GVGCityModel.decreasePlayer(configId, groupKey, roleId);
|
||||
if(myLeague) await GVGUserDataModel.changeCity(configId, myLeague.leagueCode, roleId, 0);
|
||||
await GVGCityAreaPointModel.playerLeave(configId, groupKey, roleId);
|
||||
// 处理内存数据
|
||||
await pinus.app.rpc.guild.guildRemote.leaveCityMem.broadcast(groupKey, roleId, teams);
|
||||
await pinus.app.rpc.guild.guildRemote.leaveCityMem.broadcast(groupKey, roleId);
|
||||
for(let team of teams) {
|
||||
if(team.cityId > 0 && team.areaId > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(groupKey, team.areaId, PUSH_ROUTE.GVG_PLAYER_LEAVE_AREA, {
|
||||
cityId: team.cityId, areaId: team.areaId, teamCode: team.teamCode
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function leaveCityMem(groupKey: string, roleId: string, teams: GVGTeamType[]) {
|
||||
export async function leaveCityMem(groupKey: string, roleId: string) {
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.leaveCity(roleId);
|
||||
for(let team of teams) {
|
||||
if(team.cityId > 0 && team.areaId > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(groupKey, team.areaId, PUSH_ROUTE.GVG_PLAYER_LEAVE_AREA, {
|
||||
cityId: team.cityId, areaId: team.areaId, teamCode: team.teamCode
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 复活cd
|
||||
@@ -478,6 +479,7 @@ export async function gvgBattleSeconds() {
|
||||
const serverNames = await getAllServerName();
|
||||
let keys: { groupKey: string, cityId: number }[] = []
|
||||
for(let [_key, teamObj] of getGVGBattleMap()) {
|
||||
// console.log('#### gvgBattleSeconds groupKey: ', _key, 'areas', teamObj.findAreas(), 'appid', pinus.app.getServerId());
|
||||
if(startFightTime <= nowSeconds() && endFightTime >= nowSeconds()) {
|
||||
// 每5秒给据点上的人加积分
|
||||
let teams = teamObj.findSettledPoint();
|
||||
@@ -500,12 +502,13 @@ export async function gvgBattleSeconds() {
|
||||
if(index == -1) keys.push({ groupKey: teamObj.groupKey, cityId: dicArea.cityId });
|
||||
}
|
||||
for(let [cityId, spines] of spinesByCity) {
|
||||
await sendMessageToGVGCityWithSuc(teamObj.groupKey, cityId, PUSH_ROUTE.GVG_AREA_SPINE_CHANGE, { cityId, spines });
|
||||
if(spines.length > 0) await sendMessageToGVGCityWithSuc(teamObj.groupKey, cityId, PUSH_ROUTE.GVG_AREA_SPINE_CHANGE, { cityId, spines });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(startFightTime <= nowSeconds() && endFightTime >= nowSeconds()) {
|
||||
// console.log('#### cityRank keys', JSON.stringify(keys), 'appid', pinus.app.getServerId())
|
||||
for(let { groupKey, cityId } of keys) {
|
||||
let { ranks } = await getBattleRanksByCity(configId, groupKey, cityId);
|
||||
await sendMessageToGVGCityWithSuc(groupKey, cityId, PUSH_ROUTE.GVG_CITY_RANK_UPDATE, { cityId, ranks });
|
||||
|
||||
@@ -88,9 +88,14 @@ export function getPeriodTime() {
|
||||
}
|
||||
|
||||
export async function getGVGConfigFromRemote() {
|
||||
let guildServers = pinus.app.getServersByType('guild');
|
||||
let server = getRandSingleEelm(guildServers);
|
||||
return await pinus.app.rpc.guild.guildRemote.getGVGConfig.toServer(server.id);
|
||||
let serverType = pinus.app.getServerType();
|
||||
if(serverType == 'guild') {
|
||||
return getGVGConfig();
|
||||
} else {
|
||||
let guildServers = pinus.app.getServersByType('guild');
|
||||
let server = getRandSingleEelm(guildServers);
|
||||
return await pinus.app.rpc.guild.guildRemote.getGVGConfig.toServer(server.id);
|
||||
}
|
||||
}
|
||||
|
||||
export async function setGVGConfig(config?: GVGConfigType) {
|
||||
|
||||
Reference in New Issue
Block a user