mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-05-23 17:43:37 +02:00
164 lines
6.1 KiB
Java
164 lines
6.1 KiB
Java
package ellpeck.someprettytechystuff.booklet;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import ellpeck.someprettytechystuff.util.Util;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.FontRenderer;
|
|
import net.minecraft.client.gui.GuiButton;
|
|
import net.minecraft.client.gui.GuiScreen;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.util.StatCollector;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
public class GuiInfoBook extends GuiScreen{
|
|
|
|
public static final ResourceLocation resLoc = new ResourceLocation(Util.MOD_ID, "textures/gui/guiInfoBook.png");
|
|
public static final ResourceLocation fontLocation = new ResourceLocation("textures/font/ascii.png");
|
|
|
|
public final int xSize = 180;
|
|
public final int ySize = 180;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public final FontRenderer thisRenderer = new FontRenderer(Minecraft.getMinecraft().gameSettings, fontLocation, Minecraft.getMinecraft().renderEngine, true);
|
|
|
|
public Chapter mainChapter = new Chapter(-1, "main", 1, false);
|
|
|
|
public int currentPage = 0;
|
|
public Chapter currentChapter = mainChapter;
|
|
|
|
public ChangePageButton nextPageButton;
|
|
public ChangePageButton prevPageButton;
|
|
public ChangePageButton mainPageButton;
|
|
|
|
@SuppressWarnings("unused")
|
|
public GuiInfoBook(EntityPlayer player){
|
|
|
|
}
|
|
|
|
@SuppressWarnings("all")
|
|
public void initGui(){
|
|
this.buttonList.clear();
|
|
|
|
int xPos = (this.width-this.xSize)/2;
|
|
int yPos = (this.height-this.ySize)/2;
|
|
|
|
this.addMainChapterButtons();
|
|
this.nextPageButton = new ChangePageButton(-3, xPos+180, yPos+170);
|
|
this.prevPageButton = new ChangePageButton(-2, xPos-18, yPos+170);
|
|
this.mainPageButton = new ChangePageButton(-1, xPos, yPos-15);
|
|
this.buttonList.add(nextPageButton);
|
|
this.buttonList.add(prevPageButton);
|
|
this.buttonList.add(mainPageButton);
|
|
|
|
this.updateButtons();
|
|
}
|
|
|
|
@SuppressWarnings("all")
|
|
public void addMainChapterButtons(){
|
|
int xPos = (this.width-this.xSize)/2;
|
|
int yPos = (this.height-this.ySize)/2;
|
|
|
|
int size = ChapterList.chapterList.size();
|
|
for(int i = 0; i < size; i++) {
|
|
this.buttonList.add(new InvisiButton(i, xPos + 20, yPos + 15 + 11 * i, 145, 10, StatCollector.translateToLocal("infoBook." + ChapterList.chapterList.get(i).name + ".title"), this.thisRenderer));
|
|
}
|
|
}
|
|
|
|
public void updateButtons(){
|
|
this.nextPageButton.visible = this.currentPage < this.currentChapter.pageAmount-1;
|
|
this.prevPageButton.visible = this.currentPage > 0;
|
|
this.mainPageButton.visible = this.currentChapter != this.mainChapter;
|
|
for(int i = 0; i < ChapterList.chapterList.size(); i++){
|
|
((GuiButton)this.buttonList.get(i)).visible = this.currentChapter == mainChapter;
|
|
}
|
|
}
|
|
|
|
@SuppressWarnings("static-access")
|
|
public void actionPerformed(GuiButton button){
|
|
if(button == this.nextPageButton) this.currentPage++;
|
|
else if(button == this.prevPageButton) this.currentPage--;
|
|
else if(button == this.mainPageButton){
|
|
this.currentPage = 0;
|
|
this.currentChapter = this.mainChapter;
|
|
}
|
|
else this.currentChapter = ChapterList.chapterList.get(button.id);
|
|
this.updateButtons();
|
|
}
|
|
|
|
public void drawScreen(int x, int y, float f){
|
|
this.drawDefaultBackground();
|
|
GL11.glColor4f(1F, 1F, 1F, 1F);
|
|
|
|
int xPos = (this.width-this.xSize)/2;
|
|
int yPos = (this.height-this.ySize)/2;
|
|
|
|
this.mc.getTextureManager().bindTexture(resLoc);
|
|
this.drawTexturedModalRect(xPos, yPos, 0, 0, this.xSize, this.ySize);
|
|
|
|
this.drawPageContents();
|
|
|
|
super.drawScreen(x, y, f);
|
|
}
|
|
|
|
public void drawPageContents(){
|
|
int xPos = (this.width-this.xSize)/2;
|
|
int yPos = (this.height-this.ySize)/2;
|
|
|
|
if(this.currentChapter != this.mainChapter) this.thisRenderer.drawSplitString(this.currentChapter.pageTexts[this.currentPage], xPos + 15, yPos + 14, 150, 0);
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
static class ChangePageButton extends GuiButton{
|
|
/**
|
|
* Type of the button
|
|
* -3: Next Page
|
|
* -2: Previous Page
|
|
* -1: Back to main Page
|
|
*/
|
|
private final int buttonType;
|
|
|
|
public ChangePageButton(int ID, int x, int y){
|
|
super(ID, x, y, 18, ID == -1 ? 14 : 10, "");
|
|
this.buttonType = ID;
|
|
}
|
|
|
|
public void drawButton(Minecraft mc, int mouseX, int mouseY){
|
|
if (this.visible){
|
|
boolean isHoverOver = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
mc.getTextureManager().bindTexture(GuiInfoBook.resLoc);
|
|
|
|
int posX = 0;
|
|
int posY = 180;
|
|
if(this.buttonType == -2) posY += 10;
|
|
else if(this.buttonType == -1) posY += 20;
|
|
if(isHoverOver) posX += 18;
|
|
this.drawTexturedModalRect(this.xPosition, this.yPosition, posX, posY, 18, this.buttonType == -1 ? 14 : 10);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
static class InvisiButton extends GuiButton{
|
|
private FontRenderer renderer;
|
|
public InvisiButton(int ID, int x, int y, int width, int height, String text, FontRenderer renderer){
|
|
super(ID, x, y, width, height, text);
|
|
this.renderer = renderer;
|
|
}
|
|
|
|
public void drawButton(Minecraft mc, int mouseX, int mouseY){
|
|
if (this.visible){
|
|
boolean isHoverOver = false;
|
|
if(mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height) isHoverOver = true;
|
|
this.renderer.drawString((isHoverOver ? ((char) 167 + "2" + (char) 167 + "n") : "") + this.displayString, this.xPosition, this.yPosition + (this.height - 8) / 2, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean doesGuiPauseGame(){
|
|
return false;
|
|
}
|
|
}
|