diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java index 99c9af52b..2012bafa2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java @@ -41,6 +41,10 @@ public class EventType { * 行为参数:任务id * 14 完成任务往下推一步并消耗物品,不摧毁事件点 * 行为参数:物品id#物品数量#任务id + * 15 销毁事件点 + * 行为参数:事件点id + * 16 消耗道具并销毁事件点 + * 行为参数:道具id#num#事件点id */ public static final int fight = 1; public static final int useItem = 2; @@ -54,4 +58,6 @@ public class EventType { public static final int openMission = 11; public static final int finishMission = 13; public static final int useItemMission = 14; + public static final int destroyPoint = 15; + public static final int useItemAndDestroy = 16; } 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 8619e91b5..7f24f1942 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 @@ -365,7 +365,6 @@ public class MapLogic { MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - // 1 完成事件点,即进度100% nextPoint = getNextPoint(user, mapManager, jumpTypeValues, sOptionAddConditions); break; } @@ -417,6 +416,7 @@ public class MapLogic { private int getNextPoint(User user, MapManager mapManager, int[][] jumpTypeValues, SOptionAddCondition sOptionAddConditions) { int nextPoint = 0; switch (sOptionAddConditions.getType()) { + // 1 完成事件点,即进度100% case 1:{ int doneEvent = sOptionAddConditions.getValues()[0][0]; for (Cell cell1 : mapManager.getMapInfo().values()) { 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 new file mode 100644 index 000000000..ee810f178 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyPointBehavior.java @@ -0,0 +1,25 @@ +package com.ljsd.jieling.handler.map.behavior; + +import com.ljsd.jieling.handler.map.Cell; +import com.ljsd.jieling.handler.map.EventType; +import com.ljsd.jieling.logic.dao.User; +import com.ljsd.jieling.protocols.MapInfoProto; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +public class DestroyPointBehavior extends BaseBehavior { + @Override + public int getBehaviorType() { + return EventType.destroyPoint; + } + + @Override + public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { + Map mapInfo = user.getMapManager().getMapInfo(); + mapInfo.remove(user.getMapManager().getCurXY()); + user.getMapManager().setMapInfo(mapInfo); + return true; + } +} 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 new file mode 100644 index 000000000..fbc9f9e8b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemAndDestroyBehavior.java @@ -0,0 +1,36 @@ +package com.ljsd.jieling.handler.map.behavior; + +import com.ljsd.jieling.config.SItem; +import com.ljsd.jieling.handler.map.Cell; +import com.ljsd.jieling.handler.map.EventType; +import com.ljsd.jieling.logic.dao.User; +import com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +public class UseItemAndDestroyBehavior extends BaseBehavior { + @Override + public int getBehaviorType() { + return EventType.useItemAndDestroy; + } + + @Override + public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { + SItem sItem = SItem.getsItemMap().get(behaviorTypeValues[0][0]); + boolean isEnough = ItemUtil.checkCost(user, sItem, behaviorTypeValues[0][1]); + if (!isEnough) { + return isEnough; + } + Map useItems = new HashMap<>(); + useItems.put(behaviorTypeValues[0][0], behaviorTypeValues[0][1]); + ItemUtil.useItem(user, useItems); + Map mapInfo = user.getMapManager().getMapInfo(); + mapInfo.remove(user.getMapManager().getCurXY()); + user.getMapManager().setMapInfo(mapInfo); + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemBehavior.java index 03759391e..18b612bf4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemBehavior.java @@ -14,7 +14,7 @@ import java.util.Map; public class UseItemBehavior extends BaseBehavior { @Override public int getBehaviorType() { - return EventType.eatBuff; + return EventType.useItem; } @Override