From 7a02f3271bdfe958880d8ecd27cbfc010e1b9561 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 17 Apr 2023 11:36:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=92=E9=BE=99=E7=A7=98=E5=AE=9D=E9=A2=86?= =?UTF-8?q?=E5=A5=96=E6=B7=BB=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/ExpeditionExpert.java | 8 +- .../logic/activity/TreasureActivity.java | 126 ++++-------------- 2 files changed, 26 insertions(+), 108 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpeditionExpert.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpeditionExpert.java index 6151e6d79..185b07263 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpeditionExpert.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpeditionExpert.java @@ -51,15 +51,13 @@ public class ExpeditionExpert extends ExpectRankActivity implements IEventHandle super(id); Poster.getPoster().listenEvent(this,EndExpeditionNodeEvent.class); } + @Override boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); User user = UserManager.getUser(session.getUid()); Map value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getActivityMissionMap(); - if (value.containsKey(sActivityRewardConfig.getId())&& value.get(sActivityRewardConfig.getId()).getProgrss()< values[1][0]) { - // MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); - return false; - } - return true; + // MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + return !value.containsKey(sActivityRewardConfig.getId()) || value.get(sActivityRewardConfig.getId()).getProgrss() >= values[1][0]; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java index e2a27be9c..7559855aa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java @@ -15,15 +15,16 @@ import com.ljsd.jieling.logic.dao.VipInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; -import com.ljsd.jieling.logic.store.GiftGoodsType; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SGlobalActivity; +import config.SSpecialConfig; +import config.STreasureSunlongConfig; import rpc.protocols.CommonProto; import rpc.protocols.MessageTypeProto; import rpc.protocols.PlayerInfoProto; -import com.ljsd.jieling.util.ItemUtil; -import com.ljsd.jieling.util.MessageUtil; -import config.*; import java.util.*; @@ -66,8 +67,6 @@ public class TreasureActivity extends AbstractActivity { PlayerInfoProto.TreasureLevelUpIndication indication = PlayerInfoProto.TreasureLevelUpIndication.newBuilder().setLevel(user.getPlayerInfoManager().getTreasureLevel()) .setHadBuy(user.getPlayerInfoManager().getHadBuyTreasure()).build(); MessageUtil.sendIndicationMessage(OnlineUserManager.getSessionByUid(user.getId()),1,MessageTypeProto.MessageType.TREASURE_LEVELUP_INDICATION_VALUE,indication,true); - - } @Override @@ -113,115 +112,35 @@ public class TreasureActivity extends AbstractActivity { int[][] rewards = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.SUNLONG_REWARD); dropList.add(rewards); notifyClient(session,user); - } else if (missionId == -1) { + } + else if (missionId == -1) { getAllTreasureRewards(user, activityMission, destState, dropList); - } else { + } + else { int state = activityMission.getActivityMissionMap().get(missionId).getState(); if (state == destState || state == ActivityType.FINISH_TAKED) { throw new ErrorCodeException(ErrorCode.newDefineCode("奖励不可重复领取")); } - dropByState(dropList, state, destState, missionId); + dropByState(user, dropList, state, destState, missionId); ActivityProgressInfo progressInfo = new ActivityProgressInfo(); progressInfo.setState(destState); progressInfo.setProgrss(0); activityMission.getActivityMissionMap().put(missionId, progressInfo); -// missionIds.add(missionId); } -// sendActivityProgress(session,activityMission,missionIds); - - - -// if (missionId == -1) { -// List dropList = new ArrayList<>(10); -// boolean canTakeFinalReward = true; -// STreasureConfig finalSTreasureConfig = null; -// Map willUpdateAcP = new HashMap<>(); -// for (Map.Entry activityProgressInfoItem : activityMission.getActivityProgressInfoMap().entrySet()) { -// Integer mineMision = activityProgressInfoItem.getKey(); -// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision); -// if (sTreasureConfig.getType() == 2) { -// finalSTreasureConfig = sTreasureConfig; -// continue; -// } -// ActivityProgressInfo value = activityProgressInfoItem.getValue(); -// int stateTmp = value.getState(); -// if (treasureScore >= sTreasureConfig.getPoints()) { -// if (changeState != stateTmp) { -// STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision); -// if (stateTmp == ActivityType.WILL_TAKE) { -// dropList.add(sTreasureConfigTmp.getReward()); -// } -// if (changeState == ActivityType.FINISH_TAKED) { -// dropList.add(sTreasureConfigTmp.getTreasureReward()); -// } -// willUpdateAcP.put(mineMision, value); -// } -// } else { -// canTakeFinalReward = false; -// } -// } -// for (Map.Entry item : willUpdateAcP.entrySet()) { -// ActivityProgressInfo value = item.getValue(); -// value.setState(changeState); -// activityMission.updateProgressInfo(item.getKey(), value); -// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, item.getKey()); -// } -// if (canTakeFinalReward && finalSTreasureConfig != null) { -// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId()); -// int stateTmp = activityProgressInfo.getState(); -// if (changeState != stateTmp) { -// if (stateTmp == ActivityType.WILL_TAKE) { -// dropList.add(finalSTreasureConfig.getReward()); -// } -// if (changeState == ActivityType.FINISH_TAKED) { -// dropList.add(finalSTreasureConfig.getTreasureReward()); -// } -// activityProgressInfo.setState(changeState); -// activityMission.updateProgressInfo(finalSTreasureConfig.getId(), activityProgressInfo); -// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, finalSTreasureConfig.getId()); -// } -// } -// if (dropList.isEmpty()) { -// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "no one can take"); -// return; -// } -// drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); -// } else { -// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId); -// int type = sTreasureConfig.getType(); -// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); -// int state = activityProgressInfo.getState(); -// if (state == changeState) { -// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); -// return; -// } -// if (type == 1) { -// List dropList = new ArrayList<>(2); -// if (treasureScore < sTreasureConfig.getPoints()) { -// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish"); -// return; -// } -// if (state == ActivityType.WILL_TAKE) { -// dropList.add(sTreasureConfig.getReward()); -// } -// if (changeState == ActivityType.FINISH_TAKED) { -// dropList.add(sTreasureConfig.getTreasureReward()); -// } -// activityProgressInfo.setState(changeState); -// activityMission.updateProgressInfo(missionId, activityProgressInfo); -// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, missionId); -// } -// } reportTakeActivityReward(user,dropList.get(0),missionId); CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); } - private void dropByState(List dropList,int curState,int targetState,int missionId){ + + private void dropByState(User user, List dropList, int curState, int targetState, int missionId){ STreasureSunlongConfig rewardConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(id).get(missionId); - if(curState==ActivityType.WILL_TAKE){ - if(rewardConfig.getReward()!=null&&rewardConfig.getReward().length>0){ + if (user.getPlayerInfoManager().getTreasureLevel() < rewardConfig.getLevel()){ + return; + } + if(curState == ActivityType.WILL_TAKE){ + if(rewardConfig.getReward()!=null && rewardConfig.getReward().length>0){ dropList.add(rewardConfig.getReward()); } if(targetState == ActivityType.FINISH_TAKED){ @@ -244,25 +163,26 @@ public class TreasureActivity extends AbstractActivity { } return changeState; } + private void getAllTreasureRewards(User user, ActivityMission activityMission, int destState, List dropList){ - for(int i = 1 ; i<=user.getPlayerInfoManager().getTreasureLevel();i++){ - Map progressInfoMap = activityMission.getActivityMissionMap(); + for(int i = 1 ; i <= user.getPlayerInfoManager().getTreasureLevel();i++){ + Map progressInfoMap = activityMission.getActivityMissionMap(); if(progressInfoMap.get(i)==null){ LOGGER.info("问题id:{}",i); continue; } - int state =progressInfoMap.get(i).getState(); + int state = progressInfoMap.get(i).getState(); if(state == destState || state == ActivityType.FINISH_TAKED) { continue; } - dropByState(dropList,state,destState,i); + dropByState(user, dropList, state, destState, i); ActivityProgressInfo progressInfo = new ActivityProgressInfo(); progressInfo.setProgrss(0); progressInfo.setState(destState); activityMission.getActivityMissionMap().put(i, progressInfo); - } } + @Override public void getAllMissRewards(User user, ISession session, List itemAttrs){ getAllTreasureRewards(user, user.getActivityManager().getActivityMissionMap().get(id), getDestState(user), itemAttrs);