🐞 fix(gvg): 可能可以修好据点锁问题

This commit is contained in:
luying
2023-03-09 10:06:04 +08:00
parent 50a3c7e872
commit 686501d75d
4 changed files with 28 additions and 22 deletions

View File

@@ -417,11 +417,15 @@ export class GVGBattleHandler {
let myTeam = await GVGTeamModel.findMyTeamByCode(roleId, teamCode);
if(!myTeam) return resResult(STATUS.GVG_TEAM_NOT_FOUND);
let checkResult = checkSettleStatus(myTeam);
if(checkResult.code != 0) return resResult(checkResult);
let dicAreaPoint = gameData.gvgAreaPoint.get(pointId);
if(dicAreaPoint.areaId != myTeam.areaId) return resResult(STATUS.GVG_POINT_NOT_AREA);
const curTeam = await GVGTeamModel.settlePoint(teamCode, 0);
await GVGCityAreaPointModel.leavePoint(configId, groupKey, pointId);
await GVGCityAreaPointModel.leavePoint(configId, groupKey, teamCode);
let teamObj = getGVGBattleData(groupKey);
teamObj.teamSettle(roleId, teamCode, 0);
@@ -490,11 +494,11 @@ export class GVGBattleHandler {
let settleResult = await GVGCityAreaPointModel.settlePoint(cityId, attackTeam.areaId, defenseTeam.originPointId, attackTeam, defenseTeam.isRobot? '': defenseTeam.teamCode);
if(settleResult) attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
} else {
await GVGCityAreaPointModel.leavePoint(configId, groupKey, defenseTeam.originPointId);
await GVGCityAreaPointModel.leavePoint(configId, groupKey, defenseTeam.teamCode);
}
}
if(attackTeam.curTeamBreak && attackTeam.originPointId) {
await GVGCityAreaPointModel.leavePoint(configId, groupKey, attackTeam.originPointId);
await GVGCityAreaPointModel.leavePoint(configId, groupKey, attackTeam.teamCode);
}
if(defenseTeam.curTeamBreak) {
let attackScore = calBattleScoreByCe(isSuccess, defenseTeam.lineupCe);
@@ -552,7 +556,7 @@ export class GVGBattleHandler {
let settleResult = await GVGCityAreaPointModel.settlePoint(cityId, attackTeam.areaId, defenseTeam.originPointId, attackTeam, defenseTeam.isRobot? '': defenseTeam.teamCode);
if(settleResult) attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
} else {
await GVGCityAreaPointModel.leavePoint(configId, groupKey, defenseTeam.originPointId);
await GVGCityAreaPointModel.leavePoint(configId, groupKey, defenseTeam.teamCode);
}
}
@@ -739,17 +743,20 @@ export class GVGBattleHandler {
let fun = async () => {
let teams = teamObj.findTeamsByRole('test');
for(let teamMem of teams) {
let fromAreaId = teamMem.areaId;
let dicArea = gameData.gvgArea.get(fromAreaId);
// 更新内存数据
let toAreaId = getRandSingleEelm(dicArea.relateArea);
let team = await GVGTeamModel.startMove(teamMem.teamCode, toAreaId, fromAreaId);
// 更新内存数据
let teamObj = getGVGBattleData(groupKey);
teamObj.move(teamMem.teamCode, toAreaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
await pushTeamMoveMessage(team);
for(let i = 0; i < teams.length; i++) {
let teamMem = teams[i];
setTimeout(async () => {
let fromAreaId = teamMem.areaId;
let dicArea = gameData.gvgArea.get(fromAreaId);
// 更新内存数据
let toAreaId = getRandSingleEelm(dicArea.relateArea);
let team = await GVGTeamModel.startMove(teamMem.teamCode, toAreaId, fromAreaId);
// 更新内存数据
let teamObj = getGVGBattleData(groupKey);
teamObj.move(teamMem.teamCode, toAreaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
await pushTeamMoveMessage(team);
}, i * 100);
}
};