From cddb0f09353b027e78c214e04f500b56435a2237 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 25 Apr 2022 16:48:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A2=E7=B4=A2=E5=95=86=E5=BA=97=E8=A7=A3?= =?UTF-8?q?=E9=94=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/store/StoreLogic.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index 1a43f95f1..7179c9ee4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -368,21 +368,31 @@ public class StoreLogic implements IEventHandler { if(sStoreTypeConfig.getIfManualRefresh()[0]!=0){ refreshTimeDelay-=sStoreTypeConfig.getIfManualRefresh()[0]*sStoreTypeConfig.getIfManualRefresh()[1]*TimeUtils.HOUR; } + StoreInfo storeInfo = storeManager.getStoreInfoMap().get(sStoreTypeConfig.getId()); if(sStoreTypeConfig.getStoreOpenRule() == 8){ TimeControllerOfFunction openTimeOfFuntionCacheByType = GlobalDataManaager.getInstance().getOpenTimeOfFuntionCacheByType(FunctionIdEnum.getFunctionIdEnumByType(sStoreTypeConfig.getOpenLevel()[1])); if(openTimeOfFuntionCacheByType!=null ){ - StoreInfo storeInfo = storeManager.getStoreInfoMap().get(sStoreTypeConfig.getId()); if(storeInfo == null || storeInfo.getStartTime()!=openTimeOfFuntionCacheByType.getStartTime()){ Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); storeManager.newStoreInfo(sStoreTypeConfig.getId(),refreshTimeDelay,openTimeOfFuntionCacheByType.getStartTime(),openTimeOfFuntionCacheByType.getEndTime(),itemNumMap); } } } - if(storeManager.getStoreInfoMap().containsKey(sStoreTypeConfig.getId())){ + if(storeInfo != null){ + //根据条件更新商品 + Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); + if (!itemNumMap.isEmpty()){ + Map map = storeInfo.getItemNumMap(); + for (Integer itemId : itemNumMap.keySet()) { + if (storeInfo.getItemNumMap().get(itemId) == null){ + map.put(itemId,0); + } + } + storeInfo.setItemNumMap(map); + } continue; } if(sStoreTypeConfig.getStoreOpenRule() == 7){ - long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,0, 1); long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,0, 2); long now = TimeUtils.now(); @@ -435,9 +445,8 @@ public class StoreLogic implements IEventHandler { int[] openLv = sStoreConfig.getOpenLv(); int minLv = openLv[0]; int maxLv = openLv[1]; - if (minLv <= playerInfoManager.getLevel() && maxLv >= playerInfoManager.getLevel()){ - totalWeight += sStoreConfig.getWeight(); - randomSstoreConfigList.add(sStoreConfig); + if (minLv > playerInfoManager.getLevel() || maxLv < playerInfoManager.getLevel()){ + continue; } // 额外开启条件 int[] openRule = sStoreConfig.getOpenRule(); @@ -445,15 +454,15 @@ public class StoreLogic implements IEventHandler { case 1: // 杀敌数 int killNum = playerInfoManager.getExploreKillTotalNum(); - if (killNum >= openRule[1]){ - totalWeight += sStoreConfig.getWeight(); - randomSstoreConfigList.add(sStoreConfig); + if (killNum < openRule[1]){ + continue; } break; default: break; } - + totalWeight += sStoreConfig.getWeight(); + randomSstoreConfigList.add(sStoreConfig); } int weight = 0; int rewardId = 0;