Task【ID1006177】【新战斗版本】宝物合成

back_recharge
zhangshanxue 2020-05-11 19:31:26 +08:00
parent f75b7ad1cc
commit 77a50f4e5e
2 changed files with 28 additions and 17 deletions

View File

@ -11,6 +11,8 @@ import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.item.ItemLogic; import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.HeroInfoProto; import com.ljsd.jieling.protocols.HeroInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.MessageTypeProto;
@ -27,16 +29,16 @@ import java.util.*;
* Author: zsx * Author: zsx
* CreateDate: 2020/5/8 11:51 * CreateDate: 2020/5/8 11:51
*/ */
public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJewelEquipRequest> { public class ComplexJewelEquipRequestHandler extends BaseHandler<HeroInfoProto.ComplexJewelEquipRequest> {
@Override @Override
public MessageTypeProto.MessageType getMessageCode() { public MessageTypeProto.MessageType getMessageCode() {
return null; return null;
} }
@Override @Override
public GeneratedMessage processWithProto(int uid, HeroInfoProto.ComplexJewelEquipRequest proto) throws Exception { public void processWithProto(ISession iSession, HeroInfoProto.ComplexJewelEquipRequest proto) throws Exception {
User user = UserManager.getUser(uid); User user = UserManager.getUser(iSession.getUid());
if (user == null) { if (user == null) {
throw new ErrorCodeException(ErrorCode.UNKNOWN); throw new ErrorCodeException(ErrorCode.UNKNOWN);
} }
@ -72,7 +74,8 @@ public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJ
} }
Set<String> equipByIDs = ItemLogic.getJewelEquip(user, sEquipStarsConfig.getLocation(),sEquipStarsConfig.getRace()); // Set<String> equipByIDs = ItemLogic.getJewelEquip(user, sEquipStarsConfig.getLocation(),sEquipStarsConfig.getRace());
TreeSet<String> equipByIDs = ItemLogic.getJewelEquipWithLeve(user, sEquipStarsConfig.getLocation(),sEquipStarsConfig.getRace(),needLeve);
int needcount = sEquipStarsConfig.getRankupCount(); int needcount = sEquipStarsConfig.getRankupCount();
if (equipByIDs.size() / needcount < proto.getNum()) { if (equipByIDs.size() / needcount < proto.getNum()) {
@ -97,7 +100,7 @@ public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJ
dropItems[0][0] = sTargetEquipStarsConfig.getId(); dropItems[0][0] = sTargetEquipStarsConfig.getId();
dropItems[0][1] = proto.getNum(); dropItems[0][1] = proto.getNum();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.COMPLEX_EQUIP); CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.COMPLEX_EQUIP);
HeroInfoProto.ComplexEquipResponse.Builder response = HeroInfoProto.ComplexEquipResponse.newBuilder(); HeroInfoProto.ComplexJewelEquipResponse.Builder response = HeroInfoProto.ComplexJewelEquipResponse.newBuilder();
//remove old 宝器 //remove old 宝器
int i = 1; int i = 1;
@ -110,34 +113,31 @@ public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJ
i++; i++;
} }
response.setDrop(drop); response.setDrop(drop);
MessageUtil.sendIndicationMessage(uid, response.build()); MessageUtil.sendIndicationMessage(user.getId(), response.build());
} else { } else {
Map<Integer, Map<Integer, Integer>> race2quality2soulid = STableManager.getFigureConfig(ItemStaticConfig.class).getRace2quality2soulid(); Map<Integer, Map<Integer, Integer>> race2quality2soulid = STableManager.getFigureConfig(ItemStaticConfig.class).getRace2quality2soulid();
Map<Integer, Map<Integer, Integer>> race2quality2id = STableManager.getFigureConfig(ItemStaticConfig.class).getRace2quality2id(); Map<Integer, Map<Integer, Integer>> race2quality2id = STableManager.getFigureConfig(ItemStaticConfig.class).getRace2quality2id();
Map<Integer, Integer> soulInnerMap = new TreeMap<>(race2quality2soulid.getOrDefault(1, new HashMap<>())); Map<Integer, Integer> soulInnerMap = new TreeMap<>(race2quality2soulid.getOrDefault(proto.getRance(), new HashMap<>()));
Map<Integer, Integer> innerMap = new TreeMap<>(race2quality2id.getOrDefault(2, new HashMap<>())); Map<Integer, Integer> innerMap = new TreeMap<>(race2quality2id.getOrDefault(proto.getRance(), new HashMap<>()));
Set<String> equipadds =new HashSet<>(); Set<String> equipadds =new HashSet<>();
List< CommonProto.Equip> equips = new LinkedList<>(); List< CommonProto.Equip> equips = new LinkedList<>();
combineEquip(user,soulInnerMap,equips,equipadds); combineEquip(user,soulInnerMap,equips,equipadds);
combineEquip(user,innerMap,equips,equipadds); combineEquip(user,innerMap,equips,equipadds);
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder().addAllEquipId(equips); CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder().addAllSoulEquip(equips);
HeroInfoProto.ComplexEquipResponse.Builder response = HeroInfoProto.ComplexEquipResponse.newBuilder(); HeroInfoProto.ComplexJewelEquipResponse.Builder response = HeroInfoProto.ComplexJewelEquipResponse.newBuilder();
response.addAllEquipIds(equipadds); response.addAllEquipIds(equipadds);
response.setDrop(drop); response.setDrop(drop);
System.out.print(response.build().toString()); MessageUtil.sendIndicationMessage(user.getId(), response.build());
MessageUtil.sendIndicationMessage(uid, response.build());
} }
return HeroInfoProto.ComplexEquipResponse.newBuilder().build();
} }
private void combineEquip(User user, Map<Integer, Integer> integerIntegerMap ,List<CommonProto.Equip> equips,Set<String> equipadds) throws Exception { private void combineEquip(User user, Map<Integer, Integer> integerIntegerMap ,List<CommonProto.Equip> equips,Set<String> equipadds) throws Exception {
Map<Integer, Integer> consumeMap = new HashMap<>(); Map<Integer, Integer> consumeMap = new HashMap<>();
@ -151,7 +151,7 @@ public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJ
break; break;
} }
SJewelConfig sTargetEquipStarsConfig = STableManager.getConfig(SJewelConfig.class).get(targetstar); SJewelConfig sTargetEquipStarsConfig = STableManager.getConfig(SJewelConfig.class).get(integerIntegerMap.get(targetstar));
if (null == sTargetEquipStarsConfig) { if (null == sTargetEquipStarsConfig) {
break; break;
} }
@ -160,7 +160,7 @@ public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJ
throw new ErrorCodeException(ErrorCode.CFG_NULL); throw new ErrorCodeException(ErrorCode.CFG_NULL);
} }
TreeSet<String> equipByIDs = ItemLogic.getJewelEquip(user, sEquipStarsConfig.getLocation(),sEquipStarsConfig.getRace()); TreeSet<String> equipByIDs = ItemLogic.getJewelEquipWithLeve(user, sEquipStarsConfig.getLocation(),sEquipStarsConfig.getRace(),entry.getKey());
int canConNum =equipByIDs.size()/sEquipStarsConfig.getRankupCount(); int canConNum =equipByIDs.size()/sEquipStarsConfig.getRankupCount();
if(canConNum<=0){ if(canConNum<=0){
continue; continue;
@ -204,7 +204,6 @@ public class ComplexJewelEquipHandler extends BaseHandler<HeroInfoProto.ComplexJ
for (String id:newids) { for (String id:newids) {
equips.add(CBean2Proto.getEquipProto( user.getEquipManager().getEquipMap().get(id))); equips.add(CBean2Proto.getEquipProto( user.getEquipManager().getEquipMap().get(id)));
} }
ItemUtil.itemCost(user, consumeMap, BIReason.COMPLEX_EQUIP_CONSUME, 0); ItemUtil.itemCost(user, consumeMap, BIReason.COMPLEX_EQUIP_CONSUME, 0);
} }

View File

@ -516,6 +516,18 @@ public class ItemLogic {
}).map(Map.Entry::getKey).collect(Collectors.toCollection(TreeSet::new)); }).map(Map.Entry::getKey).collect(Collectors.toCollection(TreeSet::new));
} }
public static TreeSet<String> getJewelEquipWithLeve(User user, int type, int rance,int leve) {
return user.getEquipManager().getEquipMap().entrySet().stream().filter(stringEquipEntry ->
StringUtil.isEmpty(stringEquipEntry.getValue().getHeroId())
).filter(stringPropertyItemEntry -> stringPropertyItemEntry.getValue() instanceof Jewel).filter(stringPropertyItemEntry -> {
SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(stringPropertyItemEntry.getValue().getEquipId());
if (config == null) {
return false;
}
return config.getLocation() == type && config.getRace() == rance&&config.getLevel()==leve;
}).map(Map.Entry::getKey).collect(Collectors.toCollection(TreeSet::new));
}
/** /**
* *
* @param iSession * @param iSession