diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java index ef9cadd62..3c0c4ddfb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.handler.GameGM; +import com.ljsd.jieling.config.SAccomplishmentConfig; import com.ljsd.jieling.config.SCHero; import com.ljsd.jieling.config.SCHeroRankUpConfig; import com.ljsd.jieling.config.SCMapConfig; @@ -8,6 +9,9 @@ import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.globals.GlobalGm; import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.handler.map.MapLogic; +import com.ljsd.jieling.handler.map.MapManager; +import com.ljsd.jieling.handler.map.MapMission; import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.Mail; import com.ljsd.jieling.logic.dao.root.User; @@ -22,9 +26,7 @@ import com.ljsd.jieling.util.TimeUtils; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; @Component @@ -87,14 +89,18 @@ public class GMRequestHandler extends BaseHandler{ case GlobalGm.OPEN_MAP: SCMapConfig scMapConfig = SCMapConfig.getsCMapSize().get(100 + prarm1); Set missionIds = new HashSet<>(); + MapManager mapManager = cUser.getMapManager(); + Map allMissionProgress = mapManager.getAllMissionProgress(); + int curMapId = mapManager.getCurMapId(); if (scMapConfig != null) { - for (int i = 0; i <= prarm1; i++) { + for (int i = 1; i <= prarm1; i++) { int mapId = 100 + i; SCMapConfig crossMap = SCMapConfig.getsCMapSize().get(mapId); cUser.getPlayerInfoManager().setMapId(mapId); if (crossMap.getOpenRule() != null && crossMap.getOpenRule().length > 0) { missionIds.add(crossMap.getOpenRule()[0]); } + initFininshMapMission(mapManager,mapId); } } cUser.getMissionManager().updateFinishMissions(missionIds); @@ -123,4 +129,22 @@ public class GMRequestHandler extends BaseHandler{ itemMap.put(itemId,itemNum); ItemUtil.addItem(cUser,itemMap,dropBuilder); } + + private void initFininshMapMission( MapManager mapManager,int mapId){ + List sAccomplishmentConfigs = SAccomplishmentConfig.getsAccomplishmentConfigByMapId(mapId); + if( sAccomplishmentConfigs == null){ + return; + } + Map missionProgress = new HashMap<>(); + int totalWeight = 0; + for(SAccomplishmentConfig sAccomplishmentConfig : sAccomplishmentConfigs){ + int id = sAccomplishmentConfig.getId(); + int value = sAccomplishmentConfig.getValues()[1]; + missionProgress.put(id,value); + totalWeight+=sAccomplishmentConfig.getScore(); + } + MapMission mapMission = new MapMission(mapId,missionProgress); + mapMission.setTotalWeight(totalWeight); + mapManager.addMapMission(mapMission); + } }