diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java index e61d326a5..bb5402d67 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java @@ -102,6 +102,8 @@ public class SGameSetting implements BaseConfig { private int maxNameLength; + private int maxEnergyGet; + private static SGameSetting gameSetting; @@ -301,4 +303,8 @@ public class SGameSetting implements BaseConfig { public int getMaxNameLength() { return maxNameLength; } + + public int getMaxEnergyGet() { + return maxEnergyGet; + } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java index 80048e44e..3867d59a4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java @@ -36,6 +36,10 @@ public class SGlobalActivity implements BaseConfig { private int isMail; + private int ifOpen; + + private int shopId; + @Override public void init() throws Exception { @@ -117,4 +121,12 @@ public class SGlobalActivity implements BaseConfig { public int getIsMail() { return isMail; } + + public int getIfOpen() { + return ifOpen; + } + + public int getShopId() { + return shopId; + } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 69c371795..07ab878aa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.GameApplication; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.db.redis.RedisKey; @@ -14,6 +15,7 @@ import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; @@ -85,6 +87,10 @@ public class ActivityLogic { if (now < startTime) { continue; } + int ifOpen = sGlobalActivity.getIfOpen(); + if(ifOpen!=0 && GameApplication.serverConfig.getCacheOpenTime() + ifOpen*TimeUtils.ONE_DAY - startTime >0){ + continue; + } if (endTime != 0 && now > endTime) { if (openActivityIds.contains(sGlobalActivity.getId())) { openActivityIds.remove(sGlobalActivity.getId()); @@ -120,6 +126,14 @@ public class ActivityLogic { checkActivityOfUser(user, null); } + private void checkNeedOpenStore(User user,int storeId,long startTime,long endTime) throws Exception { + if(storeId == 0){ + return; + } + StoreLogic.initOnsStoereWithTime(user,storeId,startTime,endTime); + + } + public Set checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception { long now = TimeUtils.now(); ActivityManager activityManager = user.getActivityManager(); @@ -142,6 +156,11 @@ public class ActivityLogic { abstractActivity.initActivity(user); //非角色活动开启通知 openNewActivityIds.add(openActivityId); + if(sGlobalActivity.getShopId()!=0){ + long startTime = sGlobalActivity.getTimeLong(0, 1); + long endTime = sGlobalActivity.getTimeLong(0, 2); + checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime); + } } Map activityMissionMap = activityManager.getActivityMissionMap(); long userCreateTime = user.getPlayerInfoManager().getCreateTime(); @@ -177,6 +196,7 @@ public class ActivityLogic { activityManager.initAllActivityMission(activityId); } openNewActivityIds.add(activityId); + checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime); } else { ActivityMission activityMission = activityMissionMap.get(activityId); if (activityMission != null) { @@ -509,15 +529,21 @@ public class ActivityLogic { public void checkSecretBoxSeason() { long now = TimeUtils.now(); + int newSecretBoxSeasonTimes = 0; for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) { long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong(); long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong(); if (now >= seasonStartLong && now <= seasonEndLong) { - secretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); - return; + newSecretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); + break; } } - secretBoxSeasonTimes = 0; + if(newSecretBoxSeasonTimes!=secretBoxSeasonTimes){ + secretBoxSeasonTimes = newSecretBoxSeasonTimes; + PlayerInfoProto.UpdateSecretBoxSeasonIndication build = PlayerInfoProto.UpdateSecretBoxSeasonIndication.newBuilder().setNewSeasonId(newSecretBoxSeasonTimes).build(); + MessageUtil.sendAllOnlineUserMsg(MessageTypeProto.MessageType.UPDATE_SECRET_BOX_SEASON_INDICATION_VALUE,build); + } + } //云梦祈福初始化 // public void blessActivityInit(ISession session,MessageTypeProto.MessageType messageType) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index 05317e4bf..2852e42b2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.friend; +import com.ljsd.jieling.config.SGameSetting; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; @@ -393,8 +394,11 @@ public class FriendLogic { return; } friendManager.updateGiveMap(friendId,1); - friendManager1.updateHaveRewardMap(uid,1); - sendFriendStatedication(uid,friendId,2); + boolean check = friendUser.getPlayerInfoManager().check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1); + if(check){ + friendManager1.updateHaveRewardMap(uid,1); + sendFriendStatedication(uid,friendId,2); + } }else{ //赠送全部好友 for (Integer friendUserId : friends) { if (giveMap.get(friendUserId) == 1) { @@ -407,8 +411,11 @@ public class FriendLogic { continue; } friendManager.updateGiveMap(friendUserId,1); - friendManager1.updateHaveRewardMap(uid,1); - sendFriendStatedication(uid,friendUserId,2); + boolean check = friendUser.getPlayerInfoManager().check(SGameSetting.getGameSetting().getMaxEnergyGet(), 0); + if(check){ + friendManager1.updateHaveRewardMap(uid,1); + sendFriendStatedication(uid,friendId,2); + } } } MessageUtil.sendMessage(iSession, 1, msgId, null, true); @@ -427,6 +434,13 @@ public class FriendLogic { FriendManager friendManager = user.getFriendManager(); List friends = friendManager.getFriends(); Map haveRewardMap = friendManager.getHaveRewardMap(); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + boolean check = playerInfoManager.check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1); + Set receieveFriends = new HashSet<>(); + if(!check){ + MessageUtil.sendErrorResponse(iSession, 0, msgId, "已超过当日领取上限"); + return; + } int itemNum = 0; if (type ==1){ //领取一个人 if (!friends.contains(friendId)) { @@ -437,15 +451,24 @@ public class FriendLogic { MessageUtil.sendErrorResponse(iSession, 0, msgId, "已领取赠礼"); return; } + itemNum= 10; friendManager.updateHaveRewardMap(friendId,2); + playerInfoManager.updateVipPrivilage(SGameSetting.getGameSetting().getMaxEnergyGet(),1); + receieveFriends.add(friendId); }else{ for (Integer friend : friends) { if (haveRewardMap.get(friend) != 1) { continue; } + check = playerInfoManager.check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1); + if(!check){ + break; + } + playerInfoManager.updateVipPrivilage(SGameSetting.getGameSetting().getMaxEnergyGet(),1); friendManager.updateHaveRewardMap(friend,2); itemNum += 10; + receieveFriends.add(friend); } } String reward = GlobalItemType.STAMINA +"#"+itemNum; @@ -455,7 +478,7 @@ public class FriendLogic { } CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.FRIEND_GIVE); PlayerInfoProto.FriendTakeHeartResponse friendTakeHeartResponse = PlayerInfoProto.FriendTakeHeartResponse - .newBuilder().setDrop(drop) + .newBuilder().setDrop(drop).addAllFriendId(receieveFriends) .build(); MessageUtil.sendMessage(iSession, 1, msgId, friendTakeHeartResponse, true); } 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 399612450..a12ad15f6 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 @@ -130,6 +130,17 @@ public class StoreLogic { } } + public static void initOnsStoereWithTime(User user,int storeType,long startTime,long endTime) throws Exception { + StoreManager storeManager = user.getStoreManager(); + SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeType); + if(sStoreTypeConfig == null){ + return; + } + Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); + storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap); + sendStoreUpdateIndication(user.getId(),storeManager.getStoreInfoMap().get(sStoreTypeConfig.getId())); + } + public static void initOneStore(User user,int storeType) throws Exception { StoreManager storeManager = user.getStoreManager(); SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeType); @@ -145,7 +156,6 @@ public class StoreLogic { if(sStoreTypeConfig.getStoreOpenRule() == 3 ){ startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), TimeUtils.Stand_CeHua_Data_format); endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), TimeUtils.Stand_CeHua_Data_format); - System.out.println(new Date(endTime)); } Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);