示例#1
0
 public static Array<InventoryItemLocation> getInventoryFiltered(
     Table sourceTable, Table targetTable, String filterOutName) {
   Array<InventoryItemLocation> items = getInventoryFiltered(targetTable, filterOutName);
   Array<Cell> sourceCells = sourceTable.getCells();
   int index = 0;
   for (InventoryItemLocation item : items) {
     for (; index < sourceCells.size; index++) {
       InventorySlot inventorySlot = ((InventorySlot) sourceCells.get(index).getActor());
       if (inventorySlot == null) continue;
       int numItems = inventorySlot.getNumItems();
       if (numItems == 0) {
         item.setLocationIndex(index);
         // System.out.println("[index] " + index + " itemtype: " + item.getItemTypeAtLocation() +
         // " numItems " + numItems);
         index++;
         break;
       }
     }
     if (index == sourceCells.size) {
       // System.out.println("[index] " + index + " itemtype: " + item.getItemTypeAtLocation() + "
       // numItems " + item.getNumberItemsAtLocation());
       item.setLocationIndex(index - 1);
     }
   }
   return items;
 }
示例#2
0
  public static void populateInventory(
      Table targetTable,
      Array<InventoryItemLocation> inventoryItems,
      DragAndDrop draganddrop,
      String defaultName,
      boolean disableNonDefaultItems) {
    clearInventoryItems(targetTable);

    Array<Cell> cells = targetTable.getCells();
    for (int i = 0; i < inventoryItems.size; i++) {
      InventoryItemLocation itemLocation = inventoryItems.get(i);
      ItemTypeID itemTypeID = ItemTypeID.valueOf(itemLocation.getItemTypeAtLocation());
      InventorySlot inventorySlot =
          ((InventorySlot) cells.get(itemLocation.getLocationIndex()).getActor());

      for (int index = 0; index < itemLocation.getNumberItemsAtLocation(); index++) {
        InventoryItem item = InventoryItemFactory.getInstance().getInventoryItem(itemTypeID);
        String itemName = itemLocation.getItemNameProperty();
        if (itemName == null || itemName.isEmpty()) {
          item.setName(defaultName);
        } else {
          item.setName(itemName);
        }

        inventorySlot.add(item);
        if (item.getName().equalsIgnoreCase(defaultName)) {
          draganddrop.addSource(new InventorySlotSource(inventorySlot, draganddrop));
        } else if (disableNonDefaultItems == false) {
          draganddrop.addSource(new InventorySlotSource(inventorySlot, draganddrop));
        }
      }
    }
  }
示例#3
0
 public static void setInventoryItemNames(Table targetTable, String name) {
   Array<Cell> cells = targetTable.getCells();
   for (int i = 0; i < cells.size; i++) {
     InventorySlot inventorySlot = ((InventorySlot) cells.get(i).getActor());
     if (inventorySlot == null) continue;
     inventorySlot.updateAllInventoryItemNames(name);
   }
 }
示例#4
0
 public static void clearInventoryItems(Table targetTable) {
   Array<Cell> cells = targetTable.getCells();
   for (int i = 0; i < cells.size; i++) {
     InventorySlot inventorySlot = (InventorySlot) cells.get(i).getActor();
     if (inventorySlot == null) continue;
     inventorySlot.clearAllInventoryItems(false);
   }
 }
示例#5
0
 public static Array<InventoryItemLocation> removeInventoryItems(
     String name, Table inventoryTable) {
   Array<Cell> cells = inventoryTable.getCells();
   Array<InventoryItemLocation> items = new Array<InventoryItemLocation>();
   for (int i = 0; i < cells.size; i++) {
     InventorySlot inventorySlot = ((InventorySlot) cells.get(i).getActor());
     if (inventorySlot == null) continue;
     inventorySlot.removeAllInventoryItemsWithName(name);
   }
   return items;
 }
示例#6
0
 public void removeQuestItemFromInventory(String questID) {
   Array<Cell> sourceCells = _inventorySlotTable.getCells();
   for (int index = 0; index < sourceCells.size; index++) {
     InventorySlot inventorySlot = ((InventorySlot) sourceCells.get(index).getActor());
     if (inventorySlot == null) continue;
     InventoryItem item = inventorySlot.getTopInventoryItem();
     if (item == null) continue;
     String inventoryItemName = item.getName();
     if (inventoryItemName != null && inventoryItemName.equals(questID)) {
       inventorySlot.clearAllInventoryItems(false);
     }
   }
 }
示例#7
0
  public boolean doesInventoryHaveSpace() {
    Array<Cell> sourceCells = _inventorySlotTable.getCells();
    int index = 0;

    for (; index < sourceCells.size; index++) {
      InventorySlot inventorySlot = ((InventorySlot) sourceCells.get(index).getActor());
      if (inventorySlot == null) continue;
      int numItems = inventorySlot.getNumItems();
      if (numItems == 0) {
        return true;
      } else {
        index++;
      }
    }
    return false;
  }
示例#8
0
  @Override
  public void onNotify(InventorySlot slot, SlotEvent event) {
    switch (event) {
      case ADDED_ITEM:
        InventoryItem addItem = slot.getTopInventoryItem();
        if (addItem == null) return;
        if (addItem.isInventoryItemOffensive()) {
          _APVal += addItem.getItemUseTypeValue();
          _APValLabel.setText(String.valueOf(_APVal));
          notify(String.valueOf(_APVal), InventoryObserver.InventoryEvent.UPDATED_AP);

          if (addItem.isInventoryItemOffensiveWand()) {
            notify(
                String.valueOf(addItem.getItemUseTypeValue()),
                InventoryObserver.InventoryEvent.ADD_WAND_AP);
          }

        } else if (addItem.isInventoryItemDefensive()) {
          _DPVal += addItem.getItemUseTypeValue();
          _DPValLabel.setText(String.valueOf(_DPVal));
          notify(String.valueOf(_DPVal), InventoryObserver.InventoryEvent.UPDATED_DP);
        }
        break;
      case REMOVED_ITEM:
        InventoryItem removeItem = slot.getTopInventoryItem();
        if (removeItem == null) return;
        if (removeItem.isInventoryItemOffensive()) {
          _APVal -= removeItem.getItemUseTypeValue();
          _APValLabel.setText(String.valueOf(_APVal));
          notify(String.valueOf(_APVal), InventoryObserver.InventoryEvent.UPDATED_AP);

          if (removeItem.isInventoryItemOffensiveWand()) {
            notify(
                String.valueOf(removeItem.getItemUseTypeValue()),
                InventoryObserver.InventoryEvent.REMOVE_WAND_AP);
          }

        } else if (removeItem.isInventoryItemDefensive()) {
          _DPVal -= removeItem.getItemUseTypeValue();
          _DPValLabel.setText(String.valueOf(_DPVal));
          notify(String.valueOf(_DPVal), InventoryObserver.InventoryEvent.UPDATED_DP);
        }
        break;
      default:
        break;
    }
  }
示例#9
0
 public static Array<InventoryItemLocation> getInventory(Table targetTable, String name) {
   Array<Cell> cells = targetTable.getCells();
   Array<InventoryItemLocation> items = new Array<InventoryItemLocation>();
   for (int i = 0; i < cells.size; i++) {
     InventorySlot inventorySlot = ((InventorySlot) cells.get(i).getActor());
     if (inventorySlot == null) continue;
     int numItems = inventorySlot.getNumItems(name);
     if (numItems > 0) {
       // System.out.println("[i] " + i + " itemtype: " +
       // inventorySlot.getTopInventoryItem().getItemTypeID().toString() + " numItems " +
       // numItems);
       items.add(
           new InventoryItemLocation(
               i, inventorySlot.getTopInventoryItem().getItemTypeID().toString(), numItems, name));
     }
   }
   return items;
 }
示例#10
0
 public static Array<InventoryItemLocation> getInventory(Table targetTable) {
   Array<Cell> cells = targetTable.getCells();
   Array<InventoryItemLocation> items = new Array<InventoryItemLocation>();
   for (int i = 0; i < cells.size; i++) {
     InventorySlot inventorySlot = ((InventorySlot) cells.get(i).getActor());
     if (inventorySlot == null) continue;
     int numItems = inventorySlot.getNumItems();
     if (numItems > 0) {
       items.add(
           new InventoryItemLocation(
               i,
               inventorySlot.getTopInventoryItem().getItemTypeID().toString(),
               numItems,
               inventorySlot.getTopInventoryItem().getName()));
     }
   }
   return items;
 }
示例#11
0
  public void addEntityToInventory(Entity entity, String itemName) {
    Array<Cell> sourceCells = _inventorySlotTable.getCells();
    int index = 0;

    for (; index < sourceCells.size; index++) {
      InventorySlot inventorySlot = ((InventorySlot) sourceCells.get(index).getActor());
      if (inventorySlot == null) continue;
      int numItems = inventorySlot.getNumItems();
      if (numItems == 0) {
        InventoryItem inventoryItem =
            InventoryItemFactory.getInstance()
                .getInventoryItem(ItemTypeID.valueOf(entity.getEntityConfig().getItemTypeID()));
        inventoryItem.setName(itemName);
        inventorySlot.add(inventoryItem);
        _dragAndDrop.addSource(new InventorySlotSource(inventorySlot, _dragAndDrop));
        break;
      }
    }
  }
示例#12
0
  public InventoryUI() {
    super("Inventory", Utility.STATUSUI_SKIN, "solidbackground");

    _observers = new Array<InventoryObserver>();

    _dragAndDrop = new DragAndDrop();
    _inventoryActors = new Array<Actor>();

    // create
    _inventorySlotTable = new Table();
    _inventorySlotTable.setName("Inventory_Slot_Table");

    _playerSlotsTable = new Table();
    _equipSlots = new Table();
    _equipSlots.setName("Equipment_Slot_Table");

    _equipSlots.defaults().space(10);
    _inventorySlotTooltip = new InventorySlotTooltip(Utility.STATUSUI_SKIN);

    Label DPLabel = new Label("Defense: ", Utility.STATUSUI_SKIN);
    _DPValLabel = new Label(String.valueOf(_DPVal), Utility.STATUSUI_SKIN);

    Label APLabel = new Label("Attack : ", Utility.STATUSUI_SKIN);
    _APValLabel = new Label(String.valueOf(_APVal), Utility.STATUSUI_SKIN);

    Table labelTable = new Table();
    labelTable.add(DPLabel).align(Align.left);
    labelTable.add(_DPValLabel).align(Align.center);
    labelTable.row();
    labelTable.row();
    labelTable.add(APLabel).align(Align.left);
    labelTable.add(_APValLabel).align(Align.center);

    InventorySlot headSlot =
        new InventorySlot(
            ItemUseType.ARMOR_HELMET.getValue(),
            new Image(Utility.ITEMS_TEXTUREATLAS.findRegion("inv_helmet")));

    InventorySlot leftArmSlot =
        new InventorySlot(
            ItemUseType.WEAPON_ONEHAND.getValue()
                | ItemUseType.WEAPON_TWOHAND.getValue()
                | ItemUseType.ARMOR_SHIELD.getValue()
                | ItemUseType.WAND_ONEHAND.getValue()
                | ItemUseType.WAND_TWOHAND.getValue(),
            new Image(Utility.ITEMS_TEXTUREATLAS.findRegion("inv_weapon")));

    InventorySlot rightArmSlot =
        new InventorySlot(
            ItemUseType.WEAPON_ONEHAND.getValue()
                | ItemUseType.WEAPON_TWOHAND.getValue()
                | ItemUseType.ARMOR_SHIELD.getValue()
                | ItemUseType.WAND_ONEHAND.getValue()
                | ItemUseType.WAND_TWOHAND.getValue(),
            new Image(Utility.ITEMS_TEXTUREATLAS.findRegion("inv_shield")));

    InventorySlot chestSlot =
        new InventorySlot(
            ItemUseType.ARMOR_CHEST.getValue(),
            new Image(Utility.ITEMS_TEXTUREATLAS.findRegion("inv_chest")));

    InventorySlot legsSlot =
        new InventorySlot(
            ItemUseType.ARMOR_FEET.getValue(),
            new Image(Utility.ITEMS_TEXTUREATLAS.findRegion("inv_boot")));

    headSlot.addListener(new InventorySlotTooltipListener(_inventorySlotTooltip));
    leftArmSlot.addListener(new InventorySlotTooltipListener(_inventorySlotTooltip));
    rightArmSlot.addListener(new InventorySlotTooltipListener(_inventorySlotTooltip));
    chestSlot.addListener(new InventorySlotTooltipListener(_inventorySlotTooltip));
    legsSlot.addListener(new InventorySlotTooltipListener(_inventorySlotTooltip));

    headSlot.addObserver(this);
    leftArmSlot.addObserver(this);
    rightArmSlot.addObserver(this);
    chestSlot.addObserver(this);
    legsSlot.addObserver(this);

    _dragAndDrop.addTarget(new InventorySlotTarget(headSlot));
    _dragAndDrop.addTarget(new InventorySlotTarget(leftArmSlot));
    _dragAndDrop.addTarget(new InventorySlotTarget(chestSlot));
    _dragAndDrop.addTarget(new InventorySlotTarget(rightArmSlot));
    _dragAndDrop.addTarget(new InventorySlotTarget(legsSlot));

    _playerSlotsTable.setBackground(
        new Image(new NinePatch(Utility.STATUSUI_TEXTUREATLAS.createPatch("dialog")))
            .getDrawable());

    // layout
    for (int i = 1; i <= _numSlots; i++) {
      InventorySlot inventorySlot = new InventorySlot();
      inventorySlot.addListener(new InventorySlotTooltipListener(_inventorySlotTooltip));
      _dragAndDrop.addTarget(new InventorySlotTarget(inventorySlot));

      _inventorySlotTable.add(inventorySlot).size(_slotWidth, _slotHeight);

      inventorySlot.addListener(
          new ClickListener() {
            @Override
            public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
              super.touchUp(event, x, y, pointer, button);
              if (getTapCount() == 2) {
                InventorySlot slot = (InventorySlot) event.getListenerActor();
                if (slot.hasItem()) {
                  InventoryItem item = slot.getTopInventoryItem();
                  if (item.isConsumable()) {
                    String itemInfo =
                        item.getItemUseType()
                            + Component.MESSAGE_TOKEN
                            + item.getItemUseTypeValue();
                    InventoryUI.this.notify(
                        itemInfo, InventoryObserver.InventoryEvent.ITEM_CONSUMED);
                    slot.removeActor(item);
                    slot.remove(item);
                  }
                }
              }
            }
          });

      if (i % _lengthSlotRow == 0) {
        _inventorySlotTable.row();
      }
    }

    _equipSlots.add();
    _equipSlots.add(headSlot).size(_slotWidth, _slotHeight);
    _equipSlots.row();

    _equipSlots.add(leftArmSlot).size(_slotWidth, _slotHeight);
    _equipSlots.add(chestSlot).size(_slotWidth, _slotHeight);
    _equipSlots.add(rightArmSlot).size(_slotWidth, _slotHeight);
    _equipSlots.row();

    _equipSlots.add();
    _equipSlots.right().add(legsSlot).size(_slotWidth, _slotHeight);

    _playerSlotsTable.add(_equipSlots);
    _inventoryActors.add(_inventorySlotTooltip);

    this.add(_playerSlotsTable).padBottom(20);
    this.add(labelTable);
    this.row();
    this.add(_inventorySlotTable).colspan(2);
    this.row();
    this.pack();
  }