From bc00118998d5d0ca2c40484cdd041cb55e1fa9b9 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Sun, 7 Jun 2020 19:21:41 +0800 Subject: [PATCH] =?UTF-8?q?TASK=20=E3=80=90ID1006339=E3=80=91=E6=97=A5?= =?UTF-8?q?=E5=B8=B8=E4=BB=BB=E5=8A=A1=E5=8F=8A=E6=88=92=E7=81=B5=E7=A7=98?= =?UTF-8?q?=E5=AE=9D=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 2 ++ .../jieling/logic/activity/ActivityLogic.java | 6 ++-- .../jieling/logic/dao/UserMissionManager.java | 4 +-- .../mission/main/DailyMissionIdsType.java | 28 +++++++++++++++++++ .../jieling/logic/player/PlayerLogic.java | 9 ++++-- .../main/java/config/SDailyTasksConfig.java | 5 ++++ 6 files changed, 47 insertions(+), 7 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 3805783c7..7fb2efbac 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -254,5 +254,7 @@ public interface BIReason { int TRIAL_ADD_HP_CONSUME = 1062;//试炼回春散消耗 + int DAILY_SCORE_CONSUME = 1063;//删除日常任务积分 + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 662cf732c..336b909ab 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1250,13 +1250,13 @@ public class ActivityLogic implements IEventHandler{ MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } - public Object[] getActivityStatusByType(User user,int type){ + public Set getActivityStatusByType(User user,int type){ List activities = SGlobalActivity.sGlobalActivityMapByType.get(type); if(activities.isEmpty()){ - return null; + return new HashSet<>(); }else{ - Object[] objects = activities.stream().filter(n -> user.getActivityManager().getActivityMissionMap().keySet().contains(n.getId())).toArray(); + Set objects = activities.stream().filter(n -> user.getActivityManager().getActivityMissionMap().keySet().contains(n.getId())).map(sGlobalActivity -> sGlobalActivity.getId()).collect(Collectors.toSet()); return objects; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index fee7b1768..4b2e8153d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -264,7 +264,7 @@ public class UserMissionManager extends MongoBase { } break; case DAILY_MISSION_REWARD:{ - dailyMissionIdsType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.DAILYMISSION)); + dailyMissionIdsType.rewardMission(user,(int)parm[0], missionTypeEnumListMap.get(GameMisionType.DAILYMISSION)); if(!missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).isEmpty()){ calCumulationDataResult(user,MissionType.FINSIH_DAYILY_TIMES,missionTypeEnumListMap,(int)parm[0]); updateString("dailyMissionIdsType",dailyMissionIdsType); @@ -452,7 +452,7 @@ public class UserMissionManager extends MongoBase { temp[1] = STreasureSunlongTaskConfig.treasureTaskConfig.get(taskTypeMap.get(i)).getWeight(); randomTask[i] = temp; } - int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask,typeMissionNum[type-1]);// typeMissionNum[type-1] + int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask,Math.max(typeMissionNum[type-1],randomTask.length));// typeMissionNum[type-1] List missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION); for(Integer task:tasks){ treasureMissionIdsType.getDoingMissionIds().add(task); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java index 7c34b719f..5a0ab27b9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.logic.mission.main; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.dao.CumulationData; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionLoigc; @@ -7,8 +9,10 @@ import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.data.AbstractDataManager; import com.ljsd.jieling.logic.mission.data.BaseDataManager; import com.ljsd.jieling.logic.mission.data.DataManagerDistributor; +import com.ljsd.jieling.util.ItemUtil; import config.SDailyTasksConfig; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -24,9 +28,33 @@ public class DailyMissionIdsType extends AbstractMissionType{ @Override public int[][] reward(int missionId) { SDailyTasksConfig sDailyTasksConfigById = SDailyTasksConfig.getSDailyTasksConfigById(missionId); + return sDailyTasksConfigById.getReward(); } + public void rewardMission( User user, int missionId, List missionTypeEnumListMap){ + if (!getFinishMissionIds().contains(missionId)) { + return ; + } + getFinishMissionIds().remove(missionId); + getRewardedMissionIds().set(missionId); + + SDailyTasksConfig sDailyTasksConfigById = SDailyTasksConfig.getSDailyTasksConfigById(missionId); + int[][] reward = sDailyTasksConfigById.getReward(); + //添加戒灵秘宝奖励 + MissionStateChangeInfo stateChangeInfo; + if(ActivityLogic.getInstance().getActivityStatusByType(user,ActivityType.TREASURE).size()!=0){ + int[][] mazePoint = sDailyTasksConfigById.getMazePoint(); + int[][] ints = new int[reward.length + mazePoint.length][]; + System.arraycopy(reward, 0, ints, 0, reward.length); + System.arraycopy(mazePoint, 0, ints, reward.length, mazePoint.length); + stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.REWARD, ints); + }else { + stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.REWARD, reward); + } + missionTypeEnumListMap.add(stateChangeInfo); + } + @Override public void calCumulationDataResult(User user, CumulationData.Result result, List missionStateChangeInfos, CumulationData cumulationData) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 6530c1fcd..89942a455 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -389,8 +389,13 @@ public class PlayerLogic { fBuilder.setPlayerBindPhone(CommonProto.PlayerBindPhone.newBuilder().setPhoneNum(phoneBindInfo.getPhoneNum()).setState(phoneBindInfo.getState()).build()); } - //清除日清任务道具 - user.getItemManager().removeItem(Global.DAILY_TASK_REMOVE_ITEM); + Item item = user.getItemManager().getItem(Global.DAILY_TASK_REMOVE_ITEM); + if (item != null) { + Map dailyScore = new HashMap<>(); + dailyScore.put(Global.DAILY_TASK_REMOVE_ITEM, item.getItemNum()); + //清除日清任务道具 + ItemUtil.itemCost(user, dailyScore, BIReason.DAILY_SCORE_CONSUME, 1); + } } diff --git a/tablemanager/src/main/java/config/SDailyTasksConfig.java b/tablemanager/src/main/java/config/SDailyTasksConfig.java index c153537c8..a2db75afd 100644 --- a/tablemanager/src/main/java/config/SDailyTasksConfig.java +++ b/tablemanager/src/main/java/config/SDailyTasksConfig.java @@ -19,6 +19,7 @@ public class SDailyTasksConfig implements BaseConfig { private int[][] reward; + private int[][] mazePoint;//戒灵秘宝积分 public static Map config; public static Map> sTaskConfigByTypeMap; @@ -64,4 +65,8 @@ public class SDailyTasksConfig implements BaseConfig { } + public int[][] getMazePoint() { + return mazePoint; + } + } \ No newline at end of file