package openmods.gui.component.page;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import openmods.gui.component.GuiComponentItemStack;
import openmods.gui.listener.IMouseDownListener;
public class ItemStackTocPage extends PageBase {
private int count;
private int row;
private int column;
private final int columns;
private final int capacity;
private final int spacerWidth;
private final int spacerHeight;
private final float iconScale;
private final int iconSize;
public ItemStackTocPage(int rows, int columns, float iconScale) {
this.capacity = rows * columns;
this.iconScale = iconScale;
this.iconSize = MathHelper.floor_float(16 * iconScale);
this.columns = columns;
int requiredWidth = iconSize * columns;
int requiredHeight = iconSize * rows;
int leftoverWidth = getWidth() - requiredWidth;
int leftoverHeight = getHeight() - requiredHeight;
this.spacerWidth = leftoverWidth / (columns - 1);
this.spacerHeight = leftoverHeight / (rows - 1);
}
public int getCapacity() {
return capacity;
}
public boolean addEntry(ItemStack stack, IMouseDownListener clickListener) {
if (count >= capacity) return false;
int x = column * (iconSize + spacerWidth);
int y = row * (iconSize + spacerHeight);
final GuiComponentItemStack component = new GuiComponentItemStack(x, y, stack, true, iconScale);
component.setListener(clickListener);
addComponent(component);
if (++column >= columns) {
column = 0;
row++;
}
count++;
return true;
}
}