diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 3fe9dc17a..ade408e4b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -206,6 +206,9 @@ public class MapLogic { if (doingMissions.containsKey(doingMissionId)) { Mission mission = doingMissions.get(doingMissionId); missions.add(mission); + for (Map.Entry missionEntry : mission.getMissionInfos().entrySet()) { + newMap.put(missionEntry.getKey(), missionEntry.getValue()); + } } } } @@ -256,9 +259,6 @@ public class MapLogic { // 任务触发的事件点 for (Mission mission : missions) { if (mission.getMapPoints().containsKey(mapPointConfig.getId())) { - for (Map.Entry missionEntry : mission.getMissionInfos().entrySet()) { - newMap.put(missionEntry.getKey(), missionEntry.getValue()); - } Cell cellValue = new Cell(xy, mission.getMapPoints().get(mapPointConfig.getId()), mapPointConfig.getId()); newMap.put(xy, cellValue); } @@ -764,6 +764,8 @@ public class MapLogic { mapManager.setCurXY(0); mapManager.setCurMapId(0); mapManager.setTotalStep(0); + mapManager.setTriggerXY(0); + mapManager.setFoodBuffers(new ArrayList<>()); TemporaryItems temporaryItems = mapManager.getTemporaryItems(); if (temporaryItems != null) { ItemUtil.addTemporaryItemToBag(user, temporaryItems, needTemporaryItem); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java index c51aea12c..061070c3f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java @@ -41,6 +41,16 @@ public class BehaviorUtil { needDelete.add(entry.getKey()); } } + Map doingMissions = user.getMissionManager().getDoingMissions(); + for (Map.Entry entry : doingMissions.entrySet()) { + Mission mission = entry.getValue(); + Map missionInfos = mission.getMissionInfos(); + for (Integer xy : needDelete) { + if (missionInfos.containsKey(xy)){ + mission.removeMissionInfos(xy); + } + } + } for (Integer xy : needDelete) { mapInfo.remove(xy); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java index df5971eb2..32281e0d3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java @@ -70,9 +70,7 @@ public class DunBehavior extends BaseBehavior { mission.setMissionStep(0); mission.getMissionInfos().putAll(newDunEvents); mission.setMissionInfo(mapManager.getCurXY() + "#" + behaviorTypeValues[0][2]); - Map doingMissions = user.getMissionManager().getDoingMissions(); - doingMissions.put(behaviorTypeValues[0][0], mission); - user.getMissionManager().updateDoingMissions(doingMissions); + user.getMissionManager().updateOneDoingMissions(behaviorTypeValues[0][0], mission); CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission); eventUpdateResponse.addMission(missionProto); CrossMapCell crossMapInfo = mapManager.getCrossMapInfos().get(mapManager.getCurMapId()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenAppointMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenAppointMissionBehavior.java index d392e394d..71013375b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenAppointMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenAppointMissionBehavior.java @@ -24,9 +24,7 @@ public class OpenAppointMissionBehavior extends BaseBehavior { mission.setMissionStep(0); mission.setOpen(true); mission.setMissionInfo(user.getMapManager().getCurMapId() + "#" + behaviorTypeValues[0][0]); - Map doingMissions = user.getMissionManager().getDoingMissions(); - doingMissions.put(behaviorTypeValues[0][0], mission); - user.getMissionManager().updateDoingMissions(doingMissions); + user.getMissionManager().updateOneDoingMissions(behaviorTypeValues[0][0], mission); CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission); eventUpdateResponse.addMission(missionProto); return true; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenNotDoMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenNotDoMissionBehavior.java index 3529f7fad..4b5c977f0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenNotDoMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenNotDoMissionBehavior.java @@ -8,8 +8,6 @@ import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; import org.springframework.stereotype.Component; -import java.util.Map; - @Component public class OpenNotDoMissionBehavior extends BaseBehavior { @Override @@ -24,9 +22,7 @@ public class OpenNotDoMissionBehavior extends BaseBehavior { mission.setMissionStep(0); mission.setOpen(false); mission.setMissionInfo(user.getMapManager().getCurMapId() + "#" + behaviorTypeValues[0][0]); - Map doingMissions = user.getMissionManager().getDoingMissions(); - doingMissions.put(behaviorTypeValues[0][0], mission); - user.getMissionManager().updateDoingMissions(doingMissions); + user.getMissionManager().updateOneDoingMissions(behaviorTypeValues[0][0], mission); CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission); eventUpdateResponse.addMission(missionProto); return true; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java index bb5323e4e..27bb09e93 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java @@ -47,6 +47,11 @@ public class Mission extends MongoBase { this.missionInfos.put(xy, cell); } + public void removeMissionInfos(int xy) throws Exception { + removeString(getMongoKey() + ".missionInfos." + xy); + this.missionInfos.remove(xy); + } + public String getMissionInfo() { return missionInfo; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java index 53b23930d..563fff853 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java @@ -107,9 +107,7 @@ public class MissionLogic { if (mission.getMissionInfo() != null) { checkMissionReturn.newEventId = mission.getMissionInfo(); } - Map doingMissions = user.getMissionManager().getDoingMissions(); - doingMissions.remove(mission.getMissionId()); - user.getMissionManager().updateDoingMissions(doingMissions); + user.getMissionManager().removeDoingMissions(mission.getMissionId()); Set finishMissions = user.getMissionManager().getFinishMissions(); finishMissions.add(mission.getMissionId()); user.getMissionManager().updateFinishMissions(finishMissions); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionManager.java index 5af9a0958..9c6be7704 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionManager.java @@ -35,16 +35,17 @@ public class MissionManager extends MongoBase { return takeRewardMissions; } - public void updateDoingMissions(Map doingMissions) throws Exception { - this.doingMissions = doingMissions; - updateString( "doingMissions", doingMissions); - } - public void updateOneDoingMissions(int missionId, Mission mission) throws Exception { + mission.init(this.getRootId(), getMongoKey() + ".doingMissions." + missionId); this.doingMissions.put(missionId, mission); updateString( "doingMissions." + missionId, mission); } + public void removeDoingMissions(int missionId) throws Exception { + this.doingMissions.remove(missionId); + removeString( getMongoKey() + ".doingMissions." + missionId); + } + public void updateFinishMissions(Set finishMissions) throws Exception { this.finishMissions = finishMissions; updateString( "finishMissions", finishMissions);