diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java index 60ddaeae4..e6b5338f5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java @@ -58,6 +58,8 @@ public class LimitRandomCardActivity extends AbstractActivity { user.getHeroManager().updateRandomPoolByType(n,clearMap); } }); + + user.getHeroManager().setBeautyBagCardInfoMap(new HashMap<>()); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index 3d13da815..74fa6ba13 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -77,6 +77,12 @@ public class HeroManager extends MongoBase { */ private HashMap wishDrawCardInfoMap = new HashMap<>(3); + + /** + * 乾坤宝盒-许愿魂印 + */ + private HashMap beautyBagCardInfoMap = new HashMap<>(); + /** * 抽奖次数记录 * key: 招募类型 value: 次数 @@ -402,5 +408,18 @@ public class HeroManager extends MongoBase { wishDrawCardInfoMap.put(key,wishDrawCardInfo); updateString("wishDrawCardInfoMap." + key, wishDrawCardInfo); } + + public HashMap getBeautyBagCardInfoMap() { + return beautyBagCardInfoMap; + } + + public void setBeautyBagCardInfoMap(HashMap beautyBagCardInfoMap) { + this.beautyBagCardInfoMap = beautyBagCardInfoMap; + updateString("beautyBagCardInfoMap", beautyBagCardInfoMap); + } + public void putBeautyBagCardInfoMap(Integer key,Integer val) { + this.beautyBagCardInfoMap.put(key,val); + updateString("beautyBagCardInfoMap", beautyBagCardInfoMap); + } } 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 566ed99b7..8131560c9 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 @@ -391,6 +391,9 @@ public class HeroLogic{ int[] result; if (sLotterySetting.getLotteryType() == 1 && num >= value){ result = wishDrawCardCheck(user,sLotteryRewardConfig.getReward()); + }else if(sLotterySetting.getLotteryType() == 3&& + isActivityBeautyBag(sLotterySetting.getActivityId())){//乾坤宝盒-许愿魂印 + result = BeautyBagDrawCard(user,sLotteryRewardConfig); }else { result = sLotteryRewardConfig.getReward(); } @@ -399,6 +402,38 @@ public class HeroLogic{ return result; } + private int[] BeautyBagDrawCard(User user, SLotteryRewardConfig sLotteryRewardConfig) { + int count = SSpecialConfig.getIntegerValue(SSpecialConfig.NUMOFCHOOSEREDSIGN); + List list = SLotteryRewardConfig.getSLotteryRewardConfigListByPoolId(sLotteryRewardConfig.getPool()); + if(list==null){ + return sLotteryRewardConfig.getReward(); + } + + int index = list.indexOf(sLotteryRewardConfig); + if(index>=count){ + return sLotteryRewardConfig.getReward(); + } + + if(user.getHeroManager().getBeautyBagCardInfoMap().containsKey(index+1)==false){ + return sLotteryRewardConfig.getReward(); + } + + int[] result = new int[2]; + result[0] = user.getHeroManager().getBeautyBagCardInfoMap().get(index+1); + result[1] = sLotteryRewardConfig.getReward()[1]; + LOGGER.info("抽到了UP---->"+sLotteryRewardConfig.getReward()[0]+"替换为---->"+result[0]); + return result; + } + + private boolean isActivityBeautyBag(int activityId){ + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId); + if(activity==null){ + return false; + } + + return activity.getType() == ActivityType.BEAUTY_BAG; + } + /** * 心愿抽卡校验 * @param user @@ -658,7 +693,39 @@ public class HeroLogic{ e.printStackTrace(); } } + /** + * 修改魂印格子 + * @param user + * @param list + * @throws ErrorCodeException + */ + public void updateBeautyBagCardInfo(User user, List list) throws ErrorCodeException { + HashMap map = new HashMap<>(); + int count = SSpecialConfig.getIntegerValue(SSpecialConfig.NUMOFCHOOSEREDSIGN); + for(CommonProto.beautyBagCardInfo info:list){ + if(map.containsValue(info.getEquip())){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); + } + if(map.containsKey(info.getId())){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); + } + SEquipConfig config = STableManager.getConfig(SEquipConfig.class).get(info.getEquip()); + if(config==null){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); + } + if(config.getQuality()!=6){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); + } + if(info.getId()<1||info.getId()>count){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); + } + map.put(info.getId(),info.getEquip()); + } + + user.getHeroManager().setBeautyBagCardInfoMap(map); + + } /** * 每次抽取 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 016b28e60..764c6bbe3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -897,4 +897,21 @@ public class CBean2Proto { } return list; } + + /** + * 获取魂印信息 + * @param user + * @return + */ + public static List getBeautyBagCardInfo(User user){ + List list = new ArrayList<>(); + user.getHeroManager().getBeautyBagCardInfoMap().entrySet().forEach(v->{ + CommonProto.beautyBagCardInfo builder = CommonProto.beautyBagCardInfo.newBuilder() + .setId(v.getKey()) + .setEquip(v.getValue()) + .build(); + list.add(builder); + }); + return list; + } } diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 50c625328..633cf2a85 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -106,6 +106,7 @@ public class SSpecialConfig implements BaseConfig { public static final String CARDWISHBLOCKRATE = "CardWishBlockRate";//钻石抽卡心愿单格子命中万分比 public static final String UNLOCKCARDWISH = "UnlockCardWish";//解锁钻石心愿抽卡所需要的抽卡次数 public static final String EndlessRespawnItemAndTime ="EndlessRespawnItemAndTime";//每次重置无尽副本提供的九元露数量 + public static final String NUMOFCHOOSEREDSIGN ="NumOfChooseRedSign";//乾坤宝盒选择心愿红色魂印数量 @Override public void init() throws Exception {