From 3f40a3cedf296ffe7232f54bb0b23ea517abafdf Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 17 Dec 2019 15:32:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E9=99=90=E5=88=B6=EF=BC=8C?= =?UTF-8?q?=E5=85=B3=E5=8D=A1=E6=8E=92=E8=A1=8C=E6=A6=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/dao/CumulationData.java | 8 ++--- .../ljsd/jieling/logic/hero/HeroLogic.java | 24 ++++++++++++- .../jieling/logic/mission/MissionLoigc.java | 2 +- .../logic/rank/rankImpl/AbstractRank.java | 11 +++--- .../logic/rank/rankImpl/MainLevelRank.java | 35 +++++++++++++------ tablemanager/src/main/java/config/SCHero.java | 4 +-- 6 files changed, 60 insertions(+), 24 deletions(-) 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 1204d0235..825ba72d9 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 @@ -28,7 +28,7 @@ public class CumulationData { // private Map sHeroCountMap=new HashMap<>(); // 妖灵师数量统计 // * 获得某品质妖灵师 次数 获得需求品质妖灵师 3.4.5 - private int[] heroQualityCount = new int[3]; + private Map heroQualityCount = new HashMap<>(); /** @@ -246,11 +246,11 @@ public class CumulationData { this.recruitmentRands = recruitmentRands; } public void updateHeroQualityCount(int quality){ - heroQualityCount[quality-3] = heroQualityCount[quality-3] +1; + heroQualityCount.put(quality,getHeroQualityCount(quality)+1); } - public int[] getHeroQualityCount() { - return heroQualityCount; + public int getHeroQualityCount(int star) { + return heroQualityCount.get(star)==null?0:heroQualityCount.get(star); } public int[] getsEquipQualityCount() { 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 f837c1ff6..cedf23e45 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 @@ -41,6 +41,8 @@ import util.TimeUtils; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class HeroLogic{ private static final Logger LOGGER = LoggerFactory.getLogger(HeroLogic.class); @@ -557,7 +559,13 @@ public class HeroLogic{ throw new ErrorCodeException(ErrorCode.newDefineCode("hero null")); } SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - + int[] growthSwitch = scHero.getGrowthSwitch(); + if(growthSwitch!=null&&growthSwitch.length>0){ + Set operateSet= Arrays.stream(growthSwitch).boxed().collect(Collectors.toSet()); + if(operateSet.contains(1)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } int oldLevel = hero.getLevel(); //判断需要进行升级还是进行突破 Map scHeroRankUpConfigByType = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE,scHero.getStar()); @@ -648,6 +656,13 @@ public class HeroLogic{ int oldStar = targetHero.getStar(); SCHero scHero = SCHero.getsCHero().get(targetHero.getTemplateId()); + int[] growthSwitch = scHero.getGrowthSwitch(); + if(growthSwitch!=null&&growthSwitch.length>0){ + Set operateSet= Arrays.stream(growthSwitch).boxed().collect(Collectors.toSet()); + if(operateSet.contains(2)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } Map scHeroRankUpConfigByType = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByType.get(oldStar); if( targetHero.getLevel() < scHeroRankUpConfig.getLimitLevel()){ @@ -2120,6 +2135,13 @@ public class HeroLogic{ } HeroManager heroManager = user.getHeroManager(); Hero hero = user.getHeroManager().getHero(heroId); + int[] growthSwitch = SCHero.getsCHero().get(hero.getTemplateId()).getGrowthSwitch(); + if(growthSwitch!=null&&growthSwitch.length>0){ + Set operateSet= Arrays.stream(growthSwitch).boxed().collect(Collectors.toSet()); + if(operateSet.contains(3)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } int star = hero.getStar(); int templateId = hero.getTemplateId(); Map sHeroReturnMap = SHeroReturn.sheroReturnMap.get(templateId); 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 119a77b17..2dd7deaa5 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 @@ -417,7 +417,7 @@ public class MissionLoigc { count = cumulationData.getRecruitmentRands(); break; case COLLECT_QUALITY_HERO: - count = cumulationData.getHeroQualityCount()[missionSubType[0]-3]; + count = cumulationData.getHeroQualityCount(missionSubType[0]); break; case HERO_LEVLE_COUNT: count = cumulationData.getHeroLevleCountMap().get(missionSubType[0]); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index a01a154ff..583bf7fa3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.rank.rankImpl; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.GuilidManager; @@ -10,6 +11,7 @@ import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import org.springframework.data.redis.core.ZSetOperations; +import java.util.List; import java.util.Objects; import java.util.Set; import java.util.function.BiConsumer; @@ -88,20 +90,19 @@ public abstract class AbstractRank implements IRank { protected void getOptional(int index,ZSetOperations.TypedTuple data,PlayerInfoProto.RankResponse.Builder builder) throws Exception { User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true); - CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder() + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(index) .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) - .setParam3(getParam3(data.getScore())) - .build(); - CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder() + .setParam3(getParam3(data.getScore())); + CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) .setHead(everyUser.getPlayerInfoManager().getHead()) .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) .setLevel(everyUser.getPlayerInfoManager().getLevel()) .setRankInfo(everyRankInfo) - .build(); + .setForce(everyUser.getPlayerInfoManager().getMaxForce()); builder.addRanks(everyRank); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/MainLevelRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/MainLevelRank.java index 4fa902c31..4441a12a2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/MainLevelRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/MainLevelRank.java @@ -1,12 +1,12 @@ package com.ljsd.jieling.logic.rank.rankImpl; import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import org.springframework.data.redis.core.ZSetOperations; import util.TimeUtils; -import java.util.Comparator; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -22,24 +22,37 @@ public class MainLevelRank extends AbstractRank { @Override public int[] getDataByScore(double score) { - return new int[]{Double.valueOf(score).intValue()}; + int i = Double.valueOf(score).intValue(); + return new int[]{i%10_000_000}; } @Override protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set> zsetreverseRangeWithScores, int start) throws Exception { - return super.getAllUserResponse(zsetreverseRangeWithScores, start); + PlayerInfoProto.RankResponse.Builder allUserResponse = super.getAllUserResponse(zsetreverseRangeWithScores, start); + List ranksBuilderList = allUserResponse.getRanksList(); + if(ranksBuilderList.size()<2){ + return allUserResponse; + } + List builders = new ArrayList<>(ranksBuilderList); + Collections.sort(builders,(o1, o2) -> { + if(o1.getRankInfo().getParam1()==o2.getRankInfo().getParam1()){ + if(o1.getForce()>o2.getForce() &&o1.getRankInfo().getRank()>o2.getRankInfo().getRank()){ + CommonProto.UserRank rankInfo1 = o1 ; + o1 = o2; + o2 = rankInfo1; + } + } + return o1.getRankInfo().getRank()-o2.getRankInfo().getRank(); + }); + PlayerInfoProto.RankResponse.Builder response = PlayerInfoProto.RankResponse.newBuilder(); + response.setMyRankInfo(allUserResponse.getMyRankInfo()).addAllRanks(builders); + return response; } @Override public Set> getRankByKey(int start, int end) { Set> rankByKey = super.getRankByKey(start, end); -// return rankByKey.stream().sorted(Comparator.comparing(v-> { -// try { -// return UserManager.getUser(Integer.parseInt(v.getValue())).getPlayerInfoManager().getMaxForce(); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// })).collect(Collectors.toSet()); + return rankByKey; } diff --git a/tablemanager/src/main/java/config/SCHero.java b/tablemanager/src/main/java/config/SCHero.java index 7f8c93757..f1b98a09e 100644 --- a/tablemanager/src/main/java/config/SCHero.java +++ b/tablemanager/src/main/java/config/SCHero.java @@ -53,7 +53,7 @@ public class SCHero implements BaseConfig{ private int natural; - private int[][] growthSwitch; + private int[] growthSwitch; private Map secondaryFactorMap; @@ -273,7 +273,7 @@ public class SCHero implements BaseConfig{ this.skillListByStar = skillListByStar; } - public int[][] getGrowthSwitch() { + public int[] getGrowthSwitch() { return growthSwitch; } }