diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java index 91fb76e62..ea2640a42 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java @@ -153,10 +153,19 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandlersetting.getScoreRange()[1]){ //35 winerGetScore = setting.getScoreRange()[1]; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java index ea790c897..96afbb7eb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java @@ -26,10 +26,9 @@ public class TakeMissionRewardHandler extends BaseHandler missionStateChangeInfos = null; + List missionStateChangeInfos = new ArrayList(); //日常 任务 + //ListrewardList = new ArrayList(); + Map rewardMap =new HashMap(); if(type == GameMisionType.DAILYMISSION.getType()){ - Map> gameMisionTypeListMap = - userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId); - missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION); - SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId); - if(sDailyTasksConfig.getType() == MissionType.FINSIH_DAYILY_TIMES.getMissionTypeValue() && missionStateChangeInfos !=null && !missionStateChangeInfos.isEmpty()){ - user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD); + for(int missionId:SDailyTasksConfig.config.keySet()){ + Map> gameMisionTypeListMap = + userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId); + missionStateChangeInfos.addAll(gameMisionTypeListMap.get(GameMisionType.DAILYMISSION)); + //missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION); + SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId); + if(sDailyTasksConfig.getType() == MissionType.FINSIH_DAYILY_TIMES.getMissionTypeValue() && missionStateChangeInfos !=null && !missionStateChangeInfos.isEmpty()){ + user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD); + } + } } - if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ - CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD); - ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type); - PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build(); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); + if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ + //奖励汇总 + PlayerInfoProto.TakeMissionRewardResponse.Builder res= PlayerInfoProto.TakeMissionRewardResponse.newBuilder(); + for(MissionStateChangeInfo info:missionStateChangeInfos){ + if(info.getRewwardGroups()!=null){ + for(int[] reward:info.getRewwardGroups()){ + if(rewardMap.containsKey(reward[0])){ + rewardMap.put(reward[0],rewardMap.get(reward[0])+reward[1]); + }else{ + rewardMap.put(reward[0],reward[1]); + } + res.addRewardId(info.getMissionId()); + } + } + ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(info.getMissionId()),type); + } + int[][] itemArr = rewardMap.entrySet().stream().map(n->new int[] {n.getKey(),n.getValue()}).toArray(int[][]::new); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, itemArr, BIReason.TAKE_MISSION_REWARD); + //ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type); + //PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,res.build(),true); }else{ throw new ErrorCodeException(ErrorCode.newDefineCode("mission can not get reward")); }