From b229e02637087967b202c54e5a747bbb5b672e30 Mon Sep 17 00:00:00 2001 From: jiahuiwen <1024696487@qq.com> Date: Fri, 31 May 2019 17:30:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=8C=E4=B8=BA10=20=E6=94=AF=E6=8C=81=20?= =?UTF-8?q?=E5=BF=AB=E9=80=9F=E6=88=98=E6=96=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 10 +++++++- .../ljsd/jieling/handler/map/MapManager.java | 23 ++++++++++++++----- .../handler/map/behavior/BaseBehavior.java | 4 ++++ .../handler/map/behavior/BehaviorUtil.java | 19 +++++++++++++++ .../map/behavior/MonitorMissionBehavior.java | 19 ++++++++++++--- 5 files changed, 65 insertions(+), 10 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 8b3c5c396..63a860223 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 @@ -805,6 +805,9 @@ public class MapLogic { mapManager.setTriggerXY(0); mapManager.setDieCount(0); mapManager.setCanMoveTime(0); + mapManager.setMonsterId(0); + mapManager.setDoneKillNum(0); + mapManager.setNeedKillNum(0); mapManager.setStars(null); TemporaryItems temporaryItems = mapManager.getTemporaryItems(); mapManager.setMission(null); @@ -930,10 +933,15 @@ public class MapLogic { } BehaviorUtil.destoryApointXY(user, destoryXY); - SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(groupId); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1,BIReason.MAP_FAST_FIGHT_REWARD); FightInfoProto.FastFightResponse.Builder fastFightResponse = FightInfoProto.FastFightResponse.newBuilder(); + + if (mapManager.getMonsterId() > 0) { + BaseBehavior baseBehavior = baseBehaviorMap.get(10); + baseBehavior.afterFastFight(user, groupId, fastFightResponse); + } + fastFightResponse.setEnventDrop(drop.build()); fastFightResponse.setResult(resultCode); fastFightResponse.addAllRemainHpList(remainHp); 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 ae0896f5b..bfda84d39 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 @@ -44,7 +44,9 @@ public class MapManager extends MongoBase { private int monsterId; - private int monsterNum; + private int needKillNum; + + private int doneKillNum; private int lastUpdateEnergyTime; @@ -243,13 +245,22 @@ public class MapManager extends MongoBase { return monsterId; } - public int getMonsterNum() { - return monsterNum; + public int getNeedKillNum() { + return needKillNum; } - public void setMonsterNum(int monsterNum) { - updateString("monsterNum", monsterNum); - this.monsterNum = monsterNum; + public void setNeedKillNum(int needKillNum) { + updateString("needKillNum", needKillNum); + this.needKillNum = needKillNum; + } + + public int getDoneKillNum() { + return doneKillNum; + } + + public void setDoneKillNum(int doneKillNum) { + updateString("doneKillNum", doneKillNum); + this.doneKillNum = doneKillNum; } public int getLastUpdateEnergyTime() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BaseBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BaseBehavior.java index 6ce3b95b5..697a99977 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BaseBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BaseBehavior.java @@ -17,6 +17,10 @@ public abstract class BaseBehavior { return false; } + public boolean afterFastFight(User user, int monsterId, FightInfoProto.FastFightResponse.Builder fastFightResponse) throws Exception { + return false; + } + public boolean isFightBehavior() { return false; } 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 f9a467ffc..179f9e0dd 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 @@ -255,6 +255,25 @@ public class BehaviorUtil { return true; } + /** + * 快速战斗结束更新任务 + */ + public static boolean updateMissionFastFight(User user, FightInfoProto.FastFightResponse.Builder fastFightResponse) throws Exception { + Mission mission = user.getMapManager().getMission(); + if (mission == null) { + return false; + } + CheckMissionReturn checkMissionReturn = MapLogic.getInstance().checkMission(user); + if (checkMissionReturn != null) { + CommonProto.Mission missionProto = MapLogic.getInstance().getMission(checkMissionReturn.mission); + fastFightResponse.setMission(missionProto); + if (checkMissionReturn.drop != null) { + fastFightResponse.setMissionDrop(checkMissionReturn.drop); + } + } + return true; + } + /** * 销毁当前点 * @param user diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java index 9c5fbaf9d..4b5eff16f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java @@ -17,6 +17,7 @@ public class MonitorMissionBehavior extends BaseBehavior { public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { boolean b = BehaviorUtil.updateMission(user, eventUpdateResponse); user.getMapManager().setMonsterId(behaviorTypeValues[0][0]); + user.getMapManager().setNeedKillNum(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]); } @@ -30,11 +31,23 @@ public class MonitorMissionBehavior extends BaseBehavior { @Override public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { - int monsterNum = user.getMapManager().getMonsterNum(); - if (behaviorTypeValues[0][0] == user.getMapManager().getMonsterId() && monsterNum < behaviorTypeValues[0][1]) { - user.getMapManager().setMonsterNum(monsterNum + 1); + int doneKillNum = user.getMapManager().getDoneKillNum(); + int needKillNum = user.getMapManager().getNeedKillNum(); + if (behaviorTypeValues[0][0] == user.getMapManager().getMonsterId() && doneKillNum < needKillNum) { + user.getMapManager().setDoneKillNum(doneKillNum + 1); BehaviorUtil.updateMissionEndFight(user, fightEndResponse); } return true; } + + @Override + public boolean afterFastFight(User user, int monsterId, FightInfoProto.FastFightResponse.Builder fastFightResponse) throws Exception { + int doneKillNum = user.getMapManager().getDoneKillNum(); + int needKillNum = user.getMapManager().getNeedKillNum(); + if (monsterId == user.getMapManager().getMonsterId() && doneKillNum < needKillNum) { + user.getMapManager().setDoneKillNum(doneKillNum + 1); + BehaviorUtil.updateMissionFastFight(user, fastFightResponse); + } + return true; + } }