package com.jmrapp.terralegion.game.views.ui;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.jmrapp.terralegion.engine.views.drawables.ResourceManager;
import com.jmrapp.terralegion.game.item.ItemStack;
import com.jmrapp.terralegion.game.utils.CachePool;
/**
* Created by Jon on 12/15/15.
*/
public class ItemBox extends Table {
private static final TextureRegionDrawable inventoryBoxDrawable = new TextureRegionDrawable(new TextureRegion(ResourceManager.getInstance().getTexture("inventoryBox")));
private static final TextureRegionDrawable inventorySelectedBoxDrawable = new TextureRegionDrawable(new TextureRegion(ResourceManager.getInstance().getTexture("selectedInventoryBox")));
private Group btnGroup;
private ImageButton btn;
private Label itemLabel;
private Image itemImage;
private ImageButton.ImageButtonStyle style;
private ItemStack stack;
private int inventoryX, inventoryY;
private String extra;
private float originalX, originalY, originalLabelX, originalLabelY;
public ItemBox(ItemStack stack, int inventoryX, int inventoryY) {
this(stack, inventoryX, inventoryY, "");
}
public ItemBox(ItemStack stack, String extra) {
this(stack, -1, -1, extra);
}
public ItemBox(ItemStack stack, int inventoryX, int inventoryY, String extra) {
this.stack = stack;
this.inventoryX = inventoryX;
this.inventoryY = inventoryY;
this.extra = extra;
btnGroup = CachePool.getGroup();
btnGroup.setBounds(0, 0, 60, 60);
style = new ImageButton.ImageButtonStyle();
style.up = inventoryBoxDrawable;
btn = new ImageButton(style);
btn.setBounds(0, 0, 60, 60);
btn.setName(extra);
btnGroup.addActor(btn);
setupBox();
add(btnGroup);
}
public void setupBox() {
if (stack != null) {
Label.LabelStyle labelStyle = new Label.LabelStyle();
labelStyle.font = ResourceManager.getInstance().getFont("smallFont");
labelStyle.fontColor = Color.WHITE;
if (itemLabel == null) {
itemLabel = new Label(String.valueOf(stack.getStack()), labelStyle);
} else {
itemLabel.setText(String.valueOf(stack.getStack()));
}
float width = itemLabel.getWidth();
itemLabel.setBounds(5, 60 - 15, width, 15);
if (itemImage == null) {
itemImage = new Image(stack.getItem().getIcon().getTextureRegion());
} else {
itemImage.setDrawable(new TextureRegionDrawable(stack.getItem().getIcon().getTextureRegion()));
}
itemImage.setVisible(true);
itemImage.setBounds(30 - (itemImage.getWidth() / 2), 30 - (itemImage.getHeight() / 2), itemImage.getWidth(), itemImage.getHeight());
originalX = itemImage.getX();
originalY = itemImage.getY();
originalLabelX = itemLabel.getX();
originalLabelY = itemLabel.getY();
btnGroup.addActor(itemLabel);
btnGroup.addActor(itemImage);
} else {
if (itemLabel != null) {
itemLabel.setText("");
}
if (itemImage != null) {
itemImage.setVisible(false);
}
}
}
public void setSelected(boolean b) {
if (b)
btn.getStyle().up = inventorySelectedBoxDrawable;
else
btn.getStyle().up = inventoryBoxDrawable;
}
public void setOriginalPosition() {
itemImage.setPosition(originalX, originalY);
itemLabel.setPosition(originalLabelX, originalLabelY);
}
public void cacheObjects() {
CachePool.addGroup(btnGroup);
}
public Image getItemImage() {
return itemImage;
}
public int getInventoryX() {
return inventoryX;
}
public int getInventoryY() {
return inventoryY;
}
public ItemStack getItemStack() {
return stack;
}
public void setItemStack(ItemStack stack) {
this.stack = stack;
}
public String getExtra() {
return extra;
}
@Override
public void setPosition(float x, float y) {
if (itemLabel != null)
itemLabel.setPosition(x - 10, y + 30);
if (itemImage != null)
itemImage.setPosition(x, y);
}
}