地图修改
parent
06f5ad260a
commit
a6bfd95324
|
|
@ -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){
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue