From 26c1259480cfc2e49bb4b15e42335e0d55484dbe Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 1 Jun 2020 15:26:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=B3=BB=E7=BB=9F=E6=A2=B3?= =?UTF-8?q?=E7=90=86=E5=92=8C=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/dao/UserMissionManager.java | 18 + .../jieling/logic/mission/MissionLoigc.java | 6 + .../jieling/logic/mission/MissionType.java | 336 ++++++++++-------- 3 files changed, 202 insertions(+), 158 deletions(-) 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 34fb431b9..fee7b1768 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 @@ -27,6 +27,23 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +/** + * TODO 任务zsx + * Q + * 1 数据层里面做了逻辑 + * 2 将完整的任务数据 拆分成了任务状态分类 任务进度(状态分别存储 状态转移的过程就需要手动调整) + * 3 扩展复杂 新增类型 要增加数据更新type 需要新增更新器 需要新郑任务进度获取 + * 4 映射多余 event映射多个taskType 再映射到多个或一个类型刷新器 刷新指定字段 + * 建立了类型到字段的映射关系 随后类型字段的获取却使用if else + * + * F + * 1 task数据层抽象 + * 2 面向对象设计 + * 3 (优化)业务层抽象 扩展类型只应该新增任务类型类的击中和完成接口的实现 + * 4 (优化)枚举扩展id 预缓存id + * + * + * */ public class UserMissionManager extends MongoBase { private VipMissionIdsType vipMissionIdsType=new VipMissionIdsType(); private DailyMissionIdsType dailyMissionIdsType=new DailyMissionIdsType(); @@ -49,6 +66,7 @@ public class UserMissionManager extends MongoBase { private CumulationData sevenHappyCumulationData = new CumulationData(); private CumulationData achievementMap = new CumulationData(); + //触发任务上身 public void openMission(User user,GameEvent event,Map> missionTypeEnumListMap, Object... parm) throws Exception { ISession session= OnlineUserManager.getSessionByUid(user.getId()); switch (event){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 85cbe0acd..1396a47b8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -448,6 +448,12 @@ public class MissionLoigc { } } + + /** + * TODO 不够抽象 ifelse? + * + * 已经有了映射关系 不应再ifelse 现100及1以后的类型 进度完成状态及进度迁移到类型处理器中 + */ public static int getDoingProgress(User user,CumulationData cumulationData, int missionTypeId, int[] missionSubType){ MissionType missionType = MissionType.findByMissionId(missionTypeId); if(missionType == null){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java index fc262affb..3f31bbcee 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java @@ -1,5 +1,8 @@ package com.ljsd.jieling.logic.mission; +import java.util.HashMap; +import java.util.Map; + public enum MissionType { RECRUITMENT_RANDOM_HEROES(1), //群英征募 群英招募次数 COLLECT_QUALITY_HERO (2), //获得某品质妖灵师 获得SSR、SR品质的妖灵师数量 @@ -92,7 +95,11 @@ public enum MissionType { FINISH_EXPEDITION_HERO_TIMES(84),//完成猎妖之路次数达到 SEVEN_GIFT_BUY(86),//购买7日狂欢福利礼包%s次七日狂欢积分 FINISIN_DAILY_CHALLENGE_TIMES(87),//完成%s类型(0为不限类型)的日常副本%s次 - + SIX_RANDOM_TIMES(88),//使用6灵阁召唤num次 + EXPEDITION_FLOOR_TIMES(89),//猎妖之路通过第floor层的首领节点(每层最多一个)num次 + DECOMPOSE_TIMES(100),//献祭武将num个 + DEATH_PATH_TIMES(101),//击杀过关十绝阵num次 + JEWL_ALL_LEVE(102),//全体上阵成员法宝等级达到level(需求人数6人,不满上阵不计完成度) ; private int missionType; @@ -105,163 +112,176 @@ public enum MissionType { this.missionType = missionType; } - public static MissionType findByMissionId(int missionTypeId){ - switch (missionTypeId){ - case 1: - return RECRUITMENT_RANDOM_HEROES; - case 2: - return COLLECT_QUALITY_HERO; - case 3: - return HERO_LEVLE_COUNT; - case 4: - return POKEMON_ADVANCED; - case 5: - return POKEMON_FORCE; - case 6: - return POKEMON_ALL_FORCE; - case 7: - return ARENA_CHALLENEGE_NUMS; - case 8: - return ARENA_SCORE; - case 9: - return USER_LEVEL; - case 10: - return USER_FORCE; - case 11: - return USER_CONSUMER_GEM; - case 12: - return USER_WORKSHOP_LEVEL; - case 13: - return USER_GET_EQUIP_QUALITY; - case 14: - return LEVEL_STORY_PASS; - case 15: - return GENERAL_STORY_PASS; - case 16: - return HERO_STORY_PASS; - case 17: - return KILL_INVASIONBOSS; - case 18: - return SECRETBOX_TIMES; - case 19: - return EQUIP_FORCE_NUMS; - case 20: - return BUY_GOLD_TIMES; - case 21: - return BUY_STAMINA_TIMES; - case 22: - return WORKSHOP_CREATE_EQUIP_NUMS; - case 23: - return GENERAL_STORY_TIMES; - case 24: - return HERO_STORY_TIMES; - case 25: - return LEVEL_STORY_TIMES; - case 26: - return HERO_LEVLE_TIMES; - case 27: - return TAKE_ADVENTUREREWARD_TIMES; - case 28: - return ARENA_FIGHTSUCCES_TIMES; - case 29: - return FINSIH_DAYILY_TIMES; - case 30: - return RING_FIREA_DVANCED; - case 31: - return COPY_STORY_LEVLE; - case 32: - return COPY_STORY_TIMES; - case 33: - return ELEMENT_RANDOM_TIMES; - case 34: - return HERO_STORY_PLAY_TIMES; - case 35: - return INVASIONBOSS_PLAY_TIMES; - case 36: - return FAST_ADVENTUREREWARD_TIMES; - case 37: - return ARENA_RANK; - case 38: - return SENVER_HAPPY; - case 39: - return HERO_BREAK_TIMES; - case 40: - return TAKE_CHAPTER_REWARD_TIMES; - case 41: - return HERO_UP_STAR_TIMES; - case 42: - return VIP_LEVEL; - case 43: - return TAKE_ONLINE_REWARD_TIMES; - case 44: - return TAKE_SENVEN_LOGIN_REWARD_TIMES; - case 45: - return TAKE_DAILY_BOX_TIMES; - case 46: - return HERO_WEAR_EQUIP_TIMES; - case 47: - return SYNTHESIS_HERO_STAR_TIMES; - case 48: - return USER_CONSUMER_STAMINA; - case 49: - return COLLECT_DIFFERENT_HEROS; - case 50: - return ONE_HERO_UP_STAR_TIMES; - case 51: - return HERO_IN_TEAM_NUMS; - case 52: - return BUY_GROCERY_TIMES; - case 53: - return FRIEND_NUMS; - case 54: - return GIVE_FRIEND_STAMIN_TIMES; - case 55: - return HERO_UP_SOME_STAR_TIMES; - case 56: - return JOIN_MONSTER_ATTACK_TIMES;//参与兽潮来袭的次数 - case 57: - return MONSTER_ATTACK_LEVEL;//兽潮来袭到达x层 - case 58: - return TO_BE_STRONGER; - case 59: - return BLOODY_KILL_NUMS; - case 60: - return ENDLESS_CONSUME_ACTION; - case 61: - return FAMILY_FIGHT_ATTACK; - case 62: - return ESPECIAL_EQUIP; - case 65: - return FIND_STAR; - case 66: - return TAKE_FRIEND_GIFT; - case 69: - return JOIN_FAMILY; - case 71: - return FRIEND_APPLY; - case 72: - return COMHERO_STORY_PASS; - case 73: - return LOGIN_TIMES; - case 74: - return REARGE_TOTAL; - case 76: - return FINISH_MISSING_ROOM; - case 77: - return REFRESH_MISSING_ROOM; - case 78: - return SPECIAL_EQUIP_LEVEL_UP; - case 83: - return LUCKY_WHEELS_TIMES; - case 84: - return FINISH_EXPEDITION_HERO_TIMES; - case 86: - return SEVEN_GIFT_BUY; - case 87: - return FINISIN_DAILY_CHALLENGE_TIMES; - default: - return null; - } + static Map map = new HashMap<>(); + static { + for (MissionType type:MissionType.values()) { + map.put(type.getMissionTypeValue(),type); + } } + + public static MissionType findByMissionId(int missionTypeId){ + return map.get(missionTypeId); + } + + //fix 扩展麻烦 +// public static MissionType findByMissionId(int missionTypeId){ +// switch (missionTypeId){ +// case 1: +// return RECRUITMENT_RANDOM_HEROES; +// case 2: +// return COLLECT_QUALITY_HERO; +// case 3: +// return HERO_LEVLE_COUNT; +// case 4: +// return POKEMON_ADVANCED; +// case 5: +// return POKEMON_FORCE; +// case 6: +// return POKEMON_ALL_FORCE; +// case 7: +// return ARENA_CHALLENEGE_NUMS; +// case 8: +// return ARENA_SCORE; +// case 9: +// return USER_LEVEL; +// case 10: +// return USER_FORCE; +// case 11: +// return USER_CONSUMER_GEM; +// case 12: +// return USER_WORKSHOP_LEVEL; +// case 13: +// return USER_GET_EQUIP_QUALITY; +// case 14: +// return LEVEL_STORY_PASS; +// case 15: +// return GENERAL_STORY_PASS; +// case 16: +// return HERO_STORY_PASS; +// case 17: +// return KILL_INVASIONBOSS; +// case 18: +// return SECRETBOX_TIMES; +// case 19: +// return EQUIP_FORCE_NUMS; +// case 20: +// return BUY_GOLD_TIMES; +// case 21: +// return BUY_STAMINA_TIMES; +// case 22: +// return WORKSHOP_CREATE_EQUIP_NUMS; +// case 23: +// return GENERAL_STORY_TIMES; +// case 24: +// return HERO_STORY_TIMES; +// case 25: +// return LEVEL_STORY_TIMES; +// case 26: +// return HERO_LEVLE_TIMES; +// case 27: +// return TAKE_ADVENTUREREWARD_TIMES; +// case 28: +// return ARENA_FIGHTSUCCES_TIMES; +// case 29: +// return FINSIH_DAYILY_TIMES; +// case 30: +// return RING_FIREA_DVANCED; +// case 31: +// return COPY_STORY_LEVLE; +// case 32: +// return COPY_STORY_TIMES; +// case 33: +// return ELEMENT_RANDOM_TIMES; +// case 34: +// return HERO_STORY_PLAY_TIMES; +// case 35: +// return INVASIONBOSS_PLAY_TIMES; +// case 36: +// return FAST_ADVENTUREREWARD_TIMES; +// case 37: +// return ARENA_RANK; +// case 38: +// return SENVER_HAPPY; +// case 39: +// return HERO_BREAK_TIMES; +// case 40: +// return TAKE_CHAPTER_REWARD_TIMES; +// case 41: +// return HERO_UP_STAR_TIMES; +// case 42: +// return VIP_LEVEL; +// case 43: +// return TAKE_ONLINE_REWARD_TIMES; +// case 44: +// return TAKE_SENVEN_LOGIN_REWARD_TIMES; +// case 45: +// return TAKE_DAILY_BOX_TIMES; +// case 46: +// return HERO_WEAR_EQUIP_TIMES; +// case 47: +// return SYNTHESIS_HERO_STAR_TIMES; +// case 48: +// return USER_CONSUMER_STAMINA; +// case 49: +// return COLLECT_DIFFERENT_HEROS; +// case 50: +// return ONE_HERO_UP_STAR_TIMES; +// case 51: +// return HERO_IN_TEAM_NUMS; +// case 52: +// return BUY_GROCERY_TIMES; +// case 53: +// return FRIEND_NUMS; +// case 54: +// return GIVE_FRIEND_STAMIN_TIMES; +// case 55: +// return HERO_UP_SOME_STAR_TIMES; +// case 56: +// return JOIN_MONSTER_ATTACK_TIMES;//参与兽潮来袭的次数 +// case 57: +// return MONSTER_ATTACK_LEVEL;//兽潮来袭到达x层 +// case 58: +// return TO_BE_STRONGER; +// case 59: +// return BLOODY_KILL_NUMS; +// case 60: +// return ENDLESS_CONSUME_ACTION; +// case 61: +// return FAMILY_FIGHT_ATTACK; +// case 62: +// return ESPECIAL_EQUIP; +// case 65: +// return FIND_STAR; +// case 66: +// return TAKE_FRIEND_GIFT; +// case 69: +// return JOIN_FAMILY; +// case 71: +// return FRIEND_APPLY; +// case 72: +// return COMHERO_STORY_PASS; +// case 73: +// return LOGIN_TIMES; +// case 74: +// return REARGE_TOTAL; +// case 76: +// return FINISH_MISSING_ROOM; +// case 77: +// return REFRESH_MISSING_ROOM; +// case 78: +// return SPECIAL_EQUIP_LEVEL_UP; +// case 83: +// return LUCKY_WHEELS_TIMES; +// case 84: +// return FINISH_EXPEDITION_HERO_TIMES; +// case 86: +// return SEVEN_GIFT_BUY; +// case 87: +// return FINISIN_DAILY_CHALLENGE_TIMES; +// default: +// return null; +// } +// +// } }