diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 7fb2efbac..3b5b02df8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -139,6 +139,8 @@ public interface BIReason { int EXCEPTION_TREASURE_REWARD = 77;//天空密境积分奖励 + int PROUD_REWARD = 78;//膜拜获得金币奖励 + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 int DECOMPOSE_ITEM_CONSUME = 1002;//分解道具消耗 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java new file mode 100644 index 000000000..31e55fca2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java @@ -0,0 +1,25 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.rank.RankLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/6/5 + * @discribe + */ +@Component +public class RankFirstHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.RANK_GET_FIRST_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.RankFirstRequest proto) throws Exception { + RankLogic.getInstance().getRankFirstInfo(iSession,proto.getTypesList(),MessageTypeProto.MessageType.RANK_GET_FIRST_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java index bcb37c075..52241dd66 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java @@ -1,9 +1,6 @@ package com.ljsd.jieling.handler; -import com.ljsd.jieling.handler.map.MapLogic; -import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankLogic; -import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java new file mode 100644 index 000000000..575df3498 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.handler.workshop; + + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.rank.RankLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/6/5 + * @discribe + */ +@Component +public class RankProudHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.RANK_PROUD_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.RankProudRequest proto) throws Exception { + RankLogic.getInstance().rankProud(iSession,proto.getRankType(), MessageTypeProto.MessageType.RANK_PROUD_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 62d411f35..675564d8c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -351,6 +351,8 @@ public class GlobalDataManaager implements IManager { }else { user.getPlayerInfoManager().setIsdayFirst(0); } + //刷新膜拜信息 + user.getPlayerInfoManager().setProudInfo(new HashSet<>()); } if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) { flushGoodsTimes(user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 5f20b6568..d688dd672 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -103,6 +103,8 @@ public class PlayerManager extends MongoBase { private String maxforceHero; + private Set proudInfo = new HashSet<>(); + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -689,4 +691,18 @@ public class PlayerManager extends MongoBase { this.maxforceHero = maxforceHero; updateString("maxforceHero",maxforceHero); } + + public Set getProudInfo() { + return proudInfo; + } + + public void addProudInfo(int type) { + proudInfo.add(type); + updateString("proudInfo",proudInfo); + } + + public void setProudInfo(Set proudInfo) { + this.proudInfo = proudInfo; + updateString("proudInfo",proudInfo); + } } 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 28abdc6c8..5fed8cdcb 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 @@ -267,20 +267,20 @@ public class HeroLogic{ } int j=0; - //标记是否触发保底 - boolean specialTrigger=false; +// //标记是否触发保底 +// boolean specialTrigger=false; for(int i=0;i rankTypes, MessageTypeProto.MessageType messageType) throws Exception { + PlayerManager playerManager = UserManager.getUser(session.getUid()).getPlayerInfoManager(); + PlayerInfoProto.RankFirstResponse.Builder response = PlayerInfoProto.RankFirstResponse.newBuilder(); + for(int type :rankTypes){ + AbstractRank rankEnum = RankContext.getRankEnum(type); + CommonProto.UserRank.Builder first = rankEnum.getFirst(); + response.addRanks(first.build()); + response.addProud(playerManager.getProudInfo().contains(type)?1:0); + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } + + + /** + * 膜拜 + * @param session + * @param type + * @param messageType + */ + public void rankProud(ISession session, int type,MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + PlayerManager playerManager = user.getPlayerInfoManager(); + if(playerManager.getProudInfo().contains(type)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + playerManager.addProudInfo(type); + int[] drop = SSpecialConfig.getOnceArrayValue(SSpecialConfig.REWARD_OF_WORSHIP); + CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, new int[][]{drop}, BIReason.PROUD_REWARD); + PlayerInfoProto.RankProudResponse response = PlayerInfoProto.RankProudResponse.newBuilder().setDrop(dropBuilder.build()).build(); + MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); + } } 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 0757cf17f..2d2a6b3cd 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 @@ -89,6 +89,24 @@ public abstract class AbstractRank implements IRank { public Set> getRankByKey(String rkey,int start,int end){ return RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, rkey, start, end); } + + //获取第一名信息 + public CommonProto.UserRank.Builder getFirst() throws Exception { + Set> rankByKey = getRankByKey("", 0, 1); + CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); + if(rankByKey.size()!=1){ + return builder; + } + ZSetOperations.TypedTuple data = rankByKey.iterator().next(); + User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true); + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(1) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())); + builder = getOneUserRank(everyUser,everyRankInfo); + return builder; + } protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set> zsetreverseRangeWithScores,int start) throws Exception{ PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder(); forEach(start,zsetreverseRangeWithScores,(index,data)->{ @@ -108,6 +126,10 @@ public abstract class AbstractRank implements IRank { .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo); + builder.addRanks(oneUserRank); + } + public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) @@ -115,8 +137,9 @@ public abstract class AbstractRank implements IRank { .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) .setLevel(everyUser.getPlayerInfoManager().getLevel()) .setRankInfo(everyRankInfo) - .setForce(everyUser.getPlayerInfoManager().getMaxForce()); - builder.addRanks(everyRank); + .setForce(everyUser.getPlayerInfoManager().getMaxForce()) + .setSex(everyUser.getPlayerInfoManager().getSex()); + return everyRank; } protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){ @@ -178,4 +201,5 @@ public abstract class AbstractRank implements IRank { public double getScoreById(int uid,String rkey){ return RedisUtil.getInstence().getZSetScore(redisKey,rkey, String.valueOf(uid)); } + } diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 3a7daa5f6..7bacceb56 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -63,6 +63,7 @@ public class SSpecialConfig implements BaseConfig { public static final String GUILD_TECHNOLOGY_RETURN_PERCENT = "guild_technology_return_percent";//公会技能重置返还材料比例 实际百分比为填写数值/10000 public static final String LOTTERY_ENERGY_COST = "lottery_energy_cost";//钻石抽积攒仙缘能量(原非酋气息)抽奖消耗 public static final String EXPEDITION_REBORN = "expedition_reborn";// 大闹天宫复活道具id + public static final String REWARD_OF_WORSHIP = "reward_of_worship";//膜拜获得金币奖励 @Override public void init() throws Exception {