package pneumaticCraft.client.gui.pneumaticHelmet;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ResourceLocation;
import pneumaticCraft.api.client.pneumaticHelmet.IGuiScreen;
import pneumaticCraft.api.client.pneumaticHelmet.IOptionPage;
import pneumaticCraft.api.client.pneumaticHelmet.IUpgradeRenderHandler;
import pneumaticCraft.client.gui.GuiPneumaticScreenBase;
import pneumaticCraft.client.gui.widget.GuiKeybindCheckBox;
import pneumaticCraft.client.render.pneumaticArmor.UpgradeRenderHandlerList;
import pneumaticCraft.common.CommonHUDHandler;
import cpw.mods.fml.client.FMLClientHandler;
public class GuiHelmetMainScreen extends GuiPneumaticScreenBase implements IGuiScreen{
private final List<IOptionPage> upgradePages = new ArrayList<IOptionPage>();
private final List<String> upgradePageNames = new ArrayList<String>();
private static int page;
private boolean init = true;
private static GuiHelmetMainScreen instance;//Creating a static instance, as we can use it to handle keybinds when the GUI is closed.
public static GuiHelmetMainScreen getInstance(){
return instance;
}
public static void init(){
instance = new GuiHelmetMainScreen();
Minecraft minecraft = FMLClientHandler.instance().getClient();
ScaledResolution scaledresolution = new ScaledResolution(minecraft, minecraft.displayWidth, minecraft.displayHeight);
int width = scaledresolution.getScaledWidth();
int height = scaledresolution.getScaledHeight();
instance.setWorldAndResolution(minecraft, width, height);
for(int i = 1; i < instance.upgradePages.size(); i++) {
page = i;
instance.initGui();
}
page = 0;
instance.init = false;
}
@Override
public void initGui(){
super.initGui();
buttonList.clear();
upgradePages.clear();
upgradePageNames.clear();
addPages();
for(int i = 0; i < upgradePages.size(); i++) {
GuiButton button = new GuiButton(100 + i, 210, 20 + i * 22, 200, 20, upgradePages.get(i).getPageName());
if(page == i) button.enabled = false;
buttonList.add(button);
}
if(page > upgradePages.size() - 1) page = upgradePages.size() - 1;
GuiKeybindCheckBox checkBox = new GuiKeybindCheckBox(100, 40, 12, 0xFFFFFFFF, I18n.format("gui.enableModule", I18n.format("pneumaticHelmet.upgrade." + upgradePageNames.get(page))), "pneumaticHelmet.upgrade." + upgradePageNames.get(page));
if(upgradePages.get(page).canBeTurnedOff()) addWidget(checkBox);
upgradePages.get(page).initGui(this);
}
@Override
protected ResourceLocation getTexture(){
return null;
}
private void addPages(){
for(int i = 0; i < UpgradeRenderHandlerList.instance().upgradeRenderers.size(); i++) {
if(init || CommonHUDHandler.getHandlerForPlayer().upgradeRenderersInserted[i]) {
IUpgradeRenderHandler upgradeRenderHandler = UpgradeRenderHandlerList.instance().upgradeRenderers.get(i);
IOptionPage optionPage = upgradeRenderHandler.getGuiOptionsPage();
if(optionPage != null) {
upgradePageNames.add(upgradeRenderHandler.getUpgradeName());
upgradePages.add(optionPage);
}
}
}
}
@Override
public void drawScreen(int x, int y, float partialTicks){
drawDefaultBackground();
IOptionPage optionPage = upgradePages.get(page);
optionPage.drawPreButtons(x, y, partialTicks);
super.drawScreen(x, y, partialTicks);
optionPage.drawScreen(x, y, partialTicks);
drawCenteredString(fontRendererObj, upgradePages.get(page).getPageName(), 100, 25, 0xFFFFFFFF);
if(optionPage.displaySettingsText()) drawCenteredString(fontRendererObj, "Settings", 100, 115, 0xFFFFFFFF);
}
@Override
public void keyTyped(char par1, int par2){
super.keyTyped(par1, par2);
if(par2 != 1) {
for(IOptionPage page : upgradePages) {
page.keyTyped(par1, par2);
}
}
}
@Override
public void actionPerformed(GuiButton button){
if(button.id >= 100 && button.id < 100 + upgradePages.size()) {
page = button.id - 100;
initGui();
} else {
upgradePages.get(page).actionPerformed(button);
}
}
@Override
public void handleMouseInput(){
super.handleMouseInput();
upgradePages.get(page).handleMouseInput();
}
@Override
protected void mouseClicked(int par1, int par2, int par3){
super.mouseClicked(par1, par2, par3);
upgradePages.get(page).mouseClicked(par1, par2, par3);
}
@Override
public List getButtonList(){
return buttonList;
}
@Override
public FontRenderer getFontRenderer(){
return fontRendererObj;
}
@Override
public boolean doesGuiPauseGame(){
return false;
}
}