From 30ad58d7f05f6d2e4f608b30382d493b086ab85f Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Fri, 18 Jun 2021 00:06:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=B1=E6=B2=B3=E8=AF=95=E7=82=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityType.java | 1 + .../logic/activity/ActivityTypeEnum.java | 2 +- .../activity/HardStageExerciseActivity.java | 74 +++++++++++++++++++ .../event/HardStageExerciseEvent.java | 27 +++++++ .../logic/hardStage/HardStageLogic.java | 7 ++ 5 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HardStageExerciseActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HardStageExerciseEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index 9de4eee0b..634f723c1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -85,6 +85,7 @@ public interface ActivityType { int LUCKY_GET = 63;//福星高照 int FIFTEEN_LOGIN = 64;//十五日签到 int EQUIP_UPLEVEL = 65;//云游商人 + int HARD_STAGE_EXERCISE = 68;//山河试炼 int SUB_ACTIVITY = 8000;//易经宝库 int SKIN_RECHARGE_ACTIVITY = 71; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index c8c00e210..735d70a26 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -72,7 +72,7 @@ public enum ActivityTypeEnum { EQUIP_UPLEVEL(ActivityType.EQUIP_UPLEVEL,EquipUpLevelActivity::new), TA_SUI_LING_XIAO(ActivityType.TA_SUI_LING_XIAO,TaSuiLingXiaoActivity::new), CHOICE_DRAW_CRAD(ActivityType.CHOICE_DRAW_CRAD,ChoiceDrawCardActivity::new), - + HARD_STAGE_EXERCISE(ActivityType.HARD_STAGE_EXERCISE,HardStageExerciseActivity::new), ; private int type; private Function toActivityFunction; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HardStageExerciseActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HardStageExerciseActivity.java new file mode 100644 index 000000000..34dea8f67 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HardStageExerciseActivity.java @@ -0,0 +1,74 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.HardStageExerciseEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.hardStage.HardStageLogic; +import com.ljsd.jieling.network.session.ISession; + +import java.util.Map; + +public class HardStageExerciseActivity extends AbstractActivity{ + public HardStageExerciseActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, HardStageExerciseEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if(event instanceof HardStageExerciseEvent){ + User user = UserManager.getUser(((HardStageExerciseEvent) event).getUid()); + if(user == null){ + return; + } + if(user.getActivityManager().getActivityMissionMap().get(id) == null){ + return; + } + //无用 功能线上 活动后上 + //update(user,((HardStageExerciseEvent) event).getCount()); + } + } + @Override + public boolean takeReward(ISession session, int missionId) throws Exception{ + + User user = UserManager.getUser(session.getUid()); + if(user == null){ + return false; + } + checkState(user); + super.takeReward(session,missionId); + return true; + } + /** + * 活动结束邮件 + */ + @Override + public void onActivityEndDealReward(User user) throws Exception { + checkState(user); + super.onActivityEndDealReward(user); + } + + //山河社稷功能已上 活动后上 为了保证老玩家这个活动数据正常 特在此容错 + private void checkState(User user)throws Exception{ + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if( null == activityMission){ + return; + } + int starSum = HardStageLogic.getHardStageStarsSum(user); + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + + for (Map.Entry item : activityProgressInfoMap.entrySet()) { + ActivityProgressInfo activityProgressInfo = item.getValue(); + if(starSum == item.getValue().getProgrss()){ + continue; + } + activityProgressInfo.setProgrss(starSum); + activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo); + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HardStageExerciseEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HardStageExerciseEvent.java new file mode 100644 index 000000000..3038ee2f5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HardStageExerciseEvent.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.logic.activity.event; + +public class HardStageExerciseEvent implements IEvent{ + private int uid; + private int count; + + public HardStageExerciseEvent(int uid, int count) { + this.uid = uid; + this.count = count; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java index 8148b07b1..72820bbee 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java @@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.hardStage; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.HardStageExerciseEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.UserManager; @@ -246,6 +248,10 @@ public class HardStageLogic { HardStageNode node = chapterMap.get(nodeConfig.getChapter()).getNode(nodeConfig.getId()); if (node.getType() == 1) {//大节点 int star = passReward(user, node, resultNum, dropList);//星级通关奖励 + //山河试炼活动 + /*if(star >0 ){ + Poster.getPoster().dispatchEvent(new HardStageExerciseEvent(iSession.getUid(),star)); + }*/ chapterMap.get(nodeConfig.getChapter()).addStars(star); if (!node.isHasPass()) { node.setHasPass(true); @@ -431,6 +437,7 @@ public class HardStageLogic { if(n.getType()== 1){ n.setState(7); chapter.addStars(3); + Poster.getPoster().dispatchEvent(new HardStageExerciseEvent(user.getId(),3)); user.getHardStageManager().updateString("chapterMap." + chapter.getChapterId(), chapter); //user.getHardStageManager().updateString("chapterMap",user.getHardStageManager().getChapterMap());