From ae79e8d410521279e0d38af13ca82ab98fe55999 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 21 Jan 2021 11:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AD=E8=BD=AC=E4=B9=BE=E5=9D=A4=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 3 ++ .../activity/GoodLuckRandomHandler.java | 26 ++++++++++ .../jieling/logic/activity/ActivityLogic.java | 26 ++++++++++ .../jieling/logic/activity/ActivityType.java | 2 + .../logic/activity/ActivityTypeEnum.java | 2 + .../src/main/java/config/SGoodLuck.java | 51 +++++++++++++++++++ 6 files changed, 110 insertions(+) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GoodLuckRandomHandler.java create mode 100644 tablemanager/src/main/java/config/SGoodLuck.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 7761dfee0..26d604e84 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -166,6 +166,8 @@ public interface BIReason { int WORLD_CHANGE_DROP =94;//跨服天梯 int WORLD_PRO_DROP =95;//跨服天梯膜拜 + int GOOD_LUCK_DROP = 96;//扭转乾坤获得 + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 int DECOMPOSE_ITEM_CONSUME = 1002;//分解道具消耗 @@ -308,6 +310,7 @@ public interface BIReason { int WORLD_ARENA = 1077;//跨服竞技场 int SHEJI_ACTIVITY_INIT_CONSUME = 1078;//社稷大典开始清除往期道具 + int GOOD_LUCK_CONSUME = 1079;//扭转乾坤消耗 int USE_HEADFRAME = 1088;// 使用头像框 } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GoodLuckRandomHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GoodLuckRandomHandler.java new file mode 100644 index 000000000..44c290f93 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GoodLuckRandomHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.network.session.ISession; +import org.springframework.stereotype.Component; +import rpc.protocols.ActivityProto; +import rpc.protocols.MessageTypeProto; + +/** + * @author lvxinran + * @date 2021/1/21 + * @discribe + */ +@Component +public class GoodLuckRandomHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GOOD_LUCK_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, ActivityProto.GoodLuckRequest proto) throws Exception { + ActivityLogic.getInstance().goodLuckRandom(iSession,proto.getActivityId(), MessageTypeProto.MessageType.GOOD_LUCK_RESPONSE); + } +} 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 c6fdc37e8..ae467cbbd 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 @@ -33,6 +33,7 @@ import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.core.ZSetOperations; +import rpc.protocols.ActivityProto; import rpc.protocols.CommonProto; import rpc.protocols.MessageTypeProto; import rpc.protocols.PlayerInfoProto; @@ -1400,4 +1401,29 @@ public class ActivityLogic implements IEventHandler{ MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.SPECICAL_MONSTER_CHOOSE_RESPONSE_VALUE,null,true); } + + //扭转乾坤 + public void goodLuckRandom(ISession session, int activityId, MessageTypeProto.MessageType messageType) throws Exception { + + SGoodLuck sGoodLuck = SGoodLuck.goodLuckMap.get(activityId); + if(sGoodLuck==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + User user = UserManager.getUser(session.getUid()); + + if(!user.getActivityManager().getActivityMissionMap().containsKey(activityId)){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + int[][] cost = sGoodLuck.getCost(); + boolean itemCost = ItemUtil.itemCost(user, cost, BIReason.GOOD_LUCK_CONSUME, 1); + if(!itemCost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + int[][] reward = sGoodLuck.getReward(); + int random = MathUtils.random(1, reward.length); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{reward[random - 1]}, BIReason.GOOD_LUCK_DROP); + ActivityProto.GoodLuckResponse.Builder response = ActivityProto.GoodLuckResponse.newBuilder().setIndex(random).setDrop(drop); + + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } } 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 fa7527c4c..7a688afbc 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 @@ -78,6 +78,8 @@ public interface ActivityType { int ITEMS_STORE= 6000;//百宝商会 int TRIAL_EXPERT = 70;//幻境达人 int SHEJI_ACTIVITY = 60;//社稷大典 + int GOOD_LUCK= 61;//扭转乾坤 + int SUB_ACTIVITY = 8000;//易经宝库 int SKIN_RECHARGE_ACTIVITY = 71; int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽限时抽卡 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 076d06174..a10ca1a31 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 @@ -65,6 +65,8 @@ public enum ActivityTypeEnum { SPECIAL_MONSTER_GIFT_ACTIVITY(ActivityType.SPECIAL_MONSTER_GIFT_ACTIVITY,DefaultEmptyActivity::new), DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new), NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new), + GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new), + ; private int type; private Function toActivityFunction; diff --git a/tablemanager/src/main/java/config/SGoodLuck.java b/tablemanager/src/main/java/config/SGoodLuck.java new file mode 100644 index 000000000..77518069b --- /dev/null +++ b/tablemanager/src/main/java/config/SGoodLuck.java @@ -0,0 +1,51 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name ="GoodLuck") +public class SGoodLuck implements BaseConfig { + + private int id; + + private int activityId; + + private int[][] cost; + + private int[][] reward; + + public static Map goodLuckMap; + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SGoodLuck.class); + Map goodLuckMapTemp = new HashMap<>(config.size()); + for(Map.Entry entry:config.entrySet()){ + goodLuckMapTemp.put(entry.getValue().getActivityId(),entry.getValue()); + } + goodLuckMap = goodLuckMapTemp; + + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int[][] getCost() { + return cost; + } + + public int[][] getReward() { + return reward; + } + + +} \ No newline at end of file