ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/gui/GuiPage.java

144 lines
4.5 KiB
Java
Raw Normal View History

/*
* This file ("GuiPage.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2016 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.booklet.gui;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
2016-11-10 21:07:15 +01:00
import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase;
import de.ellpeck.actuallyadditions.mod.booklet.page.ItemDisplay;
2016-11-10 21:07:15 +01:00
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
2016-11-10 22:06:58 +01:00
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
2016-11-10 21:07:15 +01:00
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
2016-11-10 21:07:15 +01:00
2016-11-10 22:06:58 +01:00
@SideOnly(Side.CLIENT)
2016-11-10 21:07:15 +01:00
public class GuiPage extends GuiBooklet{
private final List<ItemDisplay> itemDisplays = new ArrayList<ItemDisplay>();
public final IBookletPage[] pages = new IBookletPage[2];
2016-11-10 22:06:58 +01:00
public GuiPage(GuiScreen previousScreen, GuiBookletBase parentPage, IBookletPage page1, IBookletPage page2){
2016-11-10 21:07:15 +01:00
super(previousScreen, parentPage);
2016-11-10 22:06:58 +01:00
this.pages[0] = page1;
this.pages[1] = page2;
}
@Override
2016-11-10 21:07:15 +01:00
public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
2016-11-10 22:06:58 +01:00
super.mouseClicked(mouseX, mouseY, mouseButton);
for(ItemDisplay display : this.itemDisplays){
display.onMousePress(mouseButton, mouseX, mouseY);
}
2016-11-10 22:06:58 +01:00
for(IBookletPage page : this.pages){
if(page != null){
page.mouseClicked(this, mouseX, mouseY, mouseButton);
}
}
2016-11-10 21:07:15 +01:00
}
@Override
public void mouseReleased(int mouseX, int mouseY, int state){
2016-11-10 22:06:58 +01:00
super.mouseReleased(mouseX, mouseY, state);
for(IBookletPage page : this.pages){
if(page != null){
page.mouseReleased(this, mouseX, mouseY, state);
}
}
2016-11-10 21:07:15 +01:00
}
@Override
public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick){
2016-11-10 22:06:58 +01:00
super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick);
for(IBookletPage page : this.pages){
if(page != null){
page.mouseClickMove(this, mouseX, mouseY, clickedMouseButton, timeSinceLastClick);
}
}
2016-11-10 21:07:15 +01:00
}
@Override
public void actionPerformed(GuiButton button) throws IOException{
2016-11-10 22:06:58 +01:00
super.actionPerformed(button);
for(IBookletPage page : this.pages){
if(page != null){
page.actionPerformed(this, button);
}
}
2016-11-10 21:07:15 +01:00
}
@Override
public void initGui(){
2016-11-10 22:06:58 +01:00
super.initGui();
this.itemDisplays.clear();
2016-11-10 22:06:58 +01:00
for(int i = 0; i < this.pages.length; i++){
IBookletPage page = this.pages[i];
2016-11-10 22:06:58 +01:00
if(page != null){
page.initGui(this, this.guiLeft+6+i*142, this.guiTop+7);
2016-11-10 22:06:58 +01:00
}
}
2016-11-10 21:07:15 +01:00
}
@Override
public void updateScreen(){
2016-11-10 22:06:58 +01:00
super.updateScreen();
for(int i = 0; i < this.pages.length; i++){
IBookletPage page = this.pages[i];
2016-11-10 22:06:58 +01:00
if(page != null){
page.updateScreen(this, this.guiLeft+6+i*142, this.guiTop+7);
2016-11-10 22:06:58 +01:00
}
}
2016-11-10 21:07:15 +01:00
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks){
for(ItemDisplay display : this.itemDisplays){
display.drawPre();
}
2016-11-10 22:06:58 +01:00
for(int i = 0; i < this.pages.length; i++){
IBookletPage page = this.pages[i];
if(page != null){
page.drawScreenPre(this, this.guiLeft+6+i*142, this.guiTop+7, mouseX, mouseY, partialTicks);
}
}
super.drawScreen(mouseX, mouseY, partialTicks);
for(ItemDisplay display : this.itemDisplays){
display.drawPost(mouseX, mouseY);
}
2016-11-10 22:06:58 +01:00
for(int i = 0; i < this.pages.length; i++){
IBookletPage page = this.pages[i];
if(page != null){
page.drawScreenPost(this, this.guiLeft+6+i*142, this.guiTop+7, mouseX, mouseY, partialTicks);
}
}
}
@Override
public void addItemRenderer(ItemStack renderedStack, int x, int y, float scale, boolean shouldTryTransfer){
this.itemDisplays.add(new ItemDisplay(this, x, y, scale, renderedStack, shouldTryTransfer));
}
}