商店刷新,分解卡牌

back_recharge
gaojie 2019-05-16 20:21:06 +08:00
parent 544ba36938
commit 0119d33b6b
4 changed files with 80 additions and 13 deletions

View File

@ -29,13 +29,15 @@ public class UseAndPriceItemHandler extends BaseHandler {
int type = useAndPriceItemRequest.getType();
List<CommonProto.Item> itemList = useAndPriceItemRequest.getItemsList();
List<String> equipIdsList = useAndPriceItemRequest.getEquipIdsList();
List<String> heroIdsList = useAndPriceItemRequest.getHeroIdsList();
if (type == 0){ //使用
ItemLogic.getInstance().useItem(iSession,itemList);
}else if (type == 2){ //分解装备
ItemLogic.getInstance().decomposeEquip(iSession,equipIdsList);
}else{// 分解道具
}else if (type ==1){// 分解道具
ItemLogic.getInstance().priceItem(iSession,itemList);
} else if (type == 2){ //分解装备
ItemLogic.getInstance().decomposeEquip(iSession,equipIdsList);
}else{
ItemLogic.getInstance().decomposeHero(iSession,heroIdsList);
}
}

View File

@ -1273,5 +1273,15 @@ public class HeroLogic {
sArenaRobotConfig.setTotalForce(calRobotTotalForce(sArenaRobotConfig));
}
}
//妖灵师是否在阵容中
public boolean isBattleArray (User user,String heroId){
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = user.getTeamPosManager().getTeamPosForHero();
for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry: teamPosForHero.entrySet() ){
List<TeamPosHeroInfo> values = entry.getValue();
if (values.contains(heroId)){
return true;
}
}
return false;
}
}

View File

@ -1,10 +1,9 @@
package com.ljsd.jieling.logic.item;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.EquipManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -169,4 +168,57 @@ public class ItemLogic {
}
return "";
}
/**
*
* @param iSession
* @param heroIdsList
*/
public void decomposeHero(ISession iSession, List<String> heroIdsList) throws Exception {
int msgId = MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE;
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
HeroManager heroManager = user.getHeroManager();
StringBuilder reward = new StringBuilder();
String erroMags = checkHeroResolve(heroIdsList,user);
if (!erroMags.isEmpty()){
MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags);
return;
}
for (String heroId : heroIdsList) {
Hero hero = heroManager.getHeroMap().get(heroId);
SItem sItem = SItem.getsItemMap().get(hero.getTemplateId());
heroManager.removeHero(heroId);
if (reward.length() == 0) {
reward = new StringBuilder(sItem.getResolveReward());
} else {
reward.append("#").append(sItem.getResolveReward());
}
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user,StringUtil.parseFiledInt(reward.toString()),1,0);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
private String checkHeroResolve(List<String> heroIdsList,User user) {
HeroManager heroManager = user.getHeroManager();
if (heroIdsList.size() == 0){
return "无可分解妖灵师";
}
for (String heroId :heroIdsList){
Hero hero = heroManager.getHeroMap().get(heroId);
if (hero == null){
return "无该妖灵师";
}
boolean battleArray = HeroLogic.getInstance().isBattleArray(user, heroId);
if (battleArray){
return "妖灵师在阵容中";
}
SItem sItem = SItem.getsItemMap().get(hero.getTemplateId());
if (sItem.getIfResolve() ==0){
return "不可分解";
}
}
return "";
}
}

View File

@ -249,6 +249,7 @@ public class StoreLogic {
StoreInfo storeInfo = storeInfoMap.get(storeId);
SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId);
int type = sStoreTypeConfig.getRefreshType()[0];
int time = sStoreTypeConfig.getRefreshType()[1];
if (type == 1){
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
LOGGER.info("automaticRefreStore==>uid={},storeid={},type={}",uid,storeId,type);
@ -258,14 +259,18 @@ public class StoreLogic {
long nowTime = System.currentTimeMillis();
switch (type){
case 2:
boolean overTime = TimeUtils.isOverTime(5, storeInfo.getLastRefreshTime());
boolean overTime = TimeUtils.isOverTime(time, storeInfo.getLastRefreshTime());
if (overTime){
itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
storeInfo.setLastRefreshTime(nowTime);
}
break;
case 3:
if ((nowTime - storeInfo.getEndTime()) > Integer.parseInt(sStoreTypeConfig.getEndTime()) *60 *1000){
itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
long lastRefreshTime = storeInfo.getLastRefreshTime();
int intervalTime = time*1000*60*60;
if (((nowTime - lastRefreshTime) /1000/60/60) >= time){
lastRefreshTime = lastRefreshTime + ((nowTime -lastRefreshTime)/(intervalTime)) *(intervalTime);
storeInfo.setLastRefreshTime(lastRefreshTime);
}
break;
}
@ -275,8 +280,6 @@ public class StoreLogic {
return;
}
storeInfo.setItemNumMap(itemNumMap);
storeInfo.setLastRefreshTime(nowTime);
storeInfo.setRefreshNum(storeInfo.getRefreshNum() +1);
CommonProto.StoreInfo.Builder storeBuilder = getBuilder(storeInfo);
PlayerInfoProto.StoreGoodsRefreshResponse builder = PlayerInfoProto.StoreGoodsRefreshResponse.newBuilder().setStoreInfo(storeBuilder).build();
MessageUtil.sendMessage(iSession, 1,msgId, builder, true);