back_recharge
gaojie 2019-04-24 14:18:29 +08:00
parent a4815854e0
commit 888761b2f0
1 changed files with 59 additions and 32 deletions

View File

@ -41,25 +41,21 @@ public class ItemLogic {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
int msgId = MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE;
String erroMags = checkItemResolve(itemList);
if (!erroMags.isEmpty()){
MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags);
}
StringBuilder cost = new StringBuilder();
StringBuilder reward = new StringBuilder();
for (CommonProto.Item item :itemList){
if (cost.length() == 0){
cost = new StringBuilder(item.getItemId() + "#" + item.getItemNum());
SItem sItem = SItem.getsItemMap().get(item.getItemId());
if (sItem.getIfResolve() ==0){
MessageUtil.sendErrorResponse(iSession,0,msgId,"物品中有不可分解道具");
return;
}
reward = new StringBuilder(sItem.getResolveReward());
reward = getStringBuilder(reward, item.getItemNum(), sItem);
}else{
cost.append("|").append(item.getItemId()).append("#").append(item.getItemNum());
SItem sItem = SItem.getsItemMap().get(item.getItemId());
if (sItem.getIfResolve() ==0){
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
return;
}
reward.append("#").append(sItem.getResolveReward());
reward = getStringBuilder(reward, item.getItemNum(), sItem);
}
}
int[][] costItemArr = StringUtil.parseFiledInt2(cost.toString());
@ -72,6 +68,27 @@ public class ItemLogic {
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
private StringBuilder getStringBuilder(StringBuilder reward, int itemNum, SItem sItem) {
for (int i =0; i < itemNum; i++){
if (reward.length() == 0){
reward = new StringBuilder(sItem.getResolveReward());
}else{
reward.append("#").append(sItem.getResolveReward());
}
}
return reward;
}
private String checkItemResolve(List<CommonProto.Item> itemList) {
for (CommonProto.Item item :itemList){
SItem sItem = SItem.getsItemMap().get(item.getItemId());
if (sItem.getIfResolve() ==0){
return "物品中有不可分解道具";
}
}
return "";
}
private void sendUseAndPriceItemMessage(ISession iSession, int msgId, CommonProto.Drop.Builder drop) {
PlayerInfoProto.UseAndPriceItemResponse useAndPriceItemResponse = PlayerInfoProto.UseAndPriceItemResponse.newBuilder()
.setDrop(drop)
@ -113,22 +130,13 @@ public class ItemLogic {
User user = UserManager.getUser(uid);
EquipManager equipManager = user.getEquipManager();
StringBuilder reward = new StringBuilder();
if (equipIdsList.size() != 0){
String erroMags = checkEquipResolve(equipIdsList,equipManager);
if (!erroMags.isEmpty()){
MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags);
}
for (String equipId : equipIdsList) {
Equip equip = equipManager.getEquipMap().get(equipId);
if (equip == null){
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
return;
}
if (!StringUtil.isEmpty(equip.getHeroId())){
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
return;
}
SItem sItem = SItem.getsItemMap().get(equip.getEquipId());
if (sItem.getIfResolve() ==0){
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
return;
}
equipManager.remove(equipId);
if (reward.length() == 0) {
reward = new StringBuilder(sItem.getResolveReward());
@ -136,8 +144,27 @@ public class ItemLogic {
reward.append("#").append(sItem.getResolveReward());
}
}
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user,StringUtil.parseFiledInt(reward.toString()),1,0);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
private String checkEquipResolve(List<String> equipIdsList,EquipManager equipManager) {
if (equipIdsList.size() != 0){
return "无可分解装备";
}
for (String equipId :equipIdsList){
Equip equip = equipManager.getEquipMap().get(equipId);
if (equip == null){
return "无该装备";
}
if (!StringUtil.isEmpty(equip.getHeroId())){
return "已穿戴";
}
SItem sItem = SItem.getsItemMap().get(equip.getEquipId());
if (sItem.getIfResolve() ==0){
return "不可分解";
}
}
return "";
}
}