back_recharge
zhangshanxue 2019-08-03 09:59:45 +08:00
commit b05268b766
3 changed files with 70 additions and 28 deletions

View File

@ -100,6 +100,8 @@ public class MapLogic {
user.setMapManager(mapManager);
}*/
// 进入新地图
SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapId);
int type = sChallengeConfig.getType();
if (mapManager.getCurMapId() == 0) {
Map<Integer, SCMap> scMap = SCMap.sCMap.get(mapId);
if (scMap == null) {
@ -113,7 +115,6 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "该地图不存在");
return;
}
SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapId);
if (sChallengeConfig == null) {
LOGGER.info("enterMap() uid=>{} sChallengeConfig == null =>{} ", uid, mapId);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "该地图不存在");
@ -144,7 +145,7 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
int type = sChallengeConfig.getType();
if (type == 1) {
if (mapManager.getPlayGenMaps().contains(mapId)) {
boolean enough = ItemUtil.itemCost(user, new int[][]{{Global.GENERALSTORY_TICKET, 1}}, BIReason.MAP_ENTER_CONSUME, mapId);
@ -161,15 +162,6 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "no ticket");
return;
}
}else if(type ==4){
List<TeamPosHeroInfo> teamPosForHero = user.getTeamPosManager().getTeamPosForHero().get(teamId);
for (int i = 0; i <teamPosForHero.size() ; i++) {
String endlessHeroId = teamPosForHero.get(i).getHeroId();
int maxHp = HeroLogic.getInstance().calHeroNotBufferAttribute(user,user.getHeroManager().getHero(endlessHeroId),false).get(1);
mapManager.addEndlessHero(teamPosForHero.get(i).getHeroId(),maxHp);
}
mapManager.setCurXY(mapManager.getEndlessMapInfo().getCurCell());
}
//todo 更新地圖次數
mapManager.setCurMapId(mapId);
@ -193,11 +185,33 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "地图错误,应进入" + mapManager.getCurMapId());
return;
}
MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder();
if(type ==4){
List<TeamPosHeroInfo> teamPosForHero = user.getTeamPosManager().getTeamPosForHero().get(teamId);
for (int i = 0; i <teamPosForHero.size() ; i++) {
String endlessHeroId = teamPosForHero.get(i).getHeroId();
int maxHp = HeroLogic.getInstance().calHeroNotBufferAttribute(user,user.getHeroManager().getHero(endlessHeroId),false).get(1);
mapManager.addEndlessHero(teamPosForHero.get(i).getHeroId(),maxHp);
}
mapManager.setCurXY(mapManager.getEndlessMapInfo().getCurCell());
EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo();
for(Map.Entry<Integer,Map<Integer,String>> entry :endlessMapInfo.getMapSign().entrySet()){
int curMapId = entry.getKey();
for(Map.Entry<Integer,String> signEntry: entry.getValue().entrySet()){
CommonProto.endlessSign sign = CommonProto.endlessSign.newBuilder()
.setMapId(curMapId)
.setCellId(signEntry.getKey())
.setInfo(signEntry.getValue())
.build();
mapEnterResponse.addSigns(sign);
}
}
}
List<CommonProto.Cell> cells = new ArrayList<>(mapManager.getMapInfo().size());
for (Map.Entry<Integer, Cell> entry : mapManager.getMapInfo().entrySet()) {
cellToProto(cells, entry);
}
MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder();
mapEnterResponse.setLeftTime(getLeftTime(user, true));
for (Map.Entry<Integer, Integer> buffEntry : mapManager.getFoodBufferMap().entrySet()) {
if (buffEntry.getValue()==0) {
@ -1103,8 +1117,9 @@ public class MapLogic {
mapManager.updateHeroOneAttribute(teamPosHeroInfo.getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[teamPosHeroInfo.getPosition()+1]);
}
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4&&teamId==401){
for (TeamPosHeroInfo teamPosHeroInfo : team) {
mapManager.updateEndlessHeroHp(teamPosHeroInfo.getHeroId(),checkResult[teamPosHeroInfo.getPosition()+1]);
for (int i = 0 ; i <team.size();i++) {
mapManager.updateEndlessHeroHp(team.get(i).getHeroId(),checkResult[i+2]);
mapManager.updateHeroOneAttribute(team.get(i).getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[i+2]);
}
}
@ -1331,8 +1346,9 @@ public class MapLogic {
mapManager.updateHeroOneAttribute(teamPosHeroInfo.getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[teamPosHeroInfo.getPosition()+1]);
}
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4&&teamId==401){
for (TeamPosHeroInfo teamPosHeroInfo : team) {
mapManager.updateEndlessHeroHp(teamPosHeroInfo.getHeroId(),checkResult[teamPosHeroInfo.getPosition()+1]);
for (int i = 0 ; i <team.size();i++) {
mapManager.updateEndlessHeroHp(team.get(i).getHeroId(),checkResult[i+2]);
mapManager.updateHeroOneAttribute(team.get(i).getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[i+2]);
}
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1, BIReason.MAP_GENERAL_FIGHT_REWARD);
@ -2739,6 +2755,9 @@ public class MapLogic {
continue;
}
int calHp = HeroLogic.getInstance().calHeroFinalAttributeWhenInMap(user, heroEntry.getValue(), true).get(1);
if(!endlessHeroInfo.containsKey(heroEntry.getKey())){
mapManager.addEndlessHero(heroEntry.getKey(),calHp);
}
for (Map.Entry<String,EndlessHero> entry :endlessHeroInfo.entrySet()) {
if (!entry.getKey().equals(heroEntry.getKey())) {
continue;
@ -2808,19 +2827,37 @@ public class MapLogic {
* @param content
* @param messageType
*/
public void setEndlessSign(ISession session,int mapId,int cellId, String content, MessageTypeProto.MessageType messageType) throws Exception {
public void setEndlessSign(ISession session,int type,int mapId,int cellId, String content, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
MapManager mapManager = user.getMapManager();
boolean result = ShieldedWordUtils.checkName(content,false);
String error;
if (!result) {
error = "输入有敏感字符";
}else{
mapManager.addEndlessSign(mapId,cellId,content);
error = "设置成功";
if (type == 1) {
boolean result = ShieldedWordUtils.checkName(content, false);
String error;
if (!result) {
error = "输入有敏感字符";
} else {
mapManager.addEndlessSign(mapId, cellId, content);
error = "设置成功";
}
MapInfoProto.SignEndlessCellResponse response = MapInfoProto.SignEndlessCellResponse.newBuilder().setError(error).build();
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);
} else if (type == 2) {
EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo();
if (endlessMapInfo.getMapSign() == null) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "无尽副本暂无标记");
return;
}
if (endlessMapInfo.getMapSign().get(mapId) == null) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "该地图无标记");
return;
}
if (endlessMapInfo.getMapSign().get(mapId).get(cellId) == null) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "该点无标记");
return;
}
mapManager.removeEndlessSign(mapId,cellId);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true);
}
MapInfoProto.SignEndlessCellResponse response = MapInfoProto.SignEndlessCellResponse.newBuilder().setError(error).build();
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
}
}

View File

@ -720,9 +720,13 @@ public class MapManager extends MongoBase {
if(!endlessMapInfo.getMapSign().containsKey(mapId)){
endlessMapInfo.getMapSign().put(mapId,new HashMap<>());
}
endlessMapInfo.getMapSign().get(mapId).put(mapId,info);
endlessMapInfo.getMapSign().get(mapId).put(cellId,info);
updateString("endlessMapInfo.mapSign."+mapId+"."+cellId,info);
}
public void removeEndlessSign(int mapId,int cellId){
endlessMapInfo.getMapSign().get(mapId).remove(cellId);
removeString(getMongoKey()+".endlessMapInfo.mapSign."+mapId+"."+cellId);
}
}

View File

@ -21,6 +21,7 @@ public class EndlessSetSignHandler extends BaseHandler {
byte[] bytes = netData.parseClientProtoNetData();
MapInfoProto.SignEndlessCellRequest request = MapInfoProto.SignEndlessCellRequest.parseFrom(bytes);
CommonProto.endlessSign sign = request.getSign();
MapLogic.getInstance().setEndlessSign(iSession,sign.getMapId(),sign.getCellId(),sign.getInfo(),MessageTypeProto.MessageType.ENDLESS_MAP_SIGN_RESPONSE);
MapLogic.getInstance().setEndlessSign(iSession,sign.getType(),sign.getMapId(),sign.getCellId(),sign.getInfo(),MessageTypeProto.MessageType.ENDLESS_MAP_SIGN_RESPONSE);
}
}