From 2ff9f1583e8f772eaa7c7faf12fcb680b89b6480 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 10 Oct 2019 11:08:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B8=E8=BF=90=E6=8E=A2=E5=AE=9D=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E5=A5=96=E5=8A=B1=E9=A2=86=E5=AE=8C=20=E9=87=8D?= =?UTF-8?q?=E7=BD=AE=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/config/SGlobalActivity.java | 5 ++++ .../logic/activity/AbstractActivity.java | 26 ++++++++++++++++--- .../jieling/logic/activity/ActivityLogic.java | 17 +++++++----- .../logic/activity/LuckWheelActivity.java | 15 +++++------ .../ljsd/jieling/logic/dao/PlayerManager.java | 3 +++ 5 files changed, 47 insertions(+), 19 deletions(-) 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 d412bf6df..127cd50d8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java @@ -131,4 +131,9 @@ public class SGlobalActivity implements BaseConfig { public int getShopId() { return shopId; } + + public int getResetGrade() { + return resetGrade; + } + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index dbb1d06c6..97f9d3694 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -69,6 +69,18 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { activityManager.initAllActivityMission(id); } + + /** + * 活动期间活动进度会进行多次 领完所有活动奖励重置 + * @param user + * @throws Exception + */ + public void reSetValue(User user) throws Exception { + ActivityManager activityManager = user.getActivityManager(); + activityManager.removeActivity(id); + activityManager.initAllActivityMission(id); + } + @Override public void update(User user, int count) { ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); @@ -135,8 +147,14 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { int[][] reward = sActivityRewardConfig.getReward(); CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); - //send - sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if(null!=sGlobalActivity&&ActivityLogic.getInstance().checkActivityMissionFinishAndTaked(id,activityMission)&&sGlobalActivity.getResetGrade()==1){ + reSetValue(user); + activityMission.setValue(activityMission.getValue()-sActivityRewardConfig.getValues()[0][0]); + sendActivityProgress(session, activityMission,null); + }else { + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + } KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); @@ -226,7 +244,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { return true; } - public void onActivityEndSelfWithDealReward(User user) throws Exception { + void onActivityEndSelfWithDealReward(User user) throws Exception { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); if (sGlobalActivity.getIsMail() == 1) onActivityEndDealReward(user); @@ -261,7 +279,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { takeAllReward(sessionByUid); } - public List getAllMissInfo(ActivityMission activityMission) { + List getAllMissInfo(ActivityMission activityMission) { return getAllMissInfo(activityMission, null); } 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 62ce4ea57..b29c83263 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 @@ -467,29 +467,32 @@ public class ActivityLogic { } } - private void checkActivityMissionFinishAndTaked(int activityId, ActivityMission activityMission) { + public boolean checkActivityMissionFinishAndTaked(int activityId, ActivityMission activityMission) { Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); - boolean isAllTaked = true; for (Map.Entry item : activityProgressInfoMap.entrySet()) { ActivityProgressInfo activityProgressInfo = item.getValue(); - Integer missionStatus = activityProgressInfo.getState(); + int missionStatus = activityProgressInfo.getState(); if (missionStatus == ActivityType.WILL_TAKE) { - isAllTaked = false; + return false; } if (SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.TREASURE) { if (missionStatus == ActivityType.HAD_TAKED) { - isAllTaked = false; + return false; } } } if (activityProgressInfoMap.isEmpty()) { - isAllTaked = false; + return false; } - if (isAllTaked) { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); + if(sGlobalActivity.getResetGrade()==0){ activityMission.updateActivityState(ActivityType.FINISH_STATE); } + + return true; } + public int getInitActivityMissionProgress(int activityId) { int defalutProgress = 0; switch (activityId) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java index 4f7b340cc..55de870c8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java @@ -1,17 +1,11 @@ package com.ljsd.jieling.logic.activity; -import com.ljsd.jieling.config.SDailyTasksConfig; -import com.ljsd.jieling.config.SDialRewardConfig; -import com.ljsd.jieling.config.SDialRewardSetting; -import com.ljsd.jieling.config.SGlobalActivity; +import com.ljsd.jieling.config.*; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.activity.event.LuckWheelAdvanceEvent; import com.ljsd.jieling.logic.activity.event.LuckWheelEvent; -import com.ljsd.jieling.logic.dao.ActivityMission; -import com.ljsd.jieling.logic.dao.LuckWheelMission; -import com.ljsd.jieling.logic.dao.LuckWheelPosInfo; -import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -59,6 +53,11 @@ public abstract class LuckWheelActivity extends AbstractActivity { activityMission.setValue(count + activityMission.getValue()); } + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + /** * 重置奖励 */ 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 473d03273..cc7ec63c9 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 @@ -329,6 +329,9 @@ public class PlayerManager extends MongoBase { public void vipFlush( Set removePrivileges) { for(Integer id : vipInfo.keySet()){ SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(id); + if(null == sPrivilegeTypeConfig){ + continue; + } int refreshType = sPrivilegeTypeConfig.getRefreshType()[0]; if(refreshType == 1){ vipInfo.put(id,0);