package chbachman.armour.gui.tablet;
import java.util.List;
import chbachman.api.upgrade.IUpgrade;
import chbachman.api.util.Array;
import cofh.core.render.IconRegistry;
import cofh.lib.util.helpers.StringHelper;
import net.minecraft.util.IIcon;
public class TabletPage {
final IUpgrade upgrade;
final IIcon icon;
int sizeX;
int sizeY;
int posX;
int posY;
boolean isEnabled;
Array<TabletPage> dependencies = new Array<TabletPage>();
Array<TabletPage> depdendents = new Array<TabletPage>();
public TabletPage(int posX, int posY, int sizeX, int sizeY, IUpgrade upgrade) {
this.sizeX = sizeX;
this.sizeY = sizeY;
this.posX = posX;
this.posY = posY;
this.upgrade = upgrade;
icon = upgrade.getIcon();
}
public TabletPage(int posX, int posY, IUpgrade upgrade){
this(posX, posY, 10, 10, upgrade);
}
public void initDependencies(Array<TabletPage> others){
if(upgrade.getDependencies() != null){
for(IUpgrade dependency : upgrade.getDependencies()){
for(TabletPage page : others){
if(page.upgrade == dependency){
dependencies.add(page);
}
}
}
}
//if(this.dependencies.size == 0){
this.isEnabled = true;
//}
}
public void render(TabletGui gui, int mouseX, int mouseY) {
if(!isEnabled){
boolean shouldEnable = true;
for(TabletPage page : dependencies){
if(!page.isEnabled){
shouldEnable = false;
break;
}
}
this.isEnabled = shouldEnable;
}
gui.drawIcon(IconRegistry.getIcon("IconButton"), this.posX, this.posY, 1);
if(icon == null){
return;
}
gui.drawIcon(icon, this.posX, this.posY, 1);
}
public void getTooltip(List<String> list) {
list.add(StringHelper.localize(upgrade.getName()));
}
public boolean intersectsWith(int mouseX, int mouseY) {
if (mouseX >= this.posX && mouseX <= this.posX + this.sizeX && mouseY >= this.posY && mouseY <= this.posY + this.sizeY) {
return true;
}
return false;
}
public boolean isVisible(TabletGui gui) {
int x = posX + gui.getShiftX();
int y = posY + gui.getShiftY();
if (x + this.sizeX > gui.getXSize()) { // Right of the screen
return false;
}
if (y + this.sizeY > gui.getYSize()) { // Below the screen
return false;
}
if (y < 0) { // Above the screen
return false;
}
if (x < 0) { // Left of the screen
return false;
}
return true;
}
}