From 6d89769a685662a5fec1cf71fe2dbec6c0f30497 Mon Sep 17 00:00:00 2001 From: jiahuiwen <1024696487@qq.com> Date: Sat, 9 Mar 2019 19:02:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=20=E8=BE=B9=E7=BC=98?= =?UTF-8?q?=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 46 +++++++++++++------ .../ljsd/jieling/handler/map/MapManager.java | 10 ++++ .../handler/map/MapUpdateRequestHandler.java | 2 +- .../handler/map/behavior/BehaviorUtil.java | 1 - .../handler/map/behavior/FightBehavior.java | 13 ------ 5 files changed, 44 insertions(+), 28 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 d71c06a68..89fdd51c7 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 @@ -204,7 +204,15 @@ public class MapLogic { } - public void updateMap(ISession session, int curXY, List cells, MessageTypeProto.MessageType messageType) throws Exception { + public void updateMap(ISession session, int curXY, int triggerXY, List cells, MessageTypeProto.MessageType messageType) throws Exception { + if (triggerXY != curXY) { + boolean isConnect = CellUtil.checkIsNextCell(curXY, triggerXY); + if (!isConnect) { + LOGGER.info("updateMap() curXY=>{},triggerXY=>{} is not connect", curXY, triggerXY); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + } if (cells.isEmpty()) { LOGGER.info("cells.isEmpty()"); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); @@ -220,10 +228,14 @@ public class MapLogic { } Cell cell = mapManager.getMapInfo().get(curXY); if (cell == null) { - LOGGER.info("xy is wrong =>{}", curXY); - MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); - return; + cell = mapManager.getMapInfo().get(triggerXY); + if (cell == null) { + LOGGER.info("xy is wrong =>{} triggerXY=>{}", curXY, triggerXY); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } } + mapManager.setTriggerXY(triggerXY); mapManager.addWalkCells(new HashSet<>(cells)); mapManager.setCurXY(curXY); MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder() @@ -250,9 +262,12 @@ public class MapLogic { } Cell cell = mapManager.getMapInfo().get(mapManager.getCurXY()); if (cell == null) { - LOGGER.info("cell == null xy is wrong =>{}", mapManager.getCurXY()); - MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); - return; + cell = mapManager.getMapInfo().get(mapManager.getTriggerXY()); + if (cell == null) { + LOGGER.info("cell == null xy is wrong =>{} triggerXY=>{}", mapManager.getCurXY(), mapManager.getTriggerXY()); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } } int bigEventId = cell.getEventId(); if (eventId != bigEventId) { @@ -284,9 +299,9 @@ public class MapLogic { MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - int schedule = cell.getPointId(); - if (schedule == -1) { - LOGGER.info("event is finished,bigEventId=>{} smallEventId=>{}", bigEventId, -1); + MapPointConfig mapPointConfig = MapPointConfig.scMapEventMap.get(cell.getPointId()); + if (mapPointConfig == null) { + LOGGER.info("event is finished,bigEventId=>{} smallEventId=>{}", bigEventId, cell.getPointId()); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } @@ -354,7 +369,12 @@ public class MapLogic { break; } } - cell = mapManager.getMapInfo().get(mapManager.getCurXY()); + if (mapPointConfig.getTriggerRules() == 1) { + cell = mapManager.getMapInfo().get(mapManager.getCurXY()); + } else { + cell = mapManager.getMapInfo().get(mapManager.getTriggerXY()); + } + // 检测该事件点是否已被销毁 if (cell != null) { cell.setEventId(nextPoint); @@ -388,8 +408,8 @@ public class MapLogic { if (dropBuilder != null) { eventUpdateResponse.setDrop(dropBuilder); } - LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextPoint=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(), - cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextPoint); +// LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextPoint=>{}, eventBehaviorCommon=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(), +// cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextPoint, eventBehaviorCommon); MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index 9d1a1808b..676b23790 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -16,6 +16,8 @@ public class MapManager extends MongoBase { private int curXY; + private int triggerXY; + private int maxMapId; private Set heroes; @@ -135,4 +137,12 @@ public class MapManager extends MongoBase { this.totalStep = totalStep; } + public int getTriggerXY() { + return triggerXY; + } + + public void setTriggerXY(int triggerXY) { + updateString( "triggerXY", triggerXY); + this.triggerXY = triggerXY; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java index e530b8c51..3756c7bb9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java @@ -19,6 +19,6 @@ public class MapUpdateRequestHandler extends BaseHandler{ public void process(ISession iSession, PacketNetData netData) throws Exception { byte[] message = netData.parseClientProtoNetData(); MapInfoProto.MapUpdateRequest mapEnterRequest = MapInfoProto.MapUpdateRequest.parseFrom(message); - MapLogic.getInstance().updateMap(iSession, mapEnterRequest.getCurXY(), mapEnterRequest.getCellsList(), MessageTypeProto.MessageType.MAP_UDPATE_RESPONSE); + MapLogic.getInstance().updateMap(iSession, mapEnterRequest.getCurXY(), mapEnterRequest.getTriggerXY(), mapEnterRequest.getCellsList(), MessageTypeProto.MessageType.MAP_UDPATE_RESPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java index f34ba4c12..8db2dca3f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java @@ -41,7 +41,6 @@ public class BehaviorUtil { mapInfo.remove(xy); } user.getMapManager().setMapInfo(mapInfo); - LOGGER.info("distoryPoint=========>{}", user.getMapManager().getCurXY()); } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightBehavior.java index 7687098d1..a7f141fc7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightBehavior.java @@ -1,23 +1,10 @@ package com.ljsd.jieling.handler.map.behavior; -import com.ljsd.jieling.core.GlobalsDef; -import com.ljsd.jieling.db.redis.RedisKey; -import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.handler.map.EventType; -import com.ljsd.jieling.handler.map.MapManager; -import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.hero.HeroLogic; -import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; -import com.ljsd.jieling.util.CBean2Proto; -import com.ljsd.jieling.util.MonsterUtil; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - @Component public class FightBehavior extends BaseBehavior { @Override