diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RebuildConfirmHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RebuildConfirmHandler.java new file mode 100644 index 000000000..2e1bbe0b5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RebuildConfirmHandler.java @@ -0,0 +1,26 @@ +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 RebuildConfirmHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.WORKSHOP_REBUILD_CONFIRM_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] bytes = netData.parseClientProtoNetData(); + PlayerInfoProto.WorkShopRebuildConfirmRequest workShopRebuildConfirmRequest = PlayerInfoProto.WorkShopRebuildConfirmRequest.parseFrom(bytes); + int state = workShopRebuildConfirmRequest.getState(); + WorkShopLogic.getInstance().confirmRebuild(iSession,state); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java index 44d03b46b..b36999c0f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java @@ -12,7 +12,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class Equip extends MongoBase { +public class Equip extends MongoBase implements Cloneable{ private String id; @@ -267,4 +267,8 @@ public class Equip extends MongoBase { return secondValueByIdMap; } + @Override + public Object clone() throws CloneNotSupportedException { + return (Equip) super.clone(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java index f33c786b3..d0c695319 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java @@ -11,6 +11,8 @@ public class EquipManager extends MongoBase { private Map equipMap; + private Equip unDetermined; + public EquipManager() { this.setRootCollection(User._COLLECTION_NAME); @@ -34,4 +36,12 @@ public class EquipManager extends MongoBase { return equipMap; } + public Equip getUnDetermined() { + return unDetermined; + } + + public void setUnDetermined(Equip unDetermined) { + updateString("unDetermined", unDetermined); + this.unDetermined = unDetermined; + } } 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 d6adb1e7b..57812853d 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 @@ -205,9 +205,13 @@ public class WorkShopLogic { List workShopUnLockInfoList = new ArrayList<>(2); workShopUnLockInfoList.add(CommonProto.WorkShopUnLockInfo.newBuilder().setType(GlobalsDef.WORK_BASE_TYPE).addAllId(workShopList == null ?new ArrayList<>(1):workShopList).build()); workShopUnLockInfoList.add(CommonProto.WorkShopUnLockInfo.newBuilder().setType(GlobalsDef.WORK_CREATE_TYPE).addAllId(cookShopList==null?new ArrayList<>(1):cookShopList).build()); - - PlayerInfoProto.GetWorkShopInfoResponse build = PlayerInfoProto.GetWorkShopInfoResponse.newBuilder().addAllWorkShopBaseInfo(workShopBaseInfoList).addAllWorkShopUnLockInfo(workShopUnLockInfoList).build(); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_WORKSHOP_INFO_RESPONSE_VALUE,build,true); + Equip unDetermined = user.getEquipManager().getUnDetermined(); + PlayerInfoProto.GetWorkShopInfoResponse.Builder builder = PlayerInfoProto.GetWorkShopInfoResponse.newBuilder().addAllWorkShopBaseInfo(workShopBaseInfoList).addAllWorkShopUnLockInfo(workShopUnLockInfoList); + if(unDetermined !=null){ + CommonProto.Equip equipProto = CBean2Proto.getEquipProto(unDetermined); + builder.setUnDetermined(equipProto); + } + MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_WORKSHOP_INFO_RESPONSE_VALUE,builder.build(),true); } @@ -324,12 +328,27 @@ public class WorkShopLogic { SWorkShopRebuildConfig sWorkShopRebuildConfig = SWorkShopRebuildConfig.getsWorkShopRebuildConfigByQulity(sEquipConfig.getQuality()); int addExp = sWorkShopRebuildConfig.getExp(); user.getWorkShopController().addWorkShopExp(addExp); - equip.rebuildEquip(user.getWorkShopController().getWorkShopLevel()); - equipManager.addEquip(equip); - PlayerInfoProto.WorkShopRebuildRespoonse build = PlayerInfoProto.WorkShopRebuildRespoonse.newBuilder().setEquip(CBean2Proto.getEquipProto(equip)).build(); + Equip clone = (Equip)equip.clone(); + clone.rebuildEquip(user.getWorkShopController().getWorkShopLevel()); + equipManager.setUnDetermined(clone); + PlayerInfoProto.WorkShopRebuildRespoonse build = PlayerInfoProto.WorkShopRebuildRespoonse.newBuilder().setEquip(CBean2Proto.getEquipProto(clone)).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.WORKSHOP_REBUILD_RESPONSE_VALUE,build,true); + } - + public void confirmRebuild(ISession session,int state) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + EquipManager equipManager = user.getEquipManager(); + Equip unDetermined = equipManager.getUnDetermined(); + if(unDetermined == null){ + MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_REBUILD_CONFIRM_RESONSE_VALUE,""); + return; + } + if(state == 1){ + equipManager.addEquip(unDetermined); + } + equipManager.setUnDetermined(null); + MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.WORKSHOP_REBUILD_CONFIRM_RESONSE_VALUE,null,true); } private String checkForRebuildEquip( User user,List consumeEquipIds,SEquipConfig sEquipConfig,String excludeEquipId) throws Exception {