From 628902282d1e7bf971ab2f8c69f527d527d345a7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 18 Dec 2019 14:06:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=B7=E5=AE=AB=E5=AF=BB=E5=AE=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 2 ++ .../jieling/handler/GetPlayerInfoHandler.java | 4 ++- .../jieling/logic/dao/UserMissionManager.java | 33 +++++++++++-------- .../jieling/logic/mission/MissionLoigc.java | 9 +++-- .../mission/main/MissingRoomMissionType.java | 30 ++++++++++++++--- .../java/config/SMazeTreasureSetting.java | 32 ++++++++++-------- 6 files changed, 74 insertions(+), 36 deletions(-) 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 566e54310..914e6197e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -192,6 +192,8 @@ public interface BIReason { int MISSING_ROOM_SEND_CONSUME = 1048;//迷宫寻宝派遣消耗 + int MISSING_ROOM_ACCELERATE_CONSUME = 1049;//迷宫寻宝加速消耗 + diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index e70222660..8c4b4ab08 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -26,6 +26,7 @@ import com.ljsd.jieling.thread.task.RPCServerTask; import com.ljsd.jieling.util.CBean2Proto; import com.ljsd.jieling.util.MessageUtil; import config.SChallengeConfig; +import config.SMazeTreasureSetting; import config.SRechargeCommodityConfig; import manager.STableManager; import org.slf4j.Logger; @@ -136,6 +137,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ endless.setBloodScore(RedisUtil.getInstence().getZSetScore(RedisKey.BLOODY_RANK,Integer.toString(1), Integer.toString(userId)).intValue()); List goodsBagInfo = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size()); BuyGoodsLogic.getGoodsBagInfo(userId,goodsBagInfo,true); + int vipPrivilageValue = user.getPlayerInfoManager().getVipPrivilageValue(SMazeTreasureSetting.sMazeTreasureSetting.getRefreshVIP()); PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) @@ -164,7 +166,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .addAllPlayedMapTypes(mapManager.getPlayedMapType()) .setAmount(rechargeInfo.getSaveAmt()) .setVipDaily(playerInfoManager.getHadTakeDailyBoxVip()) - .setMissingRefreshCount(user.getUserMissionManager().getMissingRoomMissionType().getCoinRefreshCount()) + .setMissingRefreshCount(vipPrivilageValue) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index c0fe3f806..5bb66a0b6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -166,28 +166,33 @@ public class UserMissionManager extends MongoBase { missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1); missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1); boolean result; - SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSettingMap.get(1); + SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting; result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1); if(!result){ result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1); if(!result){ - int coinRefreshCount = missingRoomMissionType.getCoinRefreshCount(); - int[][] refreshHighTypeNum = SMazeTreasureSetting.sMazeTreasureSettingMap.get(1).getRefreshHighTypeNum(); - for(int[] refresh:refreshHighTypeNum){ - if(coinRefreshCount==0||coinRefreshCount%refresh[0]!=0){ - continue; - }else{ - mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1)); - } - } + int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP()); int[][] cost = sMazeTreasureSetting.getCost(); int count = (int)MathUtils.calABX(coinRefreshCount, cost[1]); result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1); - missingRoomMissionType.setCoinRefreshCount(coinRefreshCount +1); + if(!result){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(),1); } - } - if(!result){ - throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + //高级特权 + missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getHighDailyPrivilege(),mustAppear); + //豪华特权 + missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getLuxuryDailyPrivilege(),mustAppear); + int[][] refreshHighTypeNum = sMazeTreasureSetting.getRefreshHighTypeNum(); + for(int[] refresh:refreshHighTypeNum){ + if(missingRoomMissionType.getRefreshTotalCount()==0||missingRoomMissionType.getRefreshTotalCount()%refresh[0]!=0){ + continue; + }else{ + mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1)); + } + } + missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount()+1); } missingRoomMissionType.getDoingMissionIds().clear(); } 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 2dd7deaa5..eb58e4b32 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 @@ -707,11 +707,14 @@ public class MissionLoigc { User user = UserManager.getUser(session.getUid()); MissingRoomMissionType missingRoomMissionType = user.getUserMissionManager().getMissingRoomMissionType(); Set finishMissionIds = missingRoomMissionType.getFinishMissionIds(); - if(finishMissionIds.contains(missionId)){ - missingRoomMissionType.setMissingTime(missionId,0); - }else { + if(!finishMissionIds.contains(missionId)){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } + SMazeTreasure sMazeTreasure = SMazeTreasure.sMazeTreasureMap.get(missionId % 10000); + if(!ItemUtil.itemCost(user,new int[][]{sMazeTreasure.getSpeedUpTake()},BIReason.MISSING_ROOM_ACCELERATE_CONSUME,1)){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + missingRoomMissionType.setMissingTime(missionId,0); user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType); MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java index b650b7b0a..7bb897052 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java @@ -26,7 +26,13 @@ public class MissingRoomMissionType extends AbstractMissionType{ private int missionIndex; - private int coinRefreshCount; + private int refreshTotalCount; + +// private int coinRefreshCount; +// +// private int higherDailyRefreshCount; +// +// private int especialDailyRefreshCount; @Override public void openMission(User user, int missionId, List missionTypeEnumList) { @@ -129,6 +135,19 @@ public class MissingRoomMissionType extends AbstractMissionType{ heroesInfo.put(missionId,heroes); } + + public void privilegeRefresh(User user,int[][] privilege,Map mustAppear){ + if(user.getPlayerInfoManager().checkFunctionIsAllowed(privilege[0][0])&&privilege.length>1){ + int especialCount = user.getPlayerInfoManager().getVipPrivilageValue(privilege[0][0]); + for(int i = 1; i< privilege.length; i++){ + if(privilege[i][0]==especialCount+1){ + mustAppear.put(privilege[i][1],mustAppear.get(privilege[i][1])==null?1:(mustAppear.get(privilege[i][1])+1)); + } + } + user.getPlayerInfoManager().updateVipPrivilage(privilege[0][0],1); + } + + } public Map getAllMissingTime(){ return missingTime; } @@ -148,11 +167,12 @@ public class MissingRoomMissionType extends AbstractMissionType{ return missionIndex; } - public int getCoinRefreshCount() { - return coinRefreshCount; + public int getRefreshTotalCount() { + return refreshTotalCount; } - public void setCoinRefreshCount(int coinRefreshCount) { - this.coinRefreshCount = coinRefreshCount; + public void setRefreshTotalCount(int refreshTotalCount) { + this.refreshTotalCount = refreshTotalCount; } + } diff --git a/tablemanager/src/main/java/config/SMazeTreasureSetting.java b/tablemanager/src/main/java/config/SMazeTreasureSetting.java index 3642843bb..129ed1823 100644 --- a/tablemanager/src/main/java/config/SMazeTreasureSetting.java +++ b/tablemanager/src/main/java/config/SMazeTreasureSetting.java @@ -11,8 +11,6 @@ public class SMazeTreasureSetting implements BaseConfig { private int refreshType; - private int needItem; - private int refreshNum; private int[] takeOrder; @@ -23,14 +21,18 @@ public class SMazeTreasureSetting implements BaseConfig { private int[][] refreshHighTypeNum; - private int[][] dailyPrivilege; + private int[][] highDailyPrivilege; - public static Map sMazeTreasureSettingMap; + private int[][] luxuryDailyPrivilege; + + private int refreshVIP; + + public static SMazeTreasureSetting sMazeTreasureSetting; @Override public void init() throws Exception { - sMazeTreasureSettingMap = STableManager.getConfig(SMazeTreasureSetting.class); + sMazeTreasureSetting = STableManager.getConfig(SMazeTreasureSetting.class).get(1); } @@ -38,10 +40,6 @@ public class SMazeTreasureSetting implements BaseConfig { return refreshType; } - public int getNeedItem() { - return needItem; - } - public int getRefreshNum() { return refreshNum; } @@ -58,11 +56,19 @@ public class SMazeTreasureSetting implements BaseConfig { return refreshHighTypeNum; } - public int[][] getDailyPrivilege() { - return dailyPrivilege; - } - public int[] getTakeOrder() { return takeOrder; } + + public int[][] getHighDailyPrivilege() { + return highDailyPrivilege; + } + + public int[][] getLuxuryDailyPrivilege() { + return luxuryDailyPrivilege; + } + + public int getRefreshVIP() { + return refreshVIP; + } } \ No newline at end of file