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 53bd85044..fe78c7325 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 @@ -38,7 +38,7 @@ public class BehaviorUtil { * @param user * @throws Exception */ - public static void destoryPoint(User user, int mapId, int needDistoryPointId) throws Exception { + public static void destoryPoint(User user, int needDistoryPointId) throws Exception { MapManager mapManager = user.getMapManager(); Map mapInfo = mapManager.getMapInfo(); Set needDelete = new HashSet<>(); @@ -53,6 +53,32 @@ public class BehaviorUtil { mapManager.setMapInfo(mapInfo); } + + /** + * 销毁多个事件点 + * @param user + * @throws Exception + */ + public static void destoryPoints(User user, int[] needDistoryPointIds) throws Exception { + Set set = new HashSet<>(needDistoryPointIds.length); + for (int i = 0; i < needDistoryPointIds.length; i++) { + set.add(needDistoryPointIds[i]); + } + MapManager mapManager = user.getMapManager(); + Map mapInfo = mapManager.getMapInfo(); + Set needDelete = new HashSet<>(); + for (Map.Entry entry : mapInfo.entrySet()) { + int pointId = entry.getValue().getPointId(); + if (set.contains(pointId)) { + needDelete.add(entry.getKey()); + } + } + for (Integer xy : needDelete) { + mapInfo.remove(xy); + } + mapManager.setMapInfo(mapInfo); + } + /** * 增加新事件点 * @param needDistoryPointId diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointAndBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointAndBehavior.java index 2f2b0c9cd..885450c9a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointAndBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointAndBehavior.java @@ -23,7 +23,7 @@ public class DestroyPointAndBehavior extends BaseBehavior { @Override public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { - BehaviorUtil.destoryPoint(user, user.getMapManager().getCurMapId(), behaviorTypeValues[0][1]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointBehavior.java index 7669e88fc..725ebe0eb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointBehavior.java @@ -14,7 +14,7 @@ public class DestroyPointBehavior extends BaseBehavior { @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { - BehaviorUtil.destoryPoint(user, user.getMapManager().getCurMapId(), behaviorTypeValues[0][0]); + BehaviorUtil.destoryPoints(user, behaviorTypeValues[0]); return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightAndDestroyPointBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightAndDestroyPointBehavior.java index 2fa884897..f488e0c04 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightAndDestroyPointBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FightAndDestroyPointBehavior.java @@ -24,7 +24,7 @@ public class FightAndDestroyPointBehavior extends BaseBehavior { @Override public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { BehaviorUtil.updateMissionEndFight(user, fightEndResponse); - BehaviorUtil.destoryPoint(user, 0, behaviorTypeValues[0][2]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][2]); return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FinsionMissionAndDestoryBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FinsionMissionAndDestoryBehavior.java index 3cce505d2..2b1eaf19e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FinsionMissionAndDestoryBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FinsionMissionAndDestoryBehavior.java @@ -15,7 +15,7 @@ public class FinsionMissionAndDestoryBehavior extends BaseBehavior{ @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { BehaviorUtil.updateMission(user, eventUpdateResponse); - BehaviorUtil.destoryPoint(user, user.getMapManager().getCurMapId(), behaviorTypeValues[0][1]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionAndDestroyPointBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionAndDestroyPointBehavior.java index b7aa1d9a8..f212a5ec3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionAndDestroyPointBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionAndDestroyPointBehavior.java @@ -17,7 +17,7 @@ public class MonitorMissionAndDestroyPointBehavior extends BaseBehavior { // 1#101011|101#13#18#101012|101#12#13#101009 // BehaviorUtil.updateMission(user, behaviorTypeValues[0][0], eventUpdateResponse); // 销毁事件点 - BehaviorUtil.destoryPoint(user, user.getMapManager().getCurMapId(), behaviorTypeValues[0][1]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); // 开新事件 for (int j = 1; j < behaviorTypeValues.length; j++) { BehaviorUtil.addBehaviorInfo(user,behaviorTypeValues[j][3], user.getMapManager(), behaviorTypeValues[j][0], behaviorTypeValues[j][1], behaviorTypeValues[j][2]); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFiveBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFiveBehavior.java index 292403c65..e31281fc5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFiveBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFiveBehavior.java @@ -15,7 +15,7 @@ public class ThirtyFiveBehavior extends BaseBehavior { @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { BehaviorUtil.updateMission(user, eventUpdateResponse); - BehaviorUtil.destoryPoint(user, 0, behaviorTypeValues[0][0]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][0]); for (int i = 1; i < behaviorTypeValues.length; i++) { BehaviorUtil.addBehaviorInfo(user,behaviorTypeValues[i][3], user.getMapManager(), behaviorTypeValues[i][0], behaviorTypeValues[i][1], behaviorTypeValues[i][2]); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFourBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFourBehavior.java index dbabd17c6..366bdd4cd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFourBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyFourBehavior.java @@ -16,7 +16,7 @@ public class ThirtyFourBehavior extends BaseBehavior { @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { CombatLogic.getInstance().bufferAddByEatFoodOrEventTrigger(user.getMapManager(), behaviorTypeValues[0][0]); - BehaviorUtil.destoryPoint(user, 0, behaviorTypeValues[0][1]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyNineBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyNineBehavior.java new file mode 100644 index 000000000..82510ed54 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyNineBehavior.java @@ -0,0 +1,34 @@ +package com.ljsd.jieling.handler.map.behavior; + +import com.ljsd.jieling.handler.map.EventType; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.FightInfoProto; +import com.ljsd.jieling.protocols.MapInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class ThirtyNineBehavior extends BaseBehavior { + @Override + public int getBehaviorType() { + return EventType.thirtyNine; + } + + @Override + public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { + return false; + } + + @Override + public boolean isFightBehavior() { + return true; + } + + @Override + public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { + BehaviorUtil.updateMissionEndFight(user, fightEndResponse); + for (int i = 1; i < behaviorTypeValues.length; i++) { + BehaviorUtil.addBehaviorInfo(user,behaviorTypeValues[i][3], user.getMapManager(), behaviorTypeValues[i][0], behaviorTypeValues[i][1], behaviorTypeValues[i][2]); + } + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtySexBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtySexBehavior.java index 562a77b5f..8fe9d978b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtySexBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtySexBehavior.java @@ -24,7 +24,7 @@ public class ThirtySexBehavior extends BaseBehavior{ return isEnough; } BehaviorUtil.updateMission(user, eventUpdateResponse); - BehaviorUtil.destoryPoint(user, 0, behaviorTypeValues[0][0]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][0]); return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyThreeBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyThreeBehavior.java index f01f7350b..c62f07c79 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyThreeBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyThreeBehavior.java @@ -23,7 +23,7 @@ public class ThirtyThreeBehavior extends BaseBehavior { @Override public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { - BehaviorUtil.destoryPoint(user, 0, behaviorTypeValues[0][1]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); for (int i = 1; i < behaviorTypeValues.length; i++) { BehaviorUtil.addBehaviorInfo(user,behaviorTypeValues[i][3], user.getMapManager(), behaviorTypeValues[i][0], behaviorTypeValues[i][1], behaviorTypeValues[i][2]); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyTwoBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyTwoBehavior.java index 006e50172..1e8e5b78e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyTwoBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/ThirtyTwoBehavior.java @@ -24,7 +24,7 @@ public class ThirtyTwoBehavior extends BaseBehavior { @Override public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { BehaviorUtil.updateMissionEndFight(user, fightEndResponse); - BehaviorUtil.destoryPoint(user, 0, behaviorTypeValues[0][1]); + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); for (int i = 1; i < behaviorTypeValues.length; i++) { BehaviorUtil.addBehaviorInfo(user,behaviorTypeValues[i][3], user.getMapManager(), behaviorTypeValues[i][0], behaviorTypeValues[i][1], behaviorTypeValues[i][2]); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemAndDestroyBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemAndDestroyBehavior.java index 85c275f7c..4f21065b3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemAndDestroyBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemAndDestroyBehavior.java @@ -16,11 +16,12 @@ public class UseItemAndDestroyBehavior extends BaseBehavior { @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { - boolean isEnough = ItemUtil.itemCost(user, behaviorTypeValues, BIReason.MAP_EVENT_CONSUME,getBehaviorType()); + int[][] userItem = new int[behaviorTypeValues[0][0]][behaviorTypeValues[0][1]]; + boolean isEnough = ItemUtil.itemCost(user, userItem, BIReason.MAP_EVENT_CONSUME,getBehaviorType()); if (!isEnough) { return isEnough; } - BehaviorUtil.destoryPoint(user, user.getMapManager().getCurMapId(), behaviorTypeValues[0][2]); + BehaviorUtil.destoryPoints(user, behaviorTypeValues[1]); return true; } }