地图修改

back_recharge
jiahuiwen 2019-03-28 13:41:21 +08:00
parent 06f5ad260a
commit a6bfd95324
2 changed files with 64 additions and 38 deletions

View File

@ -69,44 +69,35 @@ public class MapLogic {
User user = UserManager.getUser(uid);
int energy = user.getPlayerInfoManager().getEnergy();
MapManager mapManager = user.getMapManager();
if (teamId != 0) {
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
if (teamPosHeroInfos == null || teamPosHeroInfos.isEmpty()) {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "阵容不存在");
return;
}
int totalStep = 0;
List<String> heroes = new ArrayList<>(teamPosHeroInfos.size());
for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
if (hero == null) {
break;
}
hero.setCurHp(HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.HP_TYPE));
hero.setSpeed(HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.SPEED_TYPE));
totalStep += HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.ACTION_POWER_RORMULA_TYPE);
heroes.add(heroInfo.getHeroId());
}
if (heroes.size() != teamPosHeroInfos.size()) {
LOGGER.info("enterMap() uid=>{} team pos is wrong ", uid, teamId);
return;
}
mapManager.setTeamId(teamId);
mapManager.setTotalStep(totalStep + 5);
if (teamId == 0) {
LOGGER.info("enterMap() uid=>{} teamId =>{} ", uid, teamId);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
if (mapManager.getCurMapId() == 0) {
user.getPlayerInfoManager().setMapId(mapId);
mapManager.setCurMapId(mapId);
initMap(mapManager, user);
user.setMapManager(mapManager);
} else {
Map<Integer, SCMap> scMap = SCMap.sCMap.get(mapId);
if (scMap == null) {
// 初始序章地图
if (mapManager.getMaxMapId() == 0) {
String error = initTeamInfo(teamId, uid, user, mapManager);
if (!error.isEmpty()){
LOGGER.info("enterMap() uid=>{} error =>{} ", uid, error);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
if (mapId > mapManager.getCurMapId()) {
user.getPlayerInfoManager().setMapId(100);
mapManager.setCurMapId(100);
mapManager.setMaxMapId(100);
initMap(mapManager, user);
user.setMapManager(mapManager);
}
// 进入新地图
if (mapManager.getCurMapId() == 0) {
Map<Integer, SCMap> scMap = SCMap.sCMap.get(mapId);
if (scMap == null) {
LOGGER.info("enterMap() uid=>{} scMap == null =>{} ", uid, mapId);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
if (mapId > mapManager.getMaxMapId()) {
LOGGER.info("enterMap() uid=>{} mapManager.getMaxMapId()=>{} mapId =>{} ", uid, mapManager.getMaxMapId(), mapId);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
@ -116,12 +107,17 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
String error = initTeamInfo(teamId, uid, user, mapManager);
if (!error.isEmpty()){
LOGGER.info("enterMap() uid=>{} error =>{} ", uid, error);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
int leftEnergy = energy - scMapConfig.getEnergyConfused();
user.getPlayerInfoManager().setEnergy(leftEnergy);
if (mapId != mapManager.getCurMapId()) {
initMap(mapManager, user);
user.setMapManager(mapManager);
}
mapManager.setCurMapId(mapId);
initMap(mapManager, user);
user.setMapManager(mapManager);
}
List<CommonProto.Cell> cells = new ArrayList<>(mapManager.getMapInfo().size());
for (Map.Entry<Integer, Cell> entry : mapManager.getMapInfo().entrySet()) {
@ -140,6 +136,32 @@ public class MapLogic {
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
}
private String initTeamInfo(int teamId, int uid, User user, MapManager mapManager) throws Exception {
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
if (teamPosHeroInfos == null || teamPosHeroInfos.isEmpty()) {
return "阵容不存在";
}
int totalStep = 0;
List<String> heroes = new ArrayList<>(teamPosHeroInfos.size());
for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
if (hero == null) {
break;
}
hero.setCurHp(HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.HP_TYPE));
hero.setSpeed(HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.SPEED_TYPE));
totalStep += HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.ACTION_POWER_RORMULA_TYPE);
heroes.add(heroInfo.getHeroId());
}
if (heroes.size() != teamPosHeroInfos.size()) {
LOGGER.info("enterMap() uid=>{} team pos is wrong ", uid, teamId);
return "阵容有误";
}
mapManager.setTeamId(teamId);
mapManager.setTotalStep(totalStep + 5);
return "";
}
private void cellToProto(List<CommonProto.Cell> cells, Map.Entry<Integer, Cell> entry) {
Cell cell = entry.getValue();
if (cell.getEventId() == -1) {
@ -708,6 +730,9 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
if (mapManager.getCurMapId() == mapManager.getMaxMapId()) {
mapManager.setMaxMapId(mapManager.getMaxMapId() + 1);
}
resetMapInfo(user, true);
MapMission mapMission = mapManager.getAllMissionProgress().get(mapId);
if(mapMission!=null){

View File

@ -17,6 +17,7 @@ public class JumpBehavior extends BaseBehavior {
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
if (behaviorTypeValues[0][0] != 0) {
user.getMapManager().setCurMapId(behaviorTypeValues[0][0]);
user.getMapManager().setMaxMapId(behaviorTypeValues[0][0]);
MapLogic.getInstance().initMap(user.getMapManager(), user);
return true;
} else {