-
Notifications
You must be signed in to change notification settings - Fork 1
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);
}
}
- Li-Sung Ou
- GitHub: @PeterOu8
- Discord: Secret Agent Randy Beans#6754
- Slack: Li-Sung Ou