地图任务

back_recharge
wangyuan 2019-06-25 12:02:10 +08:00
parent c7fdef8058
commit 2b28e768fb
5 changed files with 55 additions and 43 deletions

View File

@ -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;
}

View File

@ -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<Integer, Integer> allMissionProgress = mapMissionProgres.getAllMissionProgress();
List<CommonProto.ExploreDetail> 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<SAccomplishmentConfig> 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<Integer, Integer> allMissionProgress = mapMissionProgres.getAllMissionProgress();
List<CommonProto.ExploreDetail> exploreDetailList = new ArrayList<>(allMissionProgress.size());

View File

@ -41,9 +41,7 @@ public class MapManager extends MongoBase {
private Map<Integer,Integer> foodBufferMap = new HashMap<>();
private Map<String,Map<Integer, Integer>> heroAllAttributeMap = new HashMap<>(5);
private MapMission mapMissionProgres;
private MapMission copyMissionProgres=new MapMission(); //副本累计
private Map<Integer,MapMission> copyMissionProgresMap=new HashMap<>(); //副本累计
private Set<Integer> 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<Integer, CrossInfo> 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);
}
}

View File

@ -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<Integer, Integer> allMissionProgress = copyMissionProgres.getAllMissionProgress();
@ -217,7 +227,7 @@ public class MapMissionManager {
}
}
if(needUpdate){
user.getMapManager().setCopyMissionProgres(user.getMapManager().getCopyMissionProgres());
user.getMapManager().setCopyMissionProgres(copyMissionProgres);
}
}

View File

@ -66,15 +66,19 @@ public class MissionLoigc {
public static void getCopyMission(User user,List<CommonProto.UserMissionInfo> missionList){
MapMission copyMissionProgres = user.getMapManager().getCopyMissionProgres();
Map<Integer, Integer> allMissionProgress =new HashMap<>();
Set<Integer> 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<Integer, Integer> allMissionProgress =new HashMap<>();
Set<Integer> takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards();
if(copyMissionProgres==null){
copyMissionProgres = new MapMission();
copyMissionProgres.setMapId(copyId);
copyMissionProgres.setAllMissionProgress(allMissionProgress);
}
List<SAccomplishmentConfig> 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<CommonProto.UserMissionInfo> missionList){
@ -146,9 +151,12 @@ public class MissionLoigc {
if(type == GameMisionType.COPYMISSION.getType()){ //副本 任务
Set<Integer> takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards();
if(takeCopyMisionRewards.contains(missionId)){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,"had taked reward");
return;
}
Map<Integer, Integer> allMissionProgress = user.getMapManager().getCopyMissionProgres().getAllMissionProgress();
SAccomplishmentConfig sAccomplishmentConfig = SAccomplishmentConfig.getsAccomplishmentConfigByIdMap(missionId);
int mapId = sAccomplishmentConfig.getMapId();
Map<Integer, Integer> allMissionProgress = user.getMapManager().getCopyMissionProgresById(mapId).getAllMissionProgress();
int finsihProgress = SAccomplishmentConfig.getsAccomplishmentConfigByIdMap(missionId).getValues()[1][0];
if(!allMissionProgress.containsKey(missionId) || allMissionProgress.get(missionId) <finsihProgress){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,"mission can not get reward");