关卡排行榜修改

back_recharge
lvxinran 2020-03-13 11:11:29 +08:00
parent 789730d3c7
commit 50110c8723
5 changed files with 65 additions and 32 deletions

View File

@ -19,8 +19,7 @@ public class MathUtils {
public static void main(String[] args){
String i = "0|00|111";
String[] split = i.split("|", 1);
System.out.println(forceToDouble(1231321));
}
public static int randomForStrArray(String [] rateArray) {
return randomStrArray(rateArray, -1);
@ -326,6 +325,9 @@ public class MathUtils {
}
return result;
}
public static double forceToDouble(double force){
return force/Math.pow(10,8);
}
}

View File

@ -2122,7 +2122,7 @@ public class MapLogic {
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
// String rankKey = RedisKey.getKey(RedisKey.MAINLEVEL_RANK, "", false);
// RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(user.getId()), sMainLevelConfig.getVirtureId());
RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(uid,"",sMainLevelConfig.getVirtureId());
RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(uid,"",sMainLevelConfig.getVirtureId(),user.getPlayerInfoManager().getMaxForce());
}
// public void getMainLevelRankInfo(ISession session) throws Exception {

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.logic.activity.eventhandler;
import com.ljsd.jieling.logic.activity.IEventHandler;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.UserForceChangeEvent;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
/**
* @author lvxinran
* @date 2020/3/14
* @discribe
*/
public class UserForceUpEventHandler implements IEventHandler {
@Override
public void onEvent(IEvent event) throws Exception {
if(!(event instanceof UserForceChangeEvent))
return;
UserForceChangeEvent forceChangeEvent = (UserForceChangeEvent)event;
double scoreById = RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).getScoreById(forceChangeEvent.getUid(), "");
if(scoreById<=0){
return;
}
RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(forceChangeEvent.getUid(),"",Double.valueOf(scoreById).intValue(),forceChangeEvent.getForce());
}
}

View File

@ -17,6 +17,7 @@ import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.UserForceChangeEvent;
import com.ljsd.jieling.logic.activity.eventhandler.UserForceUpEventHandler;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildLogic;
@ -50,7 +51,10 @@ import java.util.*;
public class PlayerLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(MailLogic.class);
private PlayerLogic(){}
private PlayerLogic(){
Poster.getPoster().listenEvent(new UserForceUpEventHandler(), UserForceChangeEvent.class);
}
public static PlayerLogic getInstance(){
return InnerClass.instance;

View File

@ -4,6 +4,7 @@ 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.MathUtils;
import util.TimeUtils;
import java.util.*;
@ -26,33 +27,33 @@ public class MainLevelRank extends AbstractRank {
return new int[]{i%10_000_000};
}
@Override
protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start) throws Exception {
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();
});
List<CommonProto.UserRank> buildersCopy = new ArrayList<>(ranksBuilderList.size());
for(CommonProto.UserRank userRank : builders){
buildersCopy.add(userRank.toBuilder().setRankInfo(userRank.toBuilder().getRankInfo().toBuilder().setRank(start).build()).build());
start++;
}
PlayerInfoProto.RankResponse.Builder response = PlayerInfoProto.RankResponse.newBuilder();
response.setMyRankInfo(allUserResponse.getMyRankInfo()).addAllRanks(buildersCopy);
return response;
}
// @Override
// protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start) throws Exception {
// 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();
// });
// List<CommonProto.UserRank> buildersCopy = new ArrayList<>(ranksBuilderList.size());
// for(CommonProto.UserRank userRank : builders){
// buildersCopy.add(userRank.toBuilder().setRankInfo(userRank.toBuilder().getRankInfo().toBuilder().setRank(start).build()).build());
// start++;
// }
// PlayerInfoProto.RankResponse.Builder response = PlayerInfoProto.RankResponse.newBuilder();
// response.setMyRankInfo(allUserResponse.getMyRankInfo()).addAllRanks(buildersCopy);
// return response;
// }
@Override
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(String rkey,int start, int end) {
@ -63,6 +64,6 @@ public class MainLevelRank extends AbstractRank {
@Override
public double getScore(double... data) {
return data[0]+ TimeUtils.getDoubleTime();
return data[0]+ MathUtils.forceToDouble(data[1]);
}
}