diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 5a7e2e8a3..670d2fa3c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -243,9 +243,43 @@ public class MapLogic { initMapMission(mapManager); } + public boolean updateMapByOnlyConsumeActionPower(ISession session, int curXY,int triggerXY, List cells,MessageTypeProto.MessageType messageType) throws Exception { + if(triggerXY == -1){ + int uid = session.getUid(); + User user = UserManager.getUser(uid); + MapManager mapManager = user.getMapManager(); + SCMapConfig scMapConfig = SCMapConfig.getsCMapSize().get(mapManager.getCurMapId()); + int moveConfused = scMapConfig.getMoveConfused(); + if (moveConfused > 0) { + int leftStep = mapManager.getTotalStep() - cells.size() * moveConfused; + if (leftStep <0) { + leftStep = 0; + resetMapInfo(user, false); + LOGGER.info("updateMap() uid=>{}, leftStep=>{}", uid, leftStep); + MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder().build(); + MessageUtil.sendMessage(session, 0, messageType.getNumber(), mapUpdateResponse, true); + } + updateMapMission(mapManager,EventType.updateEvent,MapMissionType.CONSUME_ACTION_POWER_EVENT.getMissionTypeValue(),cells.size() * moveConfused); + mapManager.setTotalStep(leftStep); + mapManager.addWalkCells(new HashSet<>(cells)); + mapManager.setCurXY(curXY); + MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder() + .setLeftStep(mapManager.getTotalStep()) + .build(); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse, true); + } + return true; + } + return false; + + } + public void updateMap(ISession session, int curXY, int triggerXY, List cells, MessageTypeProto.MessageType messageType) throws Exception { // LOGGER.info("updateMap() curXY=>{},triggerXY=>{}", curXY, triggerXY); + if(updateMapByOnlyConsumeActionPower(session,curXY,triggerXY,cells,messageType)){ + return; + } if (triggerXY != curXY) { boolean isConnect = CellUtil.checkIsNextCell(curXY, triggerXY); if (!isConnect) { @@ -278,6 +312,7 @@ public class MapLogic { int leftStep = mapManager.getTotalStep() - cells.size() * moveConfused; if (leftStep <= 0) { leftStep = 0; + updateMapMission(mapManager,EventType.updateEvent,MapMissionType.CONSUME_ACTION_POWER_EVENT.getMissionTypeValue(),cells.size() * moveConfused); resetMapInfo(user, false); LOGGER.info("updateMap() uid=>{}, leftStep=>{}", uid, leftStep); MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder().build(); @@ -485,7 +520,7 @@ public class MapLogic { // LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextEventId=>{}, eventBehaviorCommon=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(), // cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextEventId, eventBehaviorCommon); saveRefreshInfo(pointId, mapManager, mapPointConfig, nextEventId); - updateMapMission(mapManager,EventType.updateEvent,eventId,0); + updateMapMission(mapManager,EventType.updateEvent,pointId,0); MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true); } @@ -920,9 +955,11 @@ public class MapLogic { if(eventType == EventType.updateEvent){ if(logic == eventId){ if(missionValue heroAllAttribute = calHeroAllAttribute(hero); + Map heroAllAttribute = calHeroFinalAttribute(user,hero); for(Map.Entry item : heroAllAttribute.entrySet() ){ LOGGER.info("the heroTdd={},the heroLevel={},the attID is={},attValue={}",hero.getTemplateId(),hero.getLevel(),item.getKey(),item.getValue() ); } @@ -767,7 +767,7 @@ public class HeroLogic { private void combinedAttribute(int[][] otherAttriMap,Map heroAttributeMap){ for(int[] item : otherAttriMap){ int propertyId = item[0]; - int propertyValue = item[0]; + int propertyValue = item[1]; if(heroAttributeMap.containsKey(propertyId)){ propertyValue += heroAttributeMap.get(propertyId); }