英雄限制,关卡排行榜修改

back_recharge
lvxinran 2019-12-17 15:32:41 +08:00
parent 295bb58b16
commit 3f40a3cedf
6 changed files with 60 additions and 24 deletions

View File

@ -28,7 +28,7 @@ public class CumulationData {
// private Map<Integer,Integer> sHeroCountMap=new HashMap<>(); // 妖灵师数量统计
// * 获得某品质妖灵师 次数 获得需求品质妖灵师 3.4.5
private int[] heroQualityCount = new int[3];
private Map<Integer,Integer> 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() {

View File

@ -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<Integer> operateSet= Arrays.stream(growthSwitch).boxed().collect(Collectors.toSet());
if(operateSet.contains(1)){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
int oldLevel = hero.getLevel();
//判断需要进行升级还是进行突破
Map<Integer, SCHeroRankUpConfig> 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<Integer> operateSet= Arrays.stream(growthSwitch).boxed().collect(Collectors.toSet());
if(operateSet.contains(2)){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
Map<Integer, SCHeroRankUpConfig> 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<Integer> 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<Integer, SHeroReturn> sHeroReturnMap = SHeroReturn.sheroReturnMap.get(templateId);

View File

@ -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]);

View File

@ -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<String> 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);
}

View File

@ -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<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start) throws Exception {
return super.getAllUserResponse(zsetreverseRangeWithScores, start);
PlayerInfoProto.RankResponse.Builder allUserResponse = super.getAllUserResponse(zsetreverseRangeWithScores, start);
List<CommonProto.UserRank> ranksBuilderList = allUserResponse.getRanksList();
if(ranksBuilderList.size()<2){
return allUserResponse;
}
List<CommonProto.UserRank> 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<ZSetOperations.TypedTuple<String>> getRankByKey(int start, int end) {
Set<ZSetOperations.TypedTuple<String>> 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;
}

View File

@ -53,7 +53,7 @@ public class SCHero implements BaseConfig{
private int natural;
private int[][] growthSwitch;
private int[] growthSwitch;
private Map<Integer,Integer> secondaryFactorMap;
@ -273,7 +273,7 @@ public class SCHero implements BaseConfig{
this.skillListByStar = skillListByStar;
}
public int[][] getGrowthSwitch() {
public int[] getGrowthSwitch() {
return growthSwitch;
}
}