From c49ae44705d010ad9a839261a413638260dcaabb Mon Sep 17 00:00:00 2001 From: "PC-202302260912\\Administrator" <1769111741@qq.com> Date: Wed, 19 Jul 2023 15:26:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8D=A1=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/handler/GetPlayerInfoHandler.java | 17 +++++++------ .../ljsd/jieling/logic/dao/HeroManager.java | 22 ++++------------ .../ljsd/jieling/logic/hero/HeroLogic.java | 25 +++++++++++++------ 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 33c812e93..e817de206 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -131,11 +131,6 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()) .build(); HeroManager heroManager = user.getHeroManager(); - int alreadyCount =0; - for(Integer id : STableManager.getFigureConfig(HeroStaticConfig.class).getRandomHeroIds()){ - int count = Optional.ofNullable(heroManager.getTotalCount().get(id)).orElse(0); - alreadyCount+=count; - } // 返利 GmActivityLogic.zeroUpdateGmActivity(user); SGameSetting setting = STableManager.getConfig(SGameSetting.class).get(1); @@ -170,7 +165,15 @@ public class GetPlayerInfoHandler extends BaseHandler{ Set equipHandBookSet = user.getEquipManager().getEquipHandBook().keySet(); int equipPool = user.getEquipManager().getSoulEquipPool(); int vipPrivilageValue = user.getPlayerInfoManager().getVipPrivilageValue(SMazeTreasureSetting.sMazeTreasureSetting.getRefreshVIP()); - int randomCount = SLotterySpecialConfig.getLotteryListByDifferentType(7).iterator().next().getCount()- user.getHeroManager().getRandomPoolByType().getOrDefault(11,new HashMap<>()).getOrDefault(7,0); + // 英雄抽卡剩余必中 + int randomCount = SLotterySpecialConfig.getLotteryListByDifferentType(7) + .iterator().next().getCount() - + user.getHeroManager().getRandomPoolByType().getOrDefault(11,new HashMap<>()).getOrDefault(7,0); + // 法宝抽卡剩余必中 + int fabaoRandomCount = SLotterySpecialConfig.getLotteryListByDifferentType(151) + .iterator().next().getCount() - + user.getHeroManager().getRandomPoolByType().getOrDefault(23,new HashMap<>()).getOrDefault(151,0); + List sixiangxinfaInfos = getSixiangxinfaInfos(heroManager); List practiceSkillInfos = getPracticeSkillInfos(heroManager); List faBaoSoulInfos = getFaBaoSoulInfos(heroManager); @@ -186,7 +189,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .addAllVipLeveTake(playerInfoManager.getHadTakeLevelBoxVip()) .setUserCreateTime((int)(playerInfoManager.getCreateTime()/1000)) .addAllRedType(playerInfoManager.getReds()) - .setRandCount(alreadyCount) + .setRandCount(fabaoRandomCount) .addAllHeroHandBook(heroHandBookList).addAllEquipHandBook(equipHandBookSet) .addAllGoodsTypeDuration(goodsTypeDurations) .setHadBuyTreasure(playerInfoManager.getHadBuyTreasure()) 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 7943a4eda..8d27080b6 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 @@ -23,8 +23,11 @@ public class HeroManager extends MongoBase { */ private Map heroMap= new HashMap<>(); - private Map totalCount= new HashMap<>(); - + /** + * key:MergePool + * key:DifferentType + * value:数量 + */ private Map> randomPoolByType = new HashMap<>(); private Map mustRandomCount= new HashMap<>(); @@ -313,12 +316,6 @@ public class HeroManager extends MongoBase { updateString("likableSendTime", _sendTime); } - - public void updateRandCount(int type, int count){ - updateString("totalCount." + type, count); - totalCount.put(type,count); - } - public void updateRandomPoolByType(int type,Map map){ randomPoolByType.put(type,map); updateString("randomPoolByType." + type, map); @@ -386,10 +383,6 @@ public class HeroManager extends MongoBase { return heroMap; } - public Map getTotalCount() { - return totalCount; - } - public void addHeroHandBook(int heroId,int star){ if(heroHandBook.containsKey(heroId)&&heroHandBook.get(heroId)>=star){ return; @@ -597,11 +590,6 @@ public class HeroManager extends MongoBase { // return purpleMansionSeal; 2022-4-20 策划需求关闭紫府神印功能 } - public void setPurpleMansionSeal(Map purpleMansionSeal) { - this.purpleMansionSeal = purpleMansionSeal; - updateString("purpleMansionSeal", purpleMansionSeal); - } - public void putPurpleMansionSeal(PurpleMansionSeal seal) { purpleMansionSeal.put(seal.getSealId(),seal); updateString("purpleMansionSeal", purpleMansionSeal); 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 03be761bb..a9f062e97 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 @@ -255,6 +255,9 @@ public class HeroLogic { throw new ErrorCodeException("已抽取今日最大次数"); } HeroManager heroManager = user.getHeroManager(); + if (heroManager == null){ + throw new ErrorCodeException("玩家信息异常"); + } if (type == 11 && heroManager.getFirstTenth() == 0) { heroManager.updateFirstTenth(); } @@ -269,7 +272,7 @@ public class HeroLogic { throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); } } - if (heroManager != null && heroManager.getHeroMap() != null) { + if (heroManager.getHeroMap() != null) { //只有抽英雄才校验 if (sLotterySetting.getGainType() == 1 && heroManager.getHeroMap().size() + perCount > STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getHeroNumlimit()) { throw new ErrorCodeException(ErrorCode.HERO_MAX); @@ -347,16 +350,23 @@ public class HeroLogic { } Poster.getPoster().dispatchEvent(new RandomCardEvent(user.getId(), sLotterySetting.getActivityId(), heroManager.getRandomPoolByType().get(sLotterySetting.getMergePool()), sLotterySetting.getPerCount())); -// //1群英招募 HeroInfoProto.HeroRandResponse.Builder builder = HeroInfoProto.HeroRandResponse.newBuilder(); + // 英雄卡池类型 if (sLotterySetting.getLotteryType() == 1) { Poster.getPoster().dispatchEvent(new HeroRandomEvent(uid, perCount)); - List lotteryListByDifferentType = SLotterySpecialConfig.getLotteryListByDifferentType(7); - if (lotteryListByDifferentType.size() == 1) { - SLotterySpecialConfig next = lotteryListByDifferentType.iterator().next(); - builder.setMustCount(next.getCount() - heroManager.getRandomPoolByType().get(sLotterySetting.getMergePool()).getOrDefault(7, 0)); - } + int heroRandomCount = SLotterySpecialConfig.getLotteryListByDifferentType(7) + .iterator().next().getCount() - + user.getHeroManager().getRandomPoolByType().getOrDefault(11,new HashMap<>()).getOrDefault(7,0); + builder.setMustCount(heroRandomCount); } + // 法宝卡池类型 + if (sLotterySetting.getLotteryType() == 4){ + int fabaoRandomCount = SLotterySpecialConfig.getLotteryListByDifferentType(151) + .iterator().next().getCount() - + user.getHeroManager().getRandomPoolByType().getOrDefault(23,new HashMap<>()).getOrDefault(151,0); + builder.setFabaoMustCount(fabaoRandomCount); + } + user.getUserMissionManager().onGameEvent(user, GameEvent.RANDOM_HERO, sLotterySetting.getLotteryType(), perCount); if (sLotterySetting.getLotteryType() == 11) { //只记录新将招募次数 @@ -365,7 +375,6 @@ public class HeroLogic { if (sLotterySetting.getActivityId() == 8201) { Poster.getPoster().dispatchEvent(new UserLevelEvent(user.getId(), 0)); } - heroManager.updateRandCount(type, perCount); CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, resultRandom, BIReason.HERO_RANDOM); fiveStarPushByRandom(user, resultRandom); fiveStarPokemonPushByRandom(user, resultRandom);