diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/TakeLayRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/TakeLayRewardHandler.java index f6f71eb24..9c6076b0b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/TakeLayRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/TakeLayRewardHandler.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.Expedition; import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; import com.ljsd.jieling.config.clazzStaticCfg.PlayStaticConfig; +import com.ljsd.jieling.config.clazzStaticCfg.WorldBossTreasureStaticConfig; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; @@ -18,13 +19,12 @@ import com.ljsd.jieling.protocols.Expedition; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; +import config.SExpeditionNodeConfig; import config.SExpeditionSetting; +import config.SWorldBossTreasureConfig; import manager.STableManager; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Description: TOFIX 删除猎妖之路的原层数宝箱奖励功能。改为通关奖励 @@ -99,6 +99,9 @@ public class TakeLayRewardHandler extends BaseHandler rewardStatusMap = user.getExpeditionManager().getWorldTreasureReward().getRewardStatusMap(); + ExpeditionLogic.sendTreasureRewardUpdate(iSession,user.getExpeditionManager().getWorldTreasureReward().getScore(),rewardStatusMap); + Expedition.TakeExpeditionBoxRewardResponse builder = Expedition.TakeExpeditionBoxRewardResponse.newBuilder().setDrop(drop).addAllLeve(objects).build(); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_TAKE_BOXREWARD_RESONSE_VALUE, builder, 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 dacb8490f..5b4b0a3a5 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 @@ -235,6 +235,7 @@ public class BehaviorUtil { .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) .setPosition(teamPosHeroInfo.getPosition()) + .setStar(hero.getStar()) .build(); heroFightInfos.add(heroFightInfo); } @@ -275,6 +276,7 @@ public class BehaviorUtil { .setUnitId(Integer.toString(hero.getTemplateId())) .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) + .setStar(hero.getStar()) .build(); heroFightInfos.add(heroFightInfo); } @@ -319,6 +321,7 @@ public class BehaviorUtil { .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) .setPosition(++i) + .setStar(hero.getStar()) .build(); heroFightInfos.add(heroFightInfo); } @@ -363,6 +366,7 @@ public class BehaviorUtil { .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) .setPosition(++i) + .setStar(heroStar) .build(); heroFightInfos.add(heroFightInfo); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java index 927c703ba..2877157f7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java @@ -118,6 +118,7 @@ public class BloodLogic { .setUnitSkillIds(heroSkill)//.substring(0, heroSkill.length() - 1) .setProperty(property.substring(0, property.length() - 1)) .setPosition(++index) + .setStar(entry.getValue().getStar()) .build(); heroDefendFightInfos.add(heroFightInfo); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index c6e5cf4af..c36303ec8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -132,6 +132,16 @@ public class CumulationData { public Map servenGiftTimes = new HashMap<>();//每日登陆次数 public Map dailyChallengeMap = new HashMap<>();//每日挑战副本 + public int card_random_type;//使用普通召唤num次(十连抽num计10) + public Map guild_give_time ;//使用level级别(0不限、1普通、2钻石小、3钻石大)的公会捐献num次 + public int ten_challenge_time;// 挑战十绝阵num次 + // public Map finisin_daily_challenge_times;//完成type(0不限、1金币、2武将经验、3武将碎片、4兵魂、5谋略)的日常副本num次 + public int six_random_times;//使用6灵阁召唤num次 + public Map expedition_floor_times;//猎妖之路通过floor层num次 + public int decompose_times;//献祭武将次数 + public int death_path_times;// 击杀过关十绝阵num次 + public int jewl_all_leve;//全体上阵成员法宝等级达到level(需求人数6人,不满上阵不计完成度) + public Result updateData(MissionType missionType, Object...parm) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index d8c7d960c..8afa890f8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -963,6 +963,7 @@ public class ExpeditionLogic { .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) .setPosition(teamPosHeroInfo.getPosition()) + .setStar(hero.getStar()) .build(); heroFightInfos.add(heroFightInfo); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index c6d138081..e2c689d6f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2029,6 +2029,22 @@ public class HeroLogic{ } + //妖灵师是否在阵容中 + public Set isInTeam(User user,String heroId){ + Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); + Set collect = teamPosForHero.entrySet().stream().filter(integerListEntry -> + { + for (TeamPosHeroInfo teamPos : integerListEntry.getValue()) { + if (teamPos.getHeroId().equals(heroId)) { + return true; + } + } + return false; + }).map(Map.Entry::getKey).collect(Collectors.toSet()); + return collect; + } + + //妖灵师是否在阵容中 public boolean isBattleArray (User user,String heroId){ Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index f455c684e..2084452b4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -470,7 +470,7 @@ public class ItemLogic { if(b){ hero.updateEspecial(hero.getEspecialEquipLevel()+1); Poster.getPoster().dispatchEvent(new EspecialEquipUpEvent(user.getId(),especialEquipId, hero.getEspecialEquipLevel())); - user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP,hero.getEspecialEquipLevel()); + user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP,hero.getEspecialEquipLevel(),heroId); MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true); if(hero.getEspecialEquipLevel()>=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_rankup_equiptalisman_content_parm)){ SItem sItem = SItem.getsItemMap().get(especialEquipId); @@ -480,6 +480,7 @@ public class ItemLogic { String message = SErrorCodeEerverConfig.getI18NMessage("lamp_rankup_equiptalisman_content", new Object[]{user.getPlayerInfoManager().getNickName(), sItem.getName(),hero.getEspecialEquipLevel()}); ChatLogic.getInstance().sendSysChatMessage(message,Global.DILIGENT,sItem.getId(),0,0,0,0,0); } + }else{ throw new ErrorCodeException(ErrorCode.ITEM_ESPECIAL_EQUIP_UP_ITEM_NOT); } 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 1396a47b8..faea21c80 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 @@ -775,6 +775,22 @@ public class MissionLoigc { count = cumulationData.dailyChallengeMap.get(missionSubType[0]); } break; + case CARD_RANDOM_TYPE: + count = cumulationData.card_random_type; + break; + case GUILD_GIVE_TIME: + count = cumulationData.guild_give_time.get(missionSubType[0]); + break; + case TEN_CHALLENGE_TIME: + count = cumulationData.ten_challenge_time; + break; + case SIX_RANDOM_TIMES: + count = cumulationData.six_random_times; + break; + case EXPEDITION_FLOOR_TIMES: + count = cumulationData.expedition_floor_times.get(missionSubType[0]); + break; + //100以后类型继承 AbstractDataManager default: count = 0; break; 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 3f31bbcee..54bf73ffe 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 @@ -88,13 +88,20 @@ public enum MissionType { COMHERO_STORY_PASS(72), //通关剧情副本或精英副本%s次 LOGIN_TIMES(73), //当日登录%s次 REARGE_TOTAL(74), //累计充值 + + CARD_RANDOM_TYPE(75),// 使用普通召唤num次(十连抽num计10) FINISH_MISSING_ROOM(76),//完成迷宫寻宝%品质%次 REFRESH_MISSING_ROOM(77),//刷新迷宫寻宝%s次 SPECIAL_EQUIP_LEVEL_UP(78),//法宝提升到%s级 + + GUILD_GIVE_TIME(79),//使用level级别(0不限、1普通、2钻石小、3钻石大)的公会捐献num次 + TEN_CHALLENGE_TIME(80),//挑战十绝阵num次 + LUCKY_WHEELS_TIMES(83),//幸运探宝%次 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个 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/AbstractDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/AbstractDataManager.java new file mode 100644 index 000000000..ca43d4e0e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/AbstractDataManager.java @@ -0,0 +1,22 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; + +public abstract class AbstractDataManager implements BaseDataManager,IBaseDataCheck{ + + @Override + public boolean ishit(User user, CumulationData data, int[] missionSubType,Object... parm) { + return true; + } + + @Override + public boolean isFinish(User user,CumulationData data,int[][] cfgValue, Object... parm) { + return false; + } + + @Override + public int getprocess(User user, CumulationData data, int[] missionSubType) { + return 0; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java index d77f46d71..b311e810d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java @@ -1,9 +1,16 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.MissionType; +/** + * 类型数据更新器 更新指定类型 + * fix 1 为类型处理器新增 进度获取和状态获取方法 IBaseDataCheck + * + * TODO fix指定类型使用了明确的字段 字段应该统一 现在每个类型都有字段来标识 + */ public interface BaseDataManager { - public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object ...parm); + CumulationData.Result updateData(CumulationData data, MissionType missionType, Object ...parm); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/CarRandomTimeManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/CarRandomTimeManager.java new file mode 100644 index 000000000..f4f157682 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/CarRandomTimeManager.java @@ -0,0 +1,12 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +public class CarRandomTimeManager implements BaseDataManager { + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + data.card_random_type++; + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index 76cadb1ea..5c56c56a2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -117,9 +117,15 @@ public class DataManagerDistributor { judges.put(MissionType.FINISH_EXPEDITION_HERO_TIMES,new ExpeditionManager()); judges.put(MissionType.LOGIN_TIMES,new LoginTimeManager()); judges.put(MissionType.SEVEN_GIFT_BUY,new SevenGiftManager()); + + judges.put(MissionType.CARD_RANDOM_TYPE,new CarRandomTimeManager()); + judges.put(MissionType.GUILD_GIVE_TIME,new GuildGiveTypeManger()); judges.put(MissionType.FINISIN_DAILY_CHALLENGE_TIMES,new FinishDailyChallengeManger()); - - + judges.put(MissionType.SIX_RANDOM_TIMES,new SixRandomTimes()); + judges.put(MissionType.EXPEDITION_FLOOR_TIMES,new ExpeditionPassManger()); + judges.put(MissionType.DECOMPOSE_TIMES,new DecomposeTimes()); + judges.put(MissionType.DEATH_PATH_TIMES,new DeathPathTimes()); + judges.put(MissionType.JEWL_ALL_LEVE,new UpJewlDataManager()); } @@ -130,4 +136,8 @@ public class DataManagerDistributor { } return updater.updateData(data, missionType,parm); } + + public static BaseDataManager getMissTypeData( MissionType missionType) { + return judges.get(missionType); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DeathPathTimes.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DeathPathTimes.java new file mode 100644 index 000000000..bdf544e10 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DeathPathTimes.java @@ -0,0 +1,28 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * Description: 击杀过关十绝阵num次 + * Author: zsx + * CreateDate: 2020/6/4 4:21 + */ +public class DeathPathTimes extends AbstractDataManager { + @Override + public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) { + return data.death_path_times>cfgValue[1][0]; + } + + @Override + public int getprocess(User user, CumulationData data, int[] missionSubType) { + return data.death_path_times; + } + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + data.death_path_times+=(int)(parm[0]); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DecomposeTimes.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DecomposeTimes.java new file mode 100644 index 000000000..083706d14 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DecomposeTimes.java @@ -0,0 +1,28 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * Description: 献祭武将num个 + * Author: zsx + * CreateDate: 2020/6/4 4:21 + */ +public class DecomposeTimes extends AbstractDataManager { + @Override + public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) { + return data.decompose_times>cfgValue[1][0]; + } + + @Override + public int getprocess(User user, CumulationData data, int[] missionSubType) { + return data.decompose_times; + } + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + data.decompose_times+=(int)(parm[0]); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java new file mode 100644 index 000000000..46de1b2dc --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java @@ -0,0 +1,19 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + + +/** + * Description: 猎妖之路通过第floor层的首领节点(每层最多一个)num次 + * Author: zsx + * CreateDate: 2020/6/1 14:13 + */ +public class ExpeditionPassManger implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int type = (int) parm[0]; + data.expedition_floor_times.put(type,data.expedition_floor_times.getOrDefault(type, 0)+1); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GuildGiveTypeManger.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GuildGiveTypeManger.java new file mode 100644 index 000000000..b7219e21f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GuildGiveTypeManger.java @@ -0,0 +1,19 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + + +/** + * Description: 使用level级别(0不限、1普通、2钻石小、3钻石大)的公会捐献num次 + * Author: zsx + * CreateDate: 2020/6/1 14:13 + */ +public class GuildGiveTypeManger implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int type = (int) parm[0]; + data.guild_give_time.put(type,data.guild_give_time.getOrDefault(type, 0)+1); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/IBaseDataCheck.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/IBaseDataCheck.java new file mode 100644 index 000000000..deb19d670 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/IBaseDataCheck.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * 类型数据更新器 更新指定类型 + * fix 1 为类型处理器新增 进度获取和状态获取方法 + */ +public interface IBaseDataCheck { + + /** + * TODO 事件更新进度 把事件分发条件判断转移到任务类型实现 + */ + boolean ishit(User user, CumulationData data, int[] missionSubType,Object... parm); + + /** + * 进度完成 由类型区分 而不用把所有所有数据都揉到一起 + */ + boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm); + + /** + * 在已有的映射关系里面取字段 + */ + int getprocess(User user, CumulationData cumulationData, int[] missionSubType); +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/SixRandomTimes.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/SixRandomTimes.java new file mode 100644 index 000000000..7e73fdb5f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/SixRandomTimes.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * Description: 使用6灵阁召唤num次 + * Author: zsx + * CreateDate: 2020/6/1 14:13 + */ +public class SixRandomTimes implements BaseDataManager { + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + data.six_random_times++; + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/TenPassManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/TenPassManager.java new file mode 100644 index 000000000..053853c7c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/TenPassManager.java @@ -0,0 +1,18 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + + +/** + * Description: 挑战十绝阵num次 + * Author: zsx + * CreateDate: 2020/6/1 14:13 + */ +public class TenPassManager implements BaseDataManager { + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + data.ten_challenge_time++; + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java new file mode 100644 index 000000000..acc588bc0 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/UpJewlDataManager.java @@ -0,0 +1,56 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.logic.mission.MissionType; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Description: 全体上阵成员法宝等级达到level(需求人数6人,不满上阵不计完成度) + * Author: zsx + * CreateDate: 2020/6/1 12:03 + */ +public class UpJewlDataManager extends AbstractDataManager{ + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + return new CumulationData.Result(missionType); + } + + @Override + public boolean ishit(User user, CumulationData data, int[] missionSubType,Object... parm) { + return super.ishit(user, data, missionSubType); + } + + @Override + public boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm) { + + for (Map.Entry> entry:user.getTeamPosManager().getTeamPosForHero().entrySet()){ + List teamPosHeroInfos =entry.getValue(); + if(teamPosHeroInfos.size()!=6){ + continue; + } + for (TeamPosHeroInfo info:teamPosHeroInfos){ + Hero hero = user.getHeroManager().getHero(info.getHeroId()); + if( hero.getEspecialEquipLevel()(); typeList.add(MissionType.ESPECIAL_EQUIP); + typeList.add(MissionType.JEWL_ALL_LEVE); eventEnumListMap.put(GameEvent.ESPECIAL_EQUIP,typeList); eventProcessor.put(GameEvent.ESPECIAL_EQUIP,new CumulationDataEventProcessor()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AchieveMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AchieveMissionIdsType.java index 5dba893a8..640c5f479 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AchieveMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AchieveMissionIdsType.java @@ -5,6 +5,9 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionLoigc; import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.MissionType; +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 config.SAchievementConfig; import config.SBloodyBattleTask; import config.STreasureSunlongTaskConfig; @@ -42,11 +45,23 @@ public class AchieveMissionIdsType extends AbstractMissionType{ continue; } - int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sAchievementConfig.getType(), sAchievementConfig.getValues()[0]); - //完成 int finishParm = sAchievementConfig.getValues()[1][0]; - if (doingProgress sBeginnerTasks , List missionStateChangeInfos, CumulationData cumulationData){ Set doingMissionIds = getDoingMissionIds(); for (SBeginnerTask sBeginnerTask : sBeginnerTasks) { int missionId = sBeginnerTask.getId(); if (!doingMissionIds.contains(missionId)) { continue; } - boolean isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sBeginnerTask.getTaskType(), sBeginnerTask.getTaskValue()[0]) >= sBeginnerTask.getTaskValue()[1][0]; - if (!isFinish) { + + boolean isfinish; + BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(result.subType); + if(missTypeData instanceof AbstractDataManager ){ + isfinish=((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sBeginnerTask.getTaskValue()); + }else { + //完成 + isfinish = MissionLoigc.getDoingProgress(user, cumulationData, sBeginnerTask.getTaskType(), sBeginnerTask.getTaskValue()[0]) >= sBeginnerTask.getTaskValue()[1][0]; + } + + if (!isfinish) { MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, MissionState.DOING, null); boolean flag = false; 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 e0d8f2c73..7c34b719f 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 @@ -4,6 +4,9 @@ import com.ljsd.jieling.logic.dao.CumulationData; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionLoigc; 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 config.SDailyTasksConfig; import java.util.Iterator; @@ -31,17 +34,23 @@ public class DailyMissionIdsType extends AbstractMissionType{ if (sTaskConfigs == null) { return; } - checkAndUpdateMision(user,sTaskConfigs,missionStateChangeInfos,cumulationData); - } - public void checkAndUpdateMision(User user, List sTaskConfigs, List missionStateChangeInfos,CumulationData cumulationData){ Set doingMissionIds = getDoingMissionIds(); for (SDailyTasksConfig sTaskConfig : sTaskConfigs) { int missionId = sTaskConfig.getId(); if (!doingMissionIds.contains(missionId)) { continue; } - boolean isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getType(), sTaskConfig.getValues()[0]) >= sTaskConfig.getValues()[1][0]; + + boolean isFinish; + BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(result.subType); + if(missTypeData instanceof AbstractDataManager){ + isFinish=((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getValues()); + }else { + //完成 + isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getType(), sTaskConfig.getValues()[0]) >= sTaskConfig.getValues()[1][0]; + } + if (!isFinish) { MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, MissionState.DOING, null); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/ServenMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/ServenMissionIdsType.java index 7ccb6fdf6..3adc226be 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/ServenMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/ServenMissionIdsType.java @@ -7,6 +7,9 @@ import com.ljsd.jieling.logic.mission.GameMisionType; import com.ljsd.jieling.logic.mission.MissionLoigc; import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.MissionType; +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.logic.mission.event.MissionEventDistributor; import config.STreasureTaskConfig; import manager.STableManager; @@ -51,8 +54,20 @@ public class ServenMissionIdsType extends AbstractMissionType{ processSpecailMissionType(user,sTaskConfig,cumulationData); continue; } + int finishParm = sTaskConfig.getTaskValue()[1][0]; - int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]); + boolean isFinish; + int doingProgress; + BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(MissionType.findByMissionId(sTaskConfig.getTaskType())); + if(missTypeData instanceof AbstractDataManager &&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getTaskValue())){ + doingProgress = ((AbstractDataManager) missTypeData).getprocess(user,cumulationData,sTaskConfig.getTaskValue()[0]); + isFinish=true; + }else { + doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]); + isFinish = doingProgress >= sTaskConfig.getTaskValue()[1][0]; + } + + if((doingProgress!=0 && finishParm<0 && ( doingProgress)>=finishParm)){ doingMissionIds.remove(sTaskConfig.getId()); getFinishMissionIds().add(sTaskConfig.getId()); @@ -63,7 +78,7 @@ public class ServenMissionIdsType extends AbstractMissionType{ if(finishParm<0){ continue; } - boolean isFinish = doingProgress >= sTaskConfig.getTaskValue()[1][0]; + if (!isFinish) { MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, MissionState.DOING, doingProgress); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java index 64d38c224..577163251 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java @@ -5,6 +5,9 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionLoigc; import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.MissionType; +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 config.STreasureSunlongTaskConfig; import java.util.HashMap; @@ -72,10 +75,23 @@ public class TreasureMissionType extends AbstractMissionType{ if(sTreasureTaskConfig.getType()!=result.getMissionTimeType()){ continue; } - int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]); + //完成 int finishParm = sTreasureTaskConfig.getTaskValue()[1][0]; - if( doingProgress>=finishParm){ + + boolean isFinish; + int doingProgress; + BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(MissionType.findByMissionId(sTreasureTaskConfig.getTaskType())); + if(missTypeData instanceof AbstractDataManager &&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTreasureTaskConfig.getTaskValue())){ + doingProgress = ((AbstractDataManager) missTypeData).getprocess(user,cumulationData,sTreasureTaskConfig.getTaskValue()[0]); + isFinish=true; + }else { + doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]); + isFinish =doingProgress>=finishParm; + } + + + if( isFinish){ doingMissionIds.remove(id); getFinishMissionIds().add(id); MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,doingProgress,0); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java index 866873f78..060e1f6c9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java @@ -4,6 +4,10 @@ import com.ljsd.jieling.logic.dao.CumulationData; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionLoigc; import com.ljsd.jieling.logic.mission.MissionState; +import com.ljsd.jieling.logic.mission.MissionType; +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 config.STaskConfig; import java.util.Iterator; @@ -56,7 +60,15 @@ public class VipMissionIdsType extends AbstractMissionType{ if(!doingMissionIds.contains(missionId)){ continue; } - boolean isFinish = MissionLoigc.getDoingProgress(user,cumulationData,sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1][0]; + + boolean isFinish; + BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(MissionType.findByMissionId(sTaskConfig.getTaskType())); + if(missTypeData instanceof AbstractDataManager &&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getTaskValue())){ + isFinish=true; + }else { + isFinish = MissionLoigc.getDoingProgress(user,cumulationData,sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1][0]; + } + if(!isFinish){ MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, MissionState.DOING, null);