diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java index 74e64b63e..4e4a11b40 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java @@ -75,6 +75,7 @@ public class CarDelayFunction implements FunctionManager { }); for(ZSetOperations.TypedTuple item : guildRangeWithScores){ + rank++; String value = item.getValue(); int guildId = Integer.parseInt(value); @@ -83,7 +84,6 @@ public class CarDelayFunction implements FunctionManager { if(guildInfo==null){ continue; } - rank++; Collection> values = guildInfo.getMembers().values(); if(userLevelGuildMap.containsKey(guildId)){ values.add(usersByGuildId.get(guildId)); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index b985ca2ee..4e94048ae 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -133,6 +133,7 @@ public class RedisKey { public static final String RANDOM_CARD_RANK="RANDOM_CARD_RANK"; public static final String RANDOM_CARD_PERFECT_RANK = "RANDOM_CARD_PERFECT_RANK"; + public static final String GUILD_FORCE_RANK = "GUILD_FORCE_RANK"; public static final String GUILD_BOSS_RANK = "GUILD_BOSS_RANK"; public static final String GUILD_RED_PACKAGE_RANK = "GUILD_RED_PACKAGE_RANK"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java index 31e55fca2..22bd8565d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java @@ -20,6 +20,6 @@ public class RankFirstHandler extends BaseHandler entry : user.getGuildMyInfo().getGuidHelpInfo().entrySet()) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 11ec6c815..b1e56574a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -16,6 +16,7 @@ import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.activity.event.GuildForceChangeEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.UserForceChangeEvent; import com.ljsd.jieling.logic.activity.eventhandler.UserForceUpEventHandler; @@ -266,6 +267,9 @@ public class PlayerLogic { int teamForce = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false); System.out.println(teamForce); if(user.getPlayerInfoManager().getMaxForce() < teamForce){ + if(user.getPlayerInfoManager().getGuildId()!=0){ + Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(user.getId(),user.getPlayerInfoManager().getGuildId(),2,teamForce-user.getPlayerInfoManager().getMaxForce())); + } user.getPlayerInfoManager().setMaxForce(teamForce); Poster.getPoster().dispatchEvent(new UserForceChangeEvent(uid,teamForce)); user.getUserMissionManager().onGameEvent(user,GameEvent.USER_FORCE_CHANGE); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java index 3c943dd58..823a2051f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java @@ -27,8 +27,8 @@ public enum RankEnum { DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new),//param1:当前阵玩家伤害 param2:无 param3:无 DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无 DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new),//param1:玩家总伤害 param2:无 param3:无 - DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new);//param1:工会总伤害 param2:无 param3:无 - + DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new),//param1:工会总伤害 param2:无 param3:无 + GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new);//param1:公会总战力 param2:无 param3:无 private int type; private String redisKey; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java index 103fc4622..f42196e44 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java @@ -60,12 +60,14 @@ public class RankLogic { * @param messageType * @throws Exception */ - public void getRankFirstInfo(ISession session, List rankTypes, MessageTypeProto.MessageType messageType) throws Exception { + public void getRankFirstInfo(ISession session, List rankTypes,List activityId,MessageTypeProto.MessageType messageType) throws Exception { PlayerManager playerManager = UserManager.getUser(session.getUid()).getPlayerInfoManager(); PlayerInfoProto.RankFirstResponse.Builder response = PlayerInfoProto.RankFirstResponse.newBuilder(); - for(int type :rankTypes){ + for(int i = 0 ; i > rankByKey = getRankByKey("", 0, 1); + public CommonProto.UserRank.Builder getFirst(int activityId) throws Exception { + Set> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0); CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); if(rankByKey.size()!=1){ return builder; @@ -129,7 +129,7 @@ public abstract class AbstractRank implements IRank { CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo); builder.addRanks(oneUserRank); } - public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ + public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo) throws Exception { CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java new file mode 100644 index 000000000..1cf89cd9e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java @@ -0,0 +1,91 @@ +package com.ljsd.jieling.logic.rank.rankImpl; + +import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.GuildInfo; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.data.redis.core.ZSetOperations; + +import java.util.Set; + +/** + * @author lvxinran + * @date 2020/6/8 + * @discribe + */ +public class GuildForceRank extends AbstractRank { + + + public GuildForceRank(int type, String redisKey) { + super(type, redisKey); + } + + @Override + public int[] getDataByScore(Double score) { + return new int[]{score.intValue()}; + } + + @Override + public double getScore(double... data) { + return data[0]; + } + + @Override + protected void getOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue())); + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(index) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())); + CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() + .setUid(guildInfo.getId()) + .setGuildName(guildInfo.getName()) + .setRankInfo(everyRankInfo); + builder.addRanks(everyRank); + } + @Override + protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){ + int guildId = user.getPlayerInfoManager().getGuildId(); + int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(guildId)).intValue(); + Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(guildId)); + CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(myRank) + .setParam1(getParam1(zSetScore)) + .setParam2(getParam2(zSetScore)).build(); + allUserResponse.setMyRankInfo(towerRankInfo); + } + public CommonProto.UserRank.Builder getFirst(int activityId) throws Exception { + Set> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0); + CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); + if(rankByKey.size()!=1){ + return builder; + } + ZSetOperations.TypedTuple data = rankByKey.iterator().next(); + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(1) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())); + int gid = Integer.parseInt(data.getValue()); + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid); + Set chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN); + int chairManId = chairMan.iterator().next(); + User user = UserManager.getUser(chairManId); + CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() + .setUid(chairManId) + .setUserName(user.getPlayerInfoManager().getNickName()) + .setHead(user.getPlayerInfoManager().getHead()) + .setHeadFrame(user.getPlayerInfoManager().getHeadFrame()) + .setLevel(user.getPlayerInfoManager().getLevel()) + .setRankInfo(everyRankInfo) + .setForce(user.getPlayerInfoManager().getMaxForce()) + .setSex(user.getPlayerInfoManager().getSex()) + .setGuildName(guildInfo.getName()); + return everyRank; + } +}