diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChoiceDrawCardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChoiceDrawCardActivity.java index 33a52de0b..aa68f5785 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChoiceDrawCardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChoiceDrawCardActivity.java @@ -3,6 +3,7 @@ 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.ActivityManager; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.logic.activity.event.ChoiceDrawCardEvent; @@ -14,6 +15,7 @@ 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 config.SWishActivityUp; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; @@ -123,4 +125,55 @@ public class ChoiceDrawCardActivity extends AbstractActivity { return result; } + @Override + public void getAllMissRewards(User user, ISession session, List itemAttrs) throws Exception { + List misssIds = new LinkedList<>(); + List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if (null == cfgs) { + LOGGER.error("奖励配置不存在{}",id); + return; + //throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + for (SActivityRewardConfig sActivityRewardConfig : cfgs) { + misssIds.add(sActivityRewardConfig.getId()); + } + //checkAndUpdate state + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + return; + } + + boolean isTake = false; + for (Integer missionId : misssIds) { + //checkAndUpdate cfg + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { + continue; + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + continue; + } + //take rewards checkAndUpdate + if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { + continue; + } + //up miss + int[] incs = SWishActivityUp.rewardMap.get(id).get(activityMission.getChoiceRewardId()); + int[][] reward = getReward(sActivityRewardConfig.getReward(),incs[sActivityRewardConfig.getSort()-1]); + itemAttrs.add(reward); + isTake = true; + activityProgressInfo.setState(ActivityType.HAD_TAKED); + } + if (!isTake) { + return; + } + + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (null != sGlobalActivity && sGlobalActivity.getResetGrade() == 1) { + reSetValue(user); + getAllMissRewards(user, session, itemAttrs); + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java index 78a941595..57657287b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java @@ -39,11 +39,6 @@ public class ActivityStateChangeHandler implements IEventHandler { ActivityLogic.getInstance().checkNeedOpenStore(user,shopId,startTime,endTime); } } -// if(sGlobalActivity.getCanBuyRechargeId()!=null&&sGlobalActivity.getCanBuyRechargeId().length>0){ -// -// Arrays.stream(sGlobalActivity.getCanBuyRechargeId()).forEach(n->user.getPlayerInfoManager().getRechargeInfo().putDyGoodsCanBuyTimes(n,1)); -// BuyGoodsNewLogic.sendGiftGooodsIndication(uid); -// } }else if(state == ActivityType.FINISH_STATE){ List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(3, new ArrayList<>(0)); sGlobalActivities.stream().filter(s->s.getOpenRules()[1] == activityId).forEach(s->{