Skip to content

Item Display Logic

PeterOu8 edited this page Oct 3, 2022 · 6 revisions

This wiki page will explain the implementation of the item equipment which allows the player to equip an item or use a potion.

public void displayItems() {
    float padding = 32f;
    InventoryComponent inventory = ServiceLocator.getGameArea().getPlayer().getComponent(InventoryComponent.class);
    items = inventory.getInventory();
    for (int i = 0; i < items.size(); ++i) {
        Entity currentItem = items.get(i);
        Texture itemTexture = new 
        Texture(currentItem.getComponent(TextureRenderComponent.class).getTexturePath());
        TextureRegion itemTextureRegion = new TextureRegion(itemTexture);
        TextureRegionDrawable itemTextureDrawable = new TextureRegionDrawable(itemTextureRegion);
        ImageButton item = new ImageButton(itemTextureDrawable);
        item.setSize(64, 64);
        int row = i / 4;
        int column = i % 4;
        float horizontalPosition = (inventoryMenu.getX() + 192) + column * (padding + 64);
        float verticalPosition = (inventoryMenu.getY() + 496) - row * (padding + 64);
        item.setPosition(horizontalPosition, verticalPosition);
        // Triggers an event when the button is pressed.
        String buttonText;

        if (items.get(i).checkEntityType(EntityTypes.WEAPON)
                || items.get(i).checkEntityType(EntityTypes.ARMOUR)) {
            buttonText = "Equip item";
        } else if (items.get(i).checkEntityType(EntityTypes.POTION)) {
            buttonText = "Add to quick bar";
        } else {
            buttonText = "Crafting";
        }
        item.addListener(
                new ChangeListener() {
                    @Override
                    public void changed(ChangeEvent changeEvent, Actor actor) {
                        Button.ButtonStyle equip = new Button.ButtonStyle();
                        equip.up= new TextureRegionDrawable(new TextureRegion(
                                new Texture(Gdx.files.internal("images/Inventory/button/equip_up.png"))));
                        equip.over= new TextureRegionDrawable(new TextureRegion(
                                new Texture(Gdx.files.internal("images/Inventory/button/equip_down.png"))));
                        Button itemOpBtn = new Button(equip);
                        itemOpBtn.setSize(96,36);
                        Button.ButtonStyle drop = new Button.ButtonStyle();
                        drop.up= new TextureRegionDrawable(new TextureRegion(
                                new Texture(Gdx.files.internal("images/Inventory/button/drop_up.png"))));
                        drop.over= new TextureRegionDrawable(new TextureRegion(
                                new Texture(Gdx.files.internal("images/Inventory/button/drop_down.png"))));
                        Button dropItemBtn = new Button(drop);
                        dropItemBtn.setSize(96,36);

                        itemOpBtn.setPosition(horizontalPosition + 48, verticalPosition);
                        dropItemBtn.setPosition(horizontalPosition + 48, verticalPosition - 42);
                        dropItemBtn.addListener(
                                new ChangeListener() {
                                    @Override
                                    public void changed(ChangeEvent event, Actor actor) {
                                        if (inventory.removeItem(currentItem)) {
                                            inventoryGroup.removeActor(item);
                                            updateInventoryDisplay();
                                        }
                                        if (itemOpBtn.isPressed() || dropItemBtn.isPressed()) {
                                            inventoryGroup.removeActor(itemOpBtn);
                                            inventoryGroup.removeActor(dropItemBtn);
                                        }
                                    }
                                }
                        );
                        itemOpBtn.addListener(
                                new ChangeListener() {
                                    @Override
                                    public void changed(ChangeEvent event, Actor actor) {
                                        switch (buttonText) {
                                            case "Equip item":
                                                if (inventory.equipItem(currentItem)) {
                                                    updateInventoryDisplay();
                                                }
                                                break;
                                            case "Add to quick bar":
                                                if (inventory.addQuickBarItems(currentItem)) {
                                                    inventory.removeItem(currentItem);
                                                    updateInventoryDisplay();
                                                }
                                                break;
                                        }
                                        if (itemOpBtn.isPressed() || dropItemBtn.isPressed()) {
                                            inventoryGroup.removeActor(itemOpBtn);
                                            inventoryGroup.removeActor(dropItemBtn);
                                        }
                                    }
                                }
                        );
                        if (!buttonText.equals("Crafting")) {
                            inventoryGroup.addActor(itemOpBtn);
                        }
                        inventoryGroup.addActor(dropItemBtn);
                    }
                });
        inventoryGroup.addActor(item);
    }
}

Back to Inventory Page

Author

  • Li-Sung Ou
  • GitHub: @PeterOu8
  • Discord: Secret Agent Randy Beans#6754
  • Slack: Li-Sung Ou
Clone this wiki locally