diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java index 51f917d24..4075bdb94 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java @@ -105,6 +105,6 @@ public class EventType { public static final int fightEvent = 2; public static final int shopEvent = 3; public static final int updateOptionalEvent = 4; - public static final int passMap = 4; + public static final int passMap = 5; } 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 e3b4b078f..20e5b4f12 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 @@ -194,7 +194,7 @@ public class MapLogic { if (mapManager.getTemporaryItems() != null) { mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems())); } - MapMission mapMissionProgres = mapManager.getMapMissionProgres(); + MapMission mapMissionProgres = mapManager.getCopyMissionProgresById(mapId); if (mapMissionProgres != null) { Map allMissionProgress = mapMissionProgres.getAllMissionProgress(); List exploreDetailList = new ArrayList<>(allMissionProgress.size()); @@ -820,7 +820,7 @@ public class MapLogic { public void resetMapInfo(User user, boolean needTemporaryItem) throws Exception { MapManager mapManager = user.getMapManager(); mapManager.setFoodBufferMap(new HashMap<>()); - mapManager.setMapMissionProgres(null); + mapManager.clearCopyMission(mapManager.getCurMapId()); mapManager.setMission(null); mapManager.setMapInfo(new HashMap<>()); mapManager.setWalkCells(new HashSet<>()); @@ -1179,7 +1179,7 @@ public class MapLogic { public void initMapMission( MapManager mapManager){ int mapId = mapManager.getCurMapId(); - if(mapManager.getMapMissionProgres()!=null){ + if(mapManager.getCopyMissionProgresById(mapId)!=null){ return; } List sAccomplishmentConfigs = SAccomplishmentConfig.getsAccomplishmentConfigByMapId(mapId); @@ -1193,7 +1193,7 @@ public class MapLogic { missionProgress.put(id,0); } MapMission mapMission = new MapMission(mapId,missionProgress); - mapManager.setMapMissionProgres(mapMission); + mapManager.setCopyMissionProgres(mapMission); } @@ -1918,7 +1918,7 @@ public class MapLogic { if (mapManager.getTemporaryItems() != null) { mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems())); } - MapMission mapMissionProgres = mapManager.getMapMissionProgres(); + MapMission mapMissionProgres = mapManager.getCopyMissionProgresById(mapManager.getCurMapId()); if (mapMissionProgres != null) { Map allMissionProgress = mapMissionProgres.getAllMissionProgress(); List exploreDetailList = new ArrayList<>(allMissionProgress.size()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index e26a15f92..27b9f09e5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -41,9 +41,7 @@ public class MapManager extends MongoBase { private Map foodBufferMap = new HashMap<>(); private Map> heroAllAttributeMap = new HashMap<>(5); - private MapMission mapMissionProgres; - - private MapMission copyMissionProgres=new MapMission(); //副本累计 + private Map copyMissionProgresMap=new HashMap<>(); //副本累计 private Set takeCopyMisionRewards =new HashSet<>();//副本奖励 @@ -331,15 +329,6 @@ public class MapManager extends MongoBase { this.canMoveTime = canMoveTime; } - public MapMission getMapMissionProgres() { - return mapMissionProgres; - } - - public void setMapMissionProgres(MapMission mapMissionProgres) { - this.mapMissionProgres = mapMissionProgres; - updateString("mapMissionProgres", mapMissionProgres); - } - public Map getCrossInfoMap() { return crossInfoMap; } @@ -408,8 +397,8 @@ public class MapManager extends MongoBase { } } - public MapMission getCopyMissionProgres() { - return copyMissionProgres; + public MapMission getCopyMissionProgresById(int copyId) { + return copyMissionProgresMap.get(copyId); } public int getFindSuddenlyBossMapId() { @@ -462,7 +451,12 @@ public class MapManager extends MongoBase { } public void setCopyMissionProgres(MapMission copyMissionProgres) { - updateString("copyMissionProgres" , copyMissionProgres); - this.copyMissionProgres = copyMissionProgres; + updateString("copyMissionProgresMap." + copyMissionProgres.getMapId() , copyMissionProgres); + this.copyMissionProgresMap.put(copyMissionProgres.getMapId(),copyMissionProgres); + } + + public void clearCopyMission(int copyId){ + removeString(getMongoKey() + ".copyMissionProgresMap." + copyId); + this.copyMissionProgresMap.remove(copyId); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java index 67c9b1ae5..95240868d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java @@ -32,10 +32,19 @@ public class MapMissionManager { missionTypes.add(MapMissionType.KILL_BOSS); typeByEventTypeMap.put(EventType.fightEvent,missionTypes); - missionTypes = new ArrayList<>(1); + missionTypes = new ArrayList<>(2); missionTypes.add(MapMissionType.DIGGER_EVENT); missionTypes.add(MapMissionType.OPEN_BOX); typeByEventTypeMap.put(EventType.updatePonintEvent,missionTypes); + + + missionTypes = new ArrayList<>(5); + missionTypes.add(MapMissionType.PASS_FINISH_DIFFICULT_MAP); + missionTypes.add(MapMissionType.PASS_INTIME_MAP); + missionTypes.add(MapMissionType.PASS_DEATH_MAP_EVENT); + missionTypes.add(MapMissionType.PASS_TEAM_FORCE_EVENT); + missionTypes.add(MapMissionType.PASS_TEAM_NOT_PROFESSION_EVENT); + typeByEventTypeMap.put(EventType.passMap,missionTypes); } public static int updateMapMission(MapManager mapManager, int eventType, int eventId, int bossIdOrItemId){ @@ -44,12 +53,11 @@ public class MapMissionManager { if(mapId==0){ return 0; } - MapMission mapMission = mapManager.getMapMissionProgres(); + MapMission mapMission = mapManager.getCopyMissionProgresById(mapId); SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapId); mapId=sChallengeConfig.getMapId(); boolean copyMissionUpdate = false; if(sChallengeConfig.getType()==2){ - mapMission = mapManager.getCopyMissionProgres(); copyMissionUpdate= true; } if(mapMission == null ){ @@ -82,6 +90,7 @@ public class MapMissionManager { if(isHit && !updateProgress){ continue; } + boolean isNeedReset = false; for(SAccomplishmentConfig sAccomplishmentConfig : sAccomplishmentConfigs){ int missionId = sAccomplishmentConfig.getId(); Integer missionValue = allMissionProgress.get(missionId); @@ -95,6 +104,7 @@ public class MapMissionManager { for(int targetEventIdTmp : values[0]){ if(targetEventIdTmp == eventId){ updateProgress = true; + isNeedReset =true; } } } @@ -111,6 +121,9 @@ public class MapMissionManager { readySendCopyMission(missionStateChangeInfo); } } + if(isNeedReset){ + updateProgress = false; + } } } @@ -131,20 +144,17 @@ public class MapMissionManager { } } if(needUpdate){ - if(copyMissionUpdate){ - mapManager.setCopyMissionProgres(mapMission); - }else{ - mapManager.setMapMissionProgres(mapMission); - } + mapManager.setCopyMissionProgres(mapMission); } return mapMission.getTotalWeight(); } public static void processPassMapEvent(User user,int passTime){ MapManager mapManager = user.getMapManager(); - MapMission copyMissionProgres = mapManager.getCopyMissionProgres(); + SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()); int mapId = sChallengeConfig.getId(); + MapMission copyMissionProgres = mapManager.getCopyMissionProgresById(mapId); int difficultType = sChallengeConfig.getDifficultType(); HeroLogic.getInstance().calTeamTotalForce(user,mapManager.getTeamId(),false); Map allMissionProgress = copyMissionProgres.getAllMissionProgress(); @@ -217,7 +227,7 @@ public class MapMissionManager { } } if(needUpdate){ - user.getMapManager().setCopyMissionProgres(user.getMapManager().getCopyMissionProgres()); + user.getMapManager().setCopyMissionProgres(copyMissionProgres); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 03f3cfdd2..2a97d0da5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -66,15 +66,19 @@ public class MissionLoigc { public static void getCopyMission(User user,List missionList){ - MapMission copyMissionProgres = user.getMapManager().getCopyMissionProgres(); - Map allMissionProgress =new HashMap<>(); - Set takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards(); - if(copyMissionProgres!=null){ - allMissionProgress = copyMissionProgres.getAllMissionProgress(); - } + int missionType = GameMisionType.COPYMISSION.getType(); - boolean needUpdate = false; + for(Integer copyId: SChallengeConfig.copyIds){ + boolean needUpdate = false; + MapMission copyMissionProgres = user.getMapManager().getCopyMissionProgresById(copyId); + Map allMissionProgress =new HashMap<>(); + Set takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards(); + if(copyMissionProgres==null){ + copyMissionProgres = new MapMission(); + copyMissionProgres.setMapId(copyId); + copyMissionProgres.setAllMissionProgress(allMissionProgress); + } List sAccomplishmentConfigs = SAccomplishmentConfig.getsAccomplishmentConfigByMapId(copyId); for(SAccomplishmentConfig sAccomplishmentConfig : sAccomplishmentConfigs){ Integer missionId = sAccomplishmentConfig.getId(); @@ -100,10 +104,11 @@ public class MissionLoigc { } missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(missionType).setProgress(mineProgess).build()); } + if(needUpdate){ + user.getMapManager().setCopyMissionProgres(copyMissionProgres); + } } - if(needUpdate){ - user.getMapManager().setCopyMissionProgres(user.getMapManager().getCopyMissionProgres()); - } + } public static void getVipMission(User user,List missionList){ @@ -146,9 +151,12 @@ public class MissionLoigc { if(type == GameMisionType.COPYMISSION.getType()){ //副本 任务 Set takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards(); if(takeCopyMisionRewards.contains(missionId)){ + MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,"had taked reward"); return; } - Map allMissionProgress = user.getMapManager().getCopyMissionProgres().getAllMissionProgress(); + SAccomplishmentConfig sAccomplishmentConfig = SAccomplishmentConfig.getsAccomplishmentConfigByIdMap(missionId); + int mapId = sAccomplishmentConfig.getMapId(); + Map allMissionProgress = user.getMapManager().getCopyMissionProgresById(mapId).getAllMissionProgress(); int finsihProgress = SAccomplishmentConfig.getsAccomplishmentConfigByIdMap(missionId).getValues()[1][0]; if(!allMissionProgress.containsKey(missionId) || allMissionProgress.get(missionId)