From b797c85de681b245329ba69af948b3a1fa96799b Mon Sep 17 00:00:00 2001 From: lilei Date: Mon, 17 Aug 2020 19:53:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=92=E9=BE=99=E7=A7=98=E5=AE=9D=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=BB=E5=8A=A1=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 3 ++ .../jieling/logic/activity/ActivityLogic.java | 4 +++ .../logic/activity/TreasureActivity.java | 21 +++++++++--- .../logic/championship/ChampionshipLogic.java | 2 ++ .../jieling/logic/dao/CumulationData.java | 11 ++++++ .../ljsd/jieling/logic/mission/GameEvent.java | 2 +- .../jieling/logic/mission/MissionType.java | 4 +-- .../mission/data/DataManagerDistributor.java | 2 +- .../data/PlayMiniGameTimesManager.java | 34 +++++++++++++++++++ .../event/MissionEventDistributor.java | 5 +++ 10 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/PlayMiniGameTimesManager.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index d167866bd..dbe74db9c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -3254,6 +3254,9 @@ public class MapLogic { idList.add(id); } BehaviorUtil.destoryCurPoint(user); + + user.getUserMissionManager().onGameEvent(user, GameEvent.PLAY_MINI_GAME, 0); + MapInfoProto.MapGameResponse response = MapInfoProto.MapGameResponse.newBuilder().setType(mapGameInfo.getType()).addAllParam(idList).build(); MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); } 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 bc70b8e73..56c224457 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 @@ -1260,6 +1260,10 @@ public class ActivityLogic implements IEventHandler{ }else{ throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } + + PlayerInfoProto.TreasureLevelUpIndication indication = PlayerInfoProto.TreasureLevelUpIndication.newBuilder().setLevel(user.getPlayerInfoManager().getTreasureLevel()).build(); + MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.TREASURE_LEVELUP_INDICATION_VALUE,indication,true); + MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } 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 7329a0482..58f90f578 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 @@ -1,17 +1,18 @@ package com.ljsd.jieling.logic.activity; +import com.google.common.collect.Sets; import com.ljsd.jieling.core.VipPrivilegeType; 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.dao.Item; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; 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.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -21,10 +22,7 @@ import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.*; -import javax.lang.model.type.PrimitiveType; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; public class TreasureActivity extends AbstractActivity { @@ -116,6 +114,7 @@ public class TreasureActivity extends AbstractActivity { user.getPlayerInfoManager().updateVipPrivilage(VipPrivilegeType.DRAGON_TREASURE_SUPPLY,1); int[][] rewards = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.SUNLONG_REWARD); dropList.add(rewards); + notifyClient(session,user); } else if (missionId == -1) { getAllTreasureRewards(user, activityMission, changeState, dropList); } else { @@ -263,4 +262,16 @@ public class TreasureActivity extends AbstractActivity { public void getAllMissRewards(User user, ISession session, List itemAttrs){ getAllTreasureRewards(user, user.getActivityManager().getActivityMissionMap().get(id), getChangerState(user), itemAttrs); } + + /** + * 通知客户端每周补给特权变动 + * @param sesson + * @param user + */ + private void notifyClient(ISession sesson, User user) { + PlayerInfoProto.PrivilegeIndication.Builder indication = PlayerInfoProto.PrivilegeIndication.newBuilder(); + Set privilege = PlayerLogic.getInstance().getPrivilege(user, Collections.singletonList(VipPrivilegeType.DRAGON_TREASURE_SUPPLY)); + indication.addAllInfos(privilege); + MessageUtil.sendIndicationMessage(sesson, 1, MessageTypeProto.MessageType.PRIVILLEGE_ADD_INDICATION_VALUE, indication.build(), true); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java index 83a2d95bd..38becbc73 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java @@ -21,6 +21,7 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.*; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; @@ -382,6 +383,7 @@ public class ChampionshipLogic { if (user.getArenaManager().getTopMaxRank() == 0 || user.getArenaManager().getTopMaxRank() > rank) { user.getArenaManager().setTopMaxRank(rank); } + user.getUserMissionManager().onGameEvent(user, GameEvent.CHAMPIONSHIP_RANK, rank); rank++; String title = SErrorCodeEerverConfig.getI18NMessage("champion_reward_title"); String content = SErrorCodeEerverConfig.getI18NMessage("champion_reward_txt", new Object[]{sChampionshipReward.getTitleDesc()}); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index df2d4f4fc..599947f35 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -160,6 +160,9 @@ public class CumulationData { //巅峰联赛名次 private int championshipRank; + //森罗幻境中参与小游戏次数 + private int playMiniGameTimes; + public Result updateData(MissionType missionType, Object...parm) throws Exception { return DataManagerDistributor.updateData(this, missionType,parm); } @@ -354,4 +357,12 @@ public class CumulationData { public void setChampionshipRank(int championshipRank) { this.championshipRank = championshipRank; } + + public int getPlayMiniGameTimes() { + return playMiniGameTimes; + } + + public void setPlayMiniGameTimes(int playMiniGameTimes) { + this.playMiniGameTimes = playMiniGameTimes; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java index 94a633d23..64fc98659 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java @@ -99,6 +99,6 @@ public enum GameEvent { CAR_PLAY_LOOT,//于车迟斗法中抢夺其他玩家积分num次//TODO GOT_SOUL_MARK,//获取魂印事件 - CHAMPIONSHIP_RANK,//巅峰联赛排名 + PLAY_MINI_GAME,//参与森罗幻境小游戏 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java index 072079bb8..d17d6ce59 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java @@ -119,11 +119,11 @@ public enum MissionType { CAR_PLAY_DAYS(110),//累计n天挑战车迟斗法 ARENA_CONSECUTIVE_WIN(111),//竞技场连胜 - //森罗幻境中参与n次小游戏 + PLAY_MINI_GAME_TIMES(112),//森罗幻境中参与n次小游戏 CHAMPIONSHIP_RANK(113),//巅峰联赛中达到num名 //天宫寻宝中接取任意星级任务n次 GOT_SOUL_MARK(115),//获得指定品质魂印数量 - //累计探索森罗幻境n层 + //累计探索森罗幻境num层 //充值达到num金额 ; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index 79b81849e..b715d4dc7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -139,7 +139,7 @@ public class DataManagerDistributor { judges.put(MissionType.ARENA_CONSECUTIVE_WIN, new ArenaConsecutiveWinManager()); judges.put(MissionType.CHAMPIONSHIP_RANK, new ChampionshipRankManager()); - + judges.put(MissionType.PLAY_MINI_GAME_TIMES, new PlayMiniGameTimesManager()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/PlayMiniGameTimesManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/PlayMiniGameTimesManager.java new file mode 100644 index 000000000..2ea0c533e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/PlayMiniGameTimesManager.java @@ -0,0 +1,34 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * @author lilei + * @description 森罗幻境小游戏任务次数处理逻辑 + * @create 2020-08-17 15:17 + */ +public class PlayMiniGameTimesManager extends AbstractDataManager { + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + CumulationData.Result result = null; + if (missionType == MissionType.PLAY_MINI_GAME_TIMES) { + data.setPlayMiniGameTimes(data.getPlayMiniGameTimes() + 1); + result = new CumulationData.Result(missionType); + } + return result; + } + + @Override + public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) { + return data.getPlayMiniGameTimes() >= cfgValue[1][0]; + } + + @Override + public int getProcess(User user, CumulationData data, int[] missionSubType) { + return data.getPlayMiniGameTimes(); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index 66f7ec4bd..06c63c154 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -408,6 +408,11 @@ public class MissionEventDistributor { eventEnumListMap.put(GameEvent.CHAMPIONSHIP_RANK, typeList); eventProcessor.put(GameEvent.CHAMPIONSHIP_RANK, new CumulationDataEventProcessor()); + typeList = new ArrayList<>(); + typeList.add(MissionType.PLAY_MINI_GAME_TIMES); + eventEnumListMap.put(GameEvent.PLAY_MINI_GAME, typeList); + eventProcessor.put(GameEvent.PLAY_MINI_GAME, new CumulationDataEventProcessor()); + } public static final ThreadLocal>> threadMissionChangeList =