地图探索任务
parent
cdda69bad3
commit
b99522734d
|
@ -105,5 +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;
|
||||
|
||||
}
|
||||
|
|
|
@ -1299,6 +1299,7 @@ public class MapLogic {
|
|||
}
|
||||
}
|
||||
mapManager.updateCrossInfoMap(mapManager.getCurMapId(), crossInfo);
|
||||
MapMissionManager.processPassMapEvent(user,useTime);
|
||||
}
|
||||
mapManager.setMission(mission);
|
||||
checkMissionReturn.mission = mission;
|
||||
|
|
|
@ -460,4 +460,9 @@ public class MapManager extends MongoBase {
|
|||
updateString("starReward" , starReward);
|
||||
this.starReward = starReward;
|
||||
}
|
||||
|
||||
public void setCopyMissionProgres(MapMission copyMissionProgres) {
|
||||
updateString("copyMissionProgres" , copyMissionProgres);
|
||||
this.copyMissionProgres = copyMissionProgres;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,13 @@ package com.ljsd.jieling.handler.map;
|
|||
|
||||
import com.ljsd.jieling.config.MapPointConfig;
|
||||
import com.ljsd.jieling.config.SAccomplishmentConfig;
|
||||
import com.ljsd.jieling.config.SCHero;
|
||||
import com.ljsd.jieling.config.SChallengeConfig;
|
||||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.TeamPosForPokenInfo;
|
||||
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.MissionState;
|
||||
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
||||
|
@ -125,12 +131,96 @@ public class MapMissionManager {
|
|||
}
|
||||
}
|
||||
if(needUpdate){
|
||||
mapMission.setAllMissionProgress(allMissionProgress);
|
||||
mapManager.setMapMissionProgres(mapMission);
|
||||
if(copyMissionUpdate){
|
||||
mapManager.setCopyMissionProgres(mapMission);
|
||||
}else{
|
||||
mapManager.setMapMissionProgres(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();
|
||||
int difficultType = sChallengeConfig.getDifficultType();
|
||||
HeroLogic.getInstance().calTeamTotalForce(user,mapManager.getTeamId(),false);
|
||||
Map<Integer, Integer> allMissionProgress = copyMissionProgres.getAllMissionProgress();
|
||||
List<MapMissionType> mapMissionTypes = typeByEventTypeMap.get(EventType.passMap);
|
||||
boolean needUpdate = false;
|
||||
for(MapMissionType mapMissionType : mapMissionTypes){
|
||||
List<SAccomplishmentConfig> sAccomplishmentConfigs = SAccomplishmentConfig.getsAccomplishmentConfigByMapIdAndLogic(mapId, mapMissionType.getMissionTypeValue());
|
||||
if(sAccomplishmentConfigs == null){
|
||||
continue;
|
||||
}
|
||||
Set<Integer> professions = new HashSet<>(5);
|
||||
int parm = 0;
|
||||
switch (mapMissionType){
|
||||
case PASS_INTIME_MAP:
|
||||
parm = passTime;
|
||||
break;
|
||||
case PASS_DEATH_MAP_EVENT:
|
||||
parm = mapManager.getDieCount();
|
||||
break;
|
||||
case PASS_TEAM_FORCE_EVENT:
|
||||
parm = HeroLogic.getInstance().calTeamTotalForce(user,mapManager.getTeamId(),false);
|
||||
break;
|
||||
case PASS_TEAM_NOT_PROFESSION_EVENT:
|
||||
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(mapManager.getTeamId());
|
||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||
for(TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList){
|
||||
String heroId = teamPosHeroInfo.getHeroId();
|
||||
Hero hero = heroMap.get(heroId);
|
||||
professions.add(SCHero.getsCHero().get(hero.getTemplateId()).getProfession());
|
||||
}
|
||||
}
|
||||
for(SAccomplishmentConfig sAccomplishmentConfig : sAccomplishmentConfigs){
|
||||
int missionId = sAccomplishmentConfig.getId();
|
||||
Integer missionValue = allMissionProgress.get(missionId);
|
||||
if(missionValue == null){
|
||||
continue;
|
||||
}
|
||||
int[][] values = sAccomplishmentConfig.getValues();
|
||||
int targetEventValue = values[1][0];
|
||||
for(int targetEventIdTmp : values[0]){
|
||||
if(targetEventIdTmp == difficultType){
|
||||
if(mapMissionType == MapMissionType.PASS_TEAM_NOT_PROFESSION_EVENT){
|
||||
if(!professions.contains(targetEventValue)){
|
||||
allMissionProgress.put(missionId,-1);
|
||||
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(missionId,MissionState.FINISH,missionValue+1);
|
||||
readySendCopyMission(missionStateChangeInfo);
|
||||
needUpdate =true;
|
||||
}
|
||||
}else if(mapMissionType == MapMissionType.PASS_INTIME_MAP || mapMissionType == MapMissionType.PASS_TEAM_FORCE_EVENT || mapMissionType == MapMissionType.PASS_DEATH_MAP_EVENT ){
|
||||
if(parm<targetEventValue){
|
||||
allMissionProgress.put(missionId,-1);
|
||||
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(missionId,MissionState.FINISH,missionValue+1);
|
||||
readySendCopyMission(missionStateChangeInfo);
|
||||
needUpdate =true;
|
||||
}
|
||||
}else{
|
||||
if(missionValue<targetEventValue){
|
||||
allMissionProgress.put(missionId,missionValue);
|
||||
MissionState misisionState = MissionState.DOING;
|
||||
if(missionValue+1 == targetEventValue){
|
||||
misisionState= MissionState.FINISH;
|
||||
}
|
||||
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(missionId,misisionState,missionValue+1);
|
||||
readySendCopyMission(missionStateChangeInfo);
|
||||
needUpdate =true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(needUpdate){
|
||||
user.getMapManager().setCopyMissionProgres(user.getMapManager().getCopyMissionProgres());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void readySendCopyMission(MissionStateChangeInfo missionStateChangeInfo){
|
||||
MissionEventDistributor.getMissionStateChangeInfo(GameMisionType.COPYMISSION).add(missionStateChangeInfo);
|
||||
|
|
|
@ -9,7 +9,14 @@ public enum MapMissionType {
|
|||
// COLLECT_GOODS_ID_EVENT(6), //在收集商人那边兑换出来物品
|
||||
CONSUME_ACTION_POWER_EVENT(6), //在本次地图内消耗多少行动力
|
||||
OPEN_BOX(7), //在本次地图内消耗多少行动力
|
||||
BUY_GOODS_TYPE_EVENT(8); //在本图行脚商人购买某类物品
|
||||
BUY_GOODS_TYPE_EVENT(8), //在本图行脚商人购买某类物品
|
||||
|
||||
PASS_FINISH_DIFFICULT_MAP(9), //通关xx难度
|
||||
PASS_INTIME_MAP(10), //在xx分钟xx秒内通关(不论难度) 难度|次数
|
||||
PASS_DEATH_MAP_EVENT(11), //通关时,总死亡次数小于x次
|
||||
PASS_TEAM_FORCE_EVENT(12), //通关队伍总战力小于xxxxx
|
||||
PASS_TEAM_NOT_PROFESSION_EVENT(13), //通关队伍中,不包含xx职业的妖灵师
|
||||
;
|
||||
|
||||
private int missionType;
|
||||
|
||||
|
|
|
@ -185,7 +185,7 @@ public class MailLogic {
|
|||
int[][] itemArr = StringUtil.parseFiledInt2(mailItem.toString());
|
||||
boolean isLimit = ItemUtil.checkCardAndEquipLimit(user,itemArr);
|
||||
if (isLimit){
|
||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
|
||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"背包已满");
|
||||
return;
|
||||
}
|
||||
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr, BIReason.TAKE_MAIL_REWARD);
|
||||
|
|
|
@ -73,6 +73,7 @@ public class MissionLoigc {
|
|||
allMissionProgress = copyMissionProgres.getAllMissionProgress();
|
||||
}
|
||||
int missionType = GameMisionType.COPYMISSION.getType();
|
||||
boolean needUpdate = false;
|
||||
for(Integer copyId: SChallengeConfig.copyIds){
|
||||
List<SAccomplishmentConfig> sAccomplishmentConfigs = SAccomplishmentConfig.getsAccomplishmentConfigByMapId(copyId);
|
||||
for(SAccomplishmentConfig sAccomplishmentConfig : sAccomplishmentConfigs){
|
||||
|
@ -81,6 +82,8 @@ public class MissionLoigc {
|
|||
Integer mineProgess = allMissionProgress.get(missionId);
|
||||
if(mineProgess==null){
|
||||
mineProgess=0;
|
||||
allMissionProgress.put(missionId,0);
|
||||
needUpdate =true;
|
||||
}
|
||||
int state =0;
|
||||
if(mineProgess>=finishProgress){
|
||||
|
@ -91,9 +94,16 @@ public class MissionLoigc {
|
|||
state=2;
|
||||
mineProgess=finishProgress;
|
||||
}
|
||||
if(mineProgess == -1){
|
||||
state=1;
|
||||
mineProgess=1;
|
||||
}
|
||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(missionType).setProgress(mineProgess).build());
|
||||
}
|
||||
}
|
||||
if(needUpdate){
|
||||
user.getMapManager().setCopyMissionProgres(user.getMapManager().getCopyMissionProgres());
|
||||
}
|
||||
}
|
||||
|
||||
public static void getVipMission(User user,List<CommonProto.UserMissionInfo> missionList){
|
||||
|
|
Loading…
Reference in New Issue