临时背包

back_recharge
jiahuiwen 2019-03-13 13:46:33 +08:00
parent c259bb3e57
commit 34495dd9b0
3 changed files with 98 additions and 52 deletions

View File

@ -210,11 +210,6 @@ public class MapLogic {
return;
}
}
if (cells.isEmpty()) {
LOGGER.info("cells.isEmpty()");
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
int uid = session.getUid();
User user = UserManager.getUser(uid);
MapManager mapManager = user.getMapManager();
@ -228,15 +223,21 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
// int leftStep = mapManager.getTotalStep() - cells.size();
// if (leftStep <= 0) {
// resetMapInfo(mapManager);
// LOGGER.info("updateMap() uid=>{}, leftStep=>{}", uid, leftStep);
// MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder().build();
// MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse, true);
// return;
// }
// mapManager.setTotalStep(leftStep);
if (cells.isEmpty() && curXY != mapManager.getCurXY()) {
LOGGER.info("cells.isEmpty() && curXY=>{} mapManager.getCurXY()=>{}", curXY, mapManager.getCurXY());
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
return;
}
int leftStep = mapManager.getTotalStep() - cells.size();
if (leftStep <= 0) {
leftStep = 0;
resetMapInfo(user);
LOGGER.info("updateMap() uid=>{}, leftStep=>{}", uid, leftStep);
MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder().build();
MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse, true);
return;
}
mapManager.setTotalStep(leftStep);
Cell cell = mapManager.getMapInfo().get(curXY);
if (cell == null) {
cell = mapManager.getMapInfo().get(triggerXY);
@ -251,6 +252,7 @@ public class MapLogic {
mapManager.setCurXY(curXY);
MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder()
.setEventId(cell.getEventId())
.setLeftStep(mapManager.getTotalStep())
.build();
MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse, true);
}
@ -509,11 +511,12 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
resetMapInfo(mapManager);
resetMapInfo(user);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true);
}
public void resetMapInfo(MapManager mapManager) throws Exception {
public void resetMapInfo(User user) throws Exception {
MapManager mapManager = user.getMapManager();
mapManager.setMapInfo(new HashMap<>());
mapManager.setHeroes(new HashSet<>());
mapManager.setTypeEight(new HashMap<>());
@ -522,9 +525,7 @@ public class MapLogic {
mapManager.setCurMapId(0);
TemporaryItems temporaryItems = mapManager.getTemporaryItems();
if (temporaryItems != null) {
Map<Integer, Item> items = temporaryItems.items;
Map<Integer, Equip> equips = temporaryItems.equips;
// ItemUtil.addItem();
ItemUtil.addTemporaryItemToBag(user, temporaryItems);
}
}

View File

@ -20,7 +20,7 @@ public class JumpBehavior extends BaseBehavior {
MapLogic.getInstance().initMap(user.getMapManager(), user);
return true;
} else {
MapLogic.getInstance().resetMapInfo(user.getMapManager());
MapLogic.getInstance().resetMapInfo(user);
}
return true;
}

View File

@ -289,21 +289,69 @@ public class ItemUtil {
}
}
public static void useItem(User user,Map<Integer,Integer> useItemMap) throws Exception{
/**
*
* @param user
* @param temporaryItems
* @throws Exception
*/
public static void addTemporaryItemToBag(User user, TemporaryItems temporaryItems) throws Exception {
Map<Integer, Item> items = temporaryItems.items;
Map<Integer, Equip> equips = temporaryItems.equips;
if (items.isEmpty() && equips.isEmpty()) {
return;
}
Map<Integer, Item> itemMap = user.getItemManager().getItemMap();
for (Map.Entry<Integer, Item> entry : items.entrySet()) {
SItem sItem = SItem.getsItemMap().get (entry.getKey());
if (sItem == null){
continue;
}
if (sItem.getIsSave() != 1) {
continue;
}
Item item = itemMap.get(entry.getKey());
if (item != null) {
Item temporaryItem = entry.getValue();
item.setItemNum(item.getItemNum() + temporaryItem.getItemNum());
}
itemMap.put(entry.getKey(), item) ;
}
user.getItemManager().setItemMap(itemMap);
user.getMapManager().setTemporaryItems(null);
}
private static void useItem(User user,Map<Integer,Integer> useItemMap) throws Exception{
if(useItemMap.isEmpty()){
return;
}
ItemManager itemManager = user.getItemManager();
Map<Integer, Item> temporaryItemList = new HashMap<>();
TemporaryItems temporaryItems = user.getMapManager().getTemporaryItems();
if (temporaryItems != null) {
temporaryItemList = temporaryItems.items;
}
for (Map.Entry<Integer, Integer> userItem : useItemMap.entrySet()) {
Item temporaryItem = temporaryItemList.get(userItem.getKey());
int needCount = userItem.getValue();
if (temporaryItem != null) {
int leftNum = temporaryItem.getItemNum() - needCount;
if (leftNum >= 0) {
temporaryItem.setItemNum(leftNum);
continue;
} else {
temporaryItemList.remove(userItem.getKey());
needCount = Math.abs(leftNum);
}
}
Item myItem = itemManager.getItem(userItem.getKey());
if( null == myItem){
if (null == myItem) {
continue;
}
int needCount = userItem.getValue();
if(myItem.getItemNum()<=needCount){
if (myItem.getItemNum() <= needCount) {
itemManager.removeItem(userItem.getKey());
}else{
myItem.setItemNum( myItem.getItemNum() - needCount);
} else {
myItem.setItemNum(myItem.getItemNum() - needCount);
}
}
}
@ -379,14 +427,12 @@ public class ItemUtil {
public static boolean itemCost(User user,int[][] costItems) throws Exception {
Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> moneyMap = new HashMap<>();
selectCost(costItems,itemMap,moneyMap);
boolean result = checkCost(user, itemMap, moneyMap);
selectCost(costItems,itemMap);
boolean result = checkCost(user, itemMap);
if (!result) {
return false;
}
useItem(user, itemMap);
// useMoney(user, moneyMap);
return true;
}
@ -400,41 +446,40 @@ public class ItemUtil {
}
}
private static boolean checkCost(User user, Map<Integer, Integer> itemMap, Map<Integer, Integer> moneyMap) {
if (itemMap != null) {
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) {
private static boolean checkCost(User user, Map<Integer, Integer> itemMap) {
if (itemMap == null) {
return true;
}
TemporaryItems temporaryItems = user.getMapManager().getTemporaryItems();
Map<Integer, Item> temporaryItemList = new HashMap<>();
if (temporaryItems != null) {
temporaryItemList = temporaryItems.items;
}
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) {
Item temporaryItem = temporaryItemList.get(entry.getKey());
if (temporaryItem == null || temporaryItem.getItemNum() < entry.getValue()) {
Item item = user.getItemManager().getItem(entry.getKey());
if (item == null || item.getItemNum() < entry.getValue()) {
if (item == null) {
return false;
}
if (temporaryItem == null && item.getItemNum() < entry.getValue()) {
return false;
}
if (temporaryItem != null && temporaryItem.getItemNum() + item.getItemNum() < entry.getValue()) {
return false;
}
}
}
// if (moneyMap != null) {
// for (Map.Entry<Integer, Integer> entry : moneyMap.entrySet()) {
// int count = 0;
// if (entry.getKey() == GlobalItemType.GEM) {
// count = user.getPlayerInfoManager().getGem();
// }
// if (count < entry.getValue()) {
// return false;
// }
// }
// }
return true;
return true;
}
private static void selectCost(int[][] costItems, Map<Integer, Integer> itemMap, Map<Integer, Integer> moneyMap) {
private static void selectCost(int[][] costItems, Map<Integer, Integer> itemMap) {
for (int[] costItem : costItems){
int itemId = costItem[0];
int itemNum = costItem[1];
SItem sItem = SItem.getsItemMap().get(itemId);
int itemType = getItemType(sItem);
switch (itemType) {
case GlobalItemType.GEM:
putcountMap(itemId,itemNum,moneyMap);
break;
case GlobalItemType.ITEM:
putcountMap(itemId,itemNum,itemMap);
break;