diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopTechnology.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopTechnology.java new file mode 100644 index 000000000..afef8e495 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopTechnology.java @@ -0,0 +1,69 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name ="WorkShopTechnology") +public class SWorkShopTechnology implements BaseConfig { + + private int id; + + private int techId; + + private int level; + + private int[][] values; + + private int rankNum; + + private int profession; + + private int[][] limits; + + private int[][] consume; + + public static Map config; + + + @Override + public void init() throws Exception { + config = STableManager.getConfig(SWorkShopTechnology.class); + } + + + public int getId() { + return id; + } + + public int getTechId() { + return techId; + } + + public int getLevel() { + return level; + } + + public int[][] getValues() { + return values; + } + + public int getRankNum() { + return rankNum; + } + + public int getProfession() { + return profession; + } + + public int[][] getLimits() { + return limits; + } + + public int[][] getConsume() { + return consume; + } + + +} \ No newline at end of file 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 dd1af7591..d0fb1e4d5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -59,6 +59,7 @@ public interface BIReason { int WORKSHOP_REBUILD_EQUIP_CONSUME = 1004; int WORKSHOP_CREATEMATERIAL_CONSUME = 1005; int WORKSHOP_EQUIP_CONSUME = 1005; + int WORKSHOP_TECHNOLOGY_CONSUME = 1005; int ACTIVE_BLUE_CONSUME = 1006; int STORE_HAND_REFRESH = 1007;//手动刷新商店 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java index 52edfa482..d6684778f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java @@ -17,6 +17,7 @@ public interface GlobalItemType { int RUNNE = 6; //符文 int BLUE_IMAGE=7; // 蓝图 int MINERAL=8; // 矿石 + int RINGTYPE=9; // 矿石 //物品使用类型 int NO_USE = 0 ; //不使用 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/WorkShopTechnologyLevelHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/WorkShopTechnologyLevelHandler.java new file mode 100644 index 000000000..8e79cd37b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/WorkShopTechnologyLevelHandler.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.handler.workshop; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.item.WorkShopLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class WorkShopTechnologyLevelHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.WORKSHOP_TECHNOLOGY_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + PlayerInfoProto.WorkTechnologyLevelRequest workTechnologyLevelRequest = PlayerInfoProto.WorkTechnologyLevelRequest.parseFrom(netData.parseClientProtoNetData()); + WorkShopLogic.getInstance().workShopTechnogyLevel(iSession,workTechnologyLevelRequest.getId()); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorkShopController.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorkShopController.java index 3b30ed054..dd8f25a38 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorkShopController.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorkShopController.java @@ -8,13 +8,11 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.util.MathUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class WorkShopController extends MongoBase { private Map> openBlueStateMap; + private Set technologyIds = new HashSet<>(); private int workShopLevel; private int workShopExp; @@ -134,4 +132,7 @@ public class WorkShopController extends MongoBase { return cookExp; } + public Set getTechnologyIds() { + return technologyIds; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java index e8b069f66..b1d3c18e0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java @@ -28,6 +28,35 @@ public class WorkShopLogic { private WorkShopLogic(){} + public void workShopTechnogyLevel(ISession iSession, int id) throws Exception { + int uid = iSession.getUid(); + User user = UserManager.getUser(uid); + Set technologyIds = user.getWorkShopController().getTechnologyIds(); + SWorkShopTechnology sWorkShopTechnology = SWorkShopTechnology.config.get(id); + int msgId = MessageTypeProto.MessageType.WORKSHOP_TECHNOLOGY_RESPONSE_VALUE; + if(sWorkShopTechnology.getLevel() != 0){ + boolean contains = technologyIds.contains(id); + if(!contains){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"parm is wrong"); + return; + } + } + sWorkShopTechnology = SWorkShopTechnology.config.get(id + 1); + if(sWorkShopTechnology == null){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"parm is wrong"); + return; + } + int[][] consume = sWorkShopTechnology.getConsume(); + boolean enough = ItemUtil.itemCost(user, consume, BIReason.WORKSHOP_TECHNOLOGY_CONSUME, id + 1); + if(!enough){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"道具不足"); + return; + } + MessageUtil.sendMessage(iSession,1, msgId,null,true); + + + } + public static class Instance { public final static WorkShopLogic instance = new WorkShopLogic(); } @@ -218,6 +247,7 @@ public class WorkShopLogic { CommonProto.Equip equipProto = CBean2Proto.getEquipProto(unDetermined); builder.setUnDetermined(equipProto); } + builder.addAllTechnologyId(workShopController.getTechnologyIds()); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_WORKSHOP_INFO_RESPONSE_VALUE,builder.build(),true); } 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 9c5454d61..c27654788 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -330,6 +330,7 @@ public class ItemUtil { case GlobalItemType.RUNNE: case GlobalItemType.CARD_FRAGMENT: case GlobalItemType.BLUE_IMAGE: + case GlobalItemType.RINGTYPE: case GlobalItemType.MINERAL: itemType = GlobalItemType.ITEM; break;