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 0a92c6a4c..5bfed1f0e 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 @@ -2,11 +2,11 @@ package com.ljsd.jieling.handler.map; import com.ljsd.jieling.config.*; 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.behavior.BaseBehavior; import com.ljsd.jieling.handler.mission.Mission; -import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; +import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.network.session.ISession; @@ -283,7 +283,6 @@ public class MapLogic { * @param optionId */ public void updateEvent(ISession session, int eventId, int optionId, MessageTypeProto.MessageType messageType) throws Exception { - LOGGER.info("updateEvent() client param eventId=>{} optionId=>{}", eventId, optionId); int uid = session.getUid(); User user = UserManager.getUser(uid); MapManager mapManager = user.getMapManager(); @@ -451,8 +450,8 @@ public class MapLogic { if (dropBuilder != null) { eventUpdateResponse.setDrop(dropBuilder); } - 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); +// 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); MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true); } 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 13a0a3777..eff311d1f 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 @@ -115,7 +115,7 @@ public class BehaviorUtil { public static boolean updateMission(User user, int missionId, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception{ Map doingMissions = user.getMissionManager().getDoingMissions(); Mission mission = doingMissions.get(missionId); - if (mission == null) { + if (mission == null || !mission.isOpen()) { return false; } CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyMissionBehavior.java index 44e3a938f..a94638268 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DestroyMissionBehavior.java @@ -24,7 +24,7 @@ public class DestroyMissionBehavior extends BaseBehavior { public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { Map doingMissions = user.getMissionManager().getDoingMissions(); Mission mission = doingMissions.get(behaviorTypeValues[0][0]); - if (mission == null) { + if (mission == null || !mission.isOpen()) { return false; } CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, 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 e1d509092..eccdc7a65 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 @@ -23,7 +23,7 @@ public class MonitorMissionBehavior extends BaseBehavior { public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { Map doingMissions = user.getMissionManager().getDoingMissions(); Mission mission = doingMissions.get(behaviorTypeValues[0][0]); - if (mission == null) { + if (mission == null || !mission.isOpen()) { return false; } CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenMissionBehavior.java index de258ac91..5224b931d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/OpenMissionBehavior.java @@ -26,7 +26,7 @@ public class OpenMissionBehavior extends BaseBehavior { public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { Map doingMissions = user.getMissionManager().getDoingMissions(); Mission mission = doingMissions.get(behaviorTypeValues[0][0]); - if (mission == null) { + if (mission == null || !mission.isOpen()) { return false; } CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemMissionBehavior.java index 2e1364bb7..24be4c17f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/UseItemMissionBehavior.java @@ -28,7 +28,7 @@ public class UseItemMissionBehavior extends BaseBehavior { return false; } boolean checkCost = ItemUtil.itemCost(user, behaviorTypeValues); - if (!checkCost) { + if (!checkCost || !mission.isOpen()) { return false; } CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java index c6b12600c..bb5323e4e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/Mission.java @@ -14,6 +14,8 @@ public class Mission extends MongoBase { private String missionInfo; + private boolean isOpen; + // pointId, eventId private Map mapPoints = new ConcurrentHashMap<>(); @@ -62,5 +64,13 @@ public class Mission extends MongoBase { updateString("mapPoints." + pointId, eventId); this.mapPoints.put(pointId, eventId); } - + + public boolean isOpen() { + return isOpen; + } + + public void setOpen(boolean open) { + updateString("open", open); + isOpen = open; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java index ae67f57fb..286f11231 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/MissionLogic.java @@ -147,4 +147,19 @@ public class MissionLogic { MessageUtil.sendMessage(session, 1, messageType.getNumber(), takeMissionResponse, true); } + + public void openMission(ISession session, int missionId, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + Map doingMissions = user.getMissionManager().getDoingMissions(); + if (!doingMissions.containsKey(missionId)) { + LOGGER.info("openMission uid=>{}, not this misson missionId=>{}", session.getUid(), missionId); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + Mission mission = doingMissions.get(missionId); + mission.setOpen(true); + user.getMissionManager().updateOneDoingMissions(missionId, mission); + MessageUtil.sendErrorResponse(session, 1, messageType.getNumber(), ""); + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/OpenMissionRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/OpenMissionRequestHandler.java new file mode 100644 index 000000000..967130193 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/OpenMissionRequestHandler.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.handler.mission; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.MissionInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class OpenMissionRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.MISSION_OPEN_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] message = netData.parseClientProtoNetData(); + MissionInfoProto.OpenMissionRequest openMissionRequest = MissionInfoProto.OpenMissionRequest.parseFrom(message); + int missionId = openMissionRequest.getMissionId(); + MissionLogic.getInstance().openMission(iSession, missionId, MessageTypeProto.MessageType.MISSION_OPEN_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java index bcd3f2f9b..35911268d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java @@ -83,6 +83,7 @@ public class UserManager { Mission mission = new Mission(); mission.setMissionId(1); mission.setMissionStep(0); + mission.setOpen(true); missionManager.getDoingMissions().put(mission.getMissionId(), mission); MapManager mapManager = user.getMapManager(); //TODO