From ebebe1b2c4766ce9ff10fce3fb0e3e48f5158cae Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 27 Mar 2019 19:57:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E8=BF=9E=E5=9C=B0=E5=9B=BE=E5=BF=AB?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 43 +++++++++++++++++-- .../jieling/handler/map/MapMissionType.java | 8 ++-- .../ljsd/jieling/logic/hero/HeroLogic.java | 4 +- 3 files changed, 46 insertions(+), 9 deletions(-) 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 2e6bf8d8d..cbb216700 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); } @@ -907,9 +942,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); }