临时背包
parent
c259bb3e57
commit
34495dd9b0
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue