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(); }