From 04001f09b63c5d1a1fd467ad49a8dcdbe71ecd55 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Tue, 22 Jun 2021 16:30:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E6=98=9F=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/HeroStarActivity.java | 65 +++++++++++++++---- .../activity/event/FiveStarGetEvent.java | 18 +++++ .../java/com/ljsd/jieling/util/ItemUtil.java | 13 ++-- 3 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java index 8ebe13e7e..5f81489c0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java @@ -1,43 +1,57 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; 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.HeroUpStarEvent; -import com.ljsd.jieling.logic.activity.event.IEvent; -import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; import config.SActivityRewardConfig; import config.SGlobalActivity; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; import java.util.List; import java.util.Map; public class HeroStarActivity extends AbstractActivity { + private int heroId; public HeroStarActivity(int id) { super(id); Poster.getPoster().listenEvent(this, HeroUpStarEvent.class); + Poster.getPoster().listenEvent(this, FiveStarGetEvent.class); } @Override public void onEvent(IEvent event) throws Exception { - if (!(event instanceof HeroUpStarEvent)) - return; - HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event; - User user = UserManager.getUser(heroUpStarEvent.getUid()); + User user = null; + if(event instanceof FiveStarGetEvent){ + FiveStarGetEvent fiveStarGetEvent = (FiveStarGetEvent)event; + if(heroId != fiveStarGetEvent.getHeroid()) + return; + user = UserManager.getUser(fiveStarGetEvent.getUid()); + }else if(event instanceof HeroUpStarEvent){ + HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event; + if(heroUpStarEvent.getHeroTid() != heroId){ + return; + } + user = UserManager.getUser(heroUpStarEvent.getUid()); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); if( null == activityMission){ return; } Map activityProgressInfoMap = activityMission.getActivityMissionMap(); List list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - int heroId = list.get(0).getValues()[0][0]; - if(heroUpStarEvent.getHeroTid() != heroId){ - return; - } + int maxstar = user.getHeroManager().getHeroHandBook().get(heroId); for (SActivityRewardConfig sActivityRewardConfig : list) { if (maxstar >= sActivityRewardConfig.getValues()[0][1]) { @@ -71,11 +85,12 @@ public class HeroStarActivity extends AbstractActivity { } Map activityProgressInfoMap = activityMission.getActivityMissionMap(); List list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - int heroId = list.get(0).getValues()[0][0]; + heroId = list.get(0).getValues()[0][0]; Integer maxstar = user.getHeroManager().getHeroHandBook().get(heroId); if(maxstar == null){ return; } + for (SActivityRewardConfig sActivityRewardConfig : list) { if (maxstar.intValue() >= sActivityRewardConfig.getValues()[0][1]) { ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null); @@ -89,4 +104,30 @@ public class HeroStarActivity extends AbstractActivity { } } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + PlayerInfoProto.TakeActivityRewardResponse build = null; + User user = UserManager.getUser(session.getUid()); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == 2) { + throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); + } + activityProgressInfo.setState(2); + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if(sActivityRewardConfig==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + sendActivityProgress(session, activityMission, null); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD); + build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + return true; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java new file mode 100644 index 000000000..6ed6bf89f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java @@ -0,0 +1,18 @@ +package com.ljsd.jieling.logic.activity.event; + +public class FiveStarGetEvent implements IEvent { + private int uid; + private int heroid; + + public FiveStarGetEvent(int uid,int heroid){ + this.heroid = heroid; + } + + public int getHeroid() { + return heroid; + } + + public int getUid() { + return uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index c7e142af9..3c30b441e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -20,10 +20,7 @@ import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.ActivityType; -import com.ljsd.jieling.logic.activity.event.HeroFiveStarGetEvent; -import com.ljsd.jieling.logic.activity.event.Poster; -import com.ljsd.jieling.logic.activity.event.UseItemEvent; -import com.ljsd.jieling.logic.activity.event.UserLevelEvent; +import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HeroLogic; @@ -1262,6 +1259,7 @@ public class ItemUtil { SItem sItem = SItem.getsItemMap().get(entry.getKey()); extraDropAop(user,dropBuilder,sItem); } + fiveStarEvent(user,entry.getKey()); if(reason != BIReason.HERO_RANDOM){ fiveStarPushByCombine(user,entry.getKey(),count); } @@ -1728,4 +1726,11 @@ public class ItemUtil { } } + public static void fiveStarEvent(User user,int itemId){ + SCHero scHero = SCHero.getsCHero().get(itemId); + if(scHero != null && scHero.getStar()==5){ + Poster.getPoster().dispatchEvent(new FiveStarGetEvent(user.getId(),itemId)); + } + } + }