GUI refactor
This commit is contained in:
211
src/main/java/storagecraft/gui/GuiBase.java
Normal file
211
src/main/java/storagecraft/gui/GuiBase.java
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
package storagecraft.gui;
|
||||||
|
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
|
import java.util.List;
|
||||||
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||||
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.util.StatCollector;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
import org.lwjgl.opengl.GL12;
|
||||||
|
import storagecraft.StorageCraft;
|
||||||
|
|
||||||
|
public abstract class GuiBase extends GuiContainer {
|
||||||
|
public GuiBase(Container container, int w, int h) {
|
||||||
|
super(container);
|
||||||
|
|
||||||
|
this.xSize = w;
|
||||||
|
this.ySize = h;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initGui() {
|
||||||
|
super.initGui();
|
||||||
|
|
||||||
|
init(getRelativeX(), getRelativeY());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateScreen() {
|
||||||
|
super.updateScreen();
|
||||||
|
|
||||||
|
update(getRelativeX(), getRelativeY());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
|
||||||
|
drawBackground(getRelativeX(), getRelativeY(), mouseX, mouseY);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
|
||||||
|
drawForeground(mouseX - ((this.width - xSize) / 2), mouseY - ((this.height - ySize) / 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void init(int x, int y);
|
||||||
|
|
||||||
|
public abstract void update(int x, int y);
|
||||||
|
|
||||||
|
public abstract void drawBackground(int x, int y, int mouseX, int mouseY);
|
||||||
|
|
||||||
|
public abstract void drawForeground(int mouseX, int mouseY);
|
||||||
|
|
||||||
|
private int getRelativeX() {
|
||||||
|
return (width - xSize) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getRelativeY() {
|
||||||
|
return (height - ySize) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void bindTexture(String file) {
|
||||||
|
bindTexture(StorageCraft.ID, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void bindTexture(String base, String file) {
|
||||||
|
mc.getTextureManager().bindTexture(new ResourceLocation(base, "textures/" + file));
|
||||||
|
}
|
||||||
|
|
||||||
|
// @TODO: inBounds(x, y, width, height, ox, oy)
|
||||||
|
protected void drawItem(int x, int y, ItemStack stack) {
|
||||||
|
drawItem(x, y, stack, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void drawItem(int x, int y, ItemStack stack, boolean withOverlay) {
|
||||||
|
zLevel = 100.0F;
|
||||||
|
itemRender.zLevel = 100.0F;
|
||||||
|
|
||||||
|
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||||
|
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
RenderHelper.enableGUIStandardItemLighting();
|
||||||
|
|
||||||
|
itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.renderEngine, stack, x, y);
|
||||||
|
|
||||||
|
if (withOverlay) {
|
||||||
|
itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.renderEngine, stack, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopAttrib();
|
||||||
|
|
||||||
|
itemRender.zLevel = 0.0F;
|
||||||
|
zLevel = 0.0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void drawString(int x, int y, String message) {
|
||||||
|
drawString(x, y, message, 4210752);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void drawString(int x, int y, String message, int color) {
|
||||||
|
fontRendererObj.drawString(message, x, y, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void drawTooltip(int x, int y, String message) {
|
||||||
|
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
|
||||||
|
|
||||||
|
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||||||
|
|
||||||
|
RenderHelper.disableStandardItemLighting();
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
String[] lines = message.split("\n");
|
||||||
|
|
||||||
|
if (lines.length > 0) {
|
||||||
|
int var5 = 0;
|
||||||
|
int var6;
|
||||||
|
int var7;
|
||||||
|
|
||||||
|
for (var6 = 0; var6 < lines.length; ++var6) {
|
||||||
|
var7 = this.fontRendererObj.getStringWidth(lines[var6]);
|
||||||
|
|
||||||
|
if (var7 > var5) {
|
||||||
|
var5 = var7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var6 = x + 12;
|
||||||
|
var7 = y - 12;
|
||||||
|
int var9 = 8;
|
||||||
|
|
||||||
|
if (lines.length > 1) {
|
||||||
|
var9 += 2 + (lines.length - 1) * 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.guiTop + var7 + var9 + 6 > this.height) {
|
||||||
|
var7 = this.height - var9 - this.guiTop - 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
zLevel = 300.0F;
|
||||||
|
itemRender.zLevel = 300.0F;
|
||||||
|
|
||||||
|
int var10 = -267386864;
|
||||||
|
|
||||||
|
drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10);
|
||||||
|
drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3, var7 + var9 + 4, var10, var10);
|
||||||
|
drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10);
|
||||||
|
drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10);
|
||||||
|
drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var9 + 3, var10, var10);
|
||||||
|
|
||||||
|
int var11 = 1347420415;
|
||||||
|
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
|
||||||
|
|
||||||
|
drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var9 + 3 - 1, var11, var12);
|
||||||
|
drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 + var9 + 3 - 1, var11, var12);
|
||||||
|
drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11);
|
||||||
|
drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var7 + var9 + 3, var12, var12);
|
||||||
|
|
||||||
|
for (int var13 = 0; var13 < lines.length; ++var13) {
|
||||||
|
String var14 = lines[var13];
|
||||||
|
|
||||||
|
if (var13 == 0) {
|
||||||
|
var14 = '\u00a7' + Integer.toHexString(15) + var14;
|
||||||
|
} else {
|
||||||
|
var14 = "\u00a77" + var14;
|
||||||
|
}
|
||||||
|
|
||||||
|
fontRendererObj.drawStringWithShadow(var14, var6, var7, -1);
|
||||||
|
|
||||||
|
if (var13 == 0) {
|
||||||
|
var7 += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
var7 += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
zLevel = 0.0F;
|
||||||
|
itemRender.zLevel = 0.0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopAttrib();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void drawTooltip(int x, int y, ItemStack stack) {
|
||||||
|
List list = stack.getTooltip(mc.thePlayer, mc.gameSettings.advancedItemTooltips);
|
||||||
|
|
||||||
|
for (int i = 0; i < list.size(); ++i) {
|
||||||
|
if (i == 0) {
|
||||||
|
list.set(i, stack.getRarity().rarityColor + (String) list.get(i));
|
||||||
|
} else {
|
||||||
|
list.set(i, EnumChatFormatting.GRAY + (String) list.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
drawTooltip(x, y, Joiner.on("\n").join(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String t(String name, Object... format) {
|
||||||
|
return StatCollector.translateToLocalFormatted(name, format);
|
||||||
|
}
|
||||||
|
}
|
@@ -1,50 +1,47 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import storagecraft.container.ContainerController;
|
import storagecraft.container.ContainerController;
|
||||||
import storagecraft.tile.TileController;
|
import storagecraft.tile.TileController;
|
||||||
|
|
||||||
public class GuiController extends GuiContainer {
|
public class GuiController extends GuiBase {
|
||||||
public static final ResourceLocation CONTROLLER_RESOURCE = new ResourceLocation("storagecraft:textures/gui/controller.png");
|
|
||||||
|
|
||||||
private TileController controller;
|
private TileController controller;
|
||||||
|
|
||||||
public GuiController(ContainerController container, TileController controller) {
|
public GuiController(ContainerController container, TileController controller) {
|
||||||
super(container);
|
super(container, 176, 190);
|
||||||
|
|
||||||
this.controller = controller;
|
this.controller = controller;
|
||||||
|
|
||||||
this.xSize = 176;
|
|
||||||
this.ySize = 190;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
public void init(int x, int y) {
|
||||||
mc.getTextureManager().bindTexture(CONTROLLER_RESOURCE);
|
}
|
||||||
|
|
||||||
int x = (this.width - xSize) / 2;
|
@Override
|
||||||
int y = (this.height - ySize) / 2;
|
public void update(int x, int y) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
|
bindTexture("gui/controller.png");
|
||||||
|
|
||||||
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
int bx = 17;
|
int barX = 17;
|
||||||
int by = 25;
|
int barY = 25;
|
||||||
int bw = 16;
|
int barWidth = 16;
|
||||||
int bh = 58;
|
int barHeight = 58;
|
||||||
|
|
||||||
int nbh = (int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * (float) bh);
|
int barHeightNew = (int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * (float) barHeight);
|
||||||
|
|
||||||
drawTexturedModalRect(x + bx, y + by + bh - nbh, 178, 0, bw, nbh);
|
drawTexturedModalRect(x + barX, y + barY + barHeight - barHeightNew, 178, 0, barWidth, barHeightNew);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:controller"), 7, 7, 4210752);
|
drawString(7, 7, t("gui.storagecraft:controller"));
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752);
|
drawString(7, 96, t("container.inventory"));
|
||||||
|
|
||||||
fontRendererObj.drawString(String.format(StatCollector.translateToLocal("misc.storagecraft:energyStored"), controller.getEnergyStored(null), controller.getMaxEnergyStored(null)), 45, 24, 4210752);
|
drawString(45, 24, t("misc.storagecraft:energyStored", controller.getEnergyStored(null), controller.getMaxEnergyStored(null)));
|
||||||
fontRendererObj.drawString(String.format(StatCollector.translateToLocal("misc.storagecraft:energyUsage"), controller.getEnergyUsage()), 45, 44, 4210752);
|
drawString(45, 44, t("misc.storagecraft:energyUsage", controller.getEnergyUsage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,32 +1,25 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import storagecraft.container.ContainerDrive;
|
import storagecraft.container.ContainerDrive;
|
||||||
import storagecraft.tile.TileDrive;
|
import storagecraft.tile.TileDrive;
|
||||||
|
|
||||||
public class GuiDrive extends GuiMachine {
|
public class GuiDrive extends GuiMachine {
|
||||||
public static final ResourceLocation DRIVE_RESOURCE = new ResourceLocation("storagecraft:textures/gui/drive.png");
|
|
||||||
|
|
||||||
public GuiDrive(ContainerDrive container, TileDrive drive) {
|
public GuiDrive(ContainerDrive container, TileDrive drive) {
|
||||||
super(container, drive);
|
super(container, 176, 190, drive);
|
||||||
|
|
||||||
this.xSize = 176;
|
|
||||||
this.ySize = 190;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
mc.getTextureManager().bindTexture(DRIVE_RESOURCE);
|
bindTexture("gui/drive.png");
|
||||||
|
|
||||||
drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
super.drawForeground(mouseX, mouseY);
|
||||||
|
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:drive"), 7, 7, 4210752);
|
drawString(7, 7, t("gui.storagecraft:drive"));
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752);
|
drawString(7, 96, t("container.inventory"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,6 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import storagecraft.StorageCraft;
|
import storagecraft.StorageCraft;
|
||||||
import storagecraft.container.ContainerExporter;
|
import storagecraft.container.ContainerExporter;
|
||||||
import storagecraft.network.MessageExporterUpdate;
|
import storagecraft.network.MessageExporterUpdate;
|
||||||
@@ -10,69 +8,49 @@ import storagecraft.tile.TileExporter;
|
|||||||
import storagecraft.util.InventoryUtils;
|
import storagecraft.util.InventoryUtils;
|
||||||
|
|
||||||
public class GuiExporter extends GuiMachine {
|
public class GuiExporter extends GuiMachine {
|
||||||
public static final ResourceLocation EXPORTER_RESOURCE = new ResourceLocation("storagecraft:textures/gui/exporter.png");
|
|
||||||
|
|
||||||
private TileExporter exporter;
|
private TileExporter exporter;
|
||||||
|
|
||||||
private GuiButton compareNBT;
|
private GuiButton compareNBT;
|
||||||
private GuiButton compareDamage;
|
private GuiButton compareDamage;
|
||||||
|
|
||||||
public GuiExporter(ContainerExporter container, TileExporter exporter) {
|
public GuiExporter(ContainerExporter container, TileExporter exporter) {
|
||||||
super(container, exporter);
|
super(container, 176, 186, exporter);
|
||||||
|
|
||||||
this.xSize = 176;
|
|
||||||
this.ySize = 186;
|
|
||||||
|
|
||||||
this.exporter = exporter;
|
this.exporter = exporter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initGui() {
|
public void init(int x, int y) {
|
||||||
super.initGui();
|
super.init(x, y);
|
||||||
|
|
||||||
int x = (this.width - xSize) / 2;
|
|
||||||
int y = (this.height - ySize) / 2;
|
|
||||||
|
|
||||||
buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, ""));
|
buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, ""));
|
||||||
buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, ""));
|
buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateScreen() {
|
public void update(int x, int y) {
|
||||||
super.updateScreen();
|
super.update(x, y);
|
||||||
|
|
||||||
compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT);
|
compareNBT.displayString = t("misc.storagecraft:compareNBT") + ": ";
|
||||||
compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE);
|
compareNBT.displayString += t("misc.storagecraft:" + ((exporter.getCompareFlags() & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT ? "on" : "off"));
|
||||||
}
|
|
||||||
|
|
||||||
private String getTextForCompareToggle(String which, int flag) {
|
compareDamage.displayString = t("misc.storagecraft:compareDamage") + ": ";
|
||||||
StringBuilder builder = new StringBuilder();
|
compareDamage.displayString += t("misc.storagecraft:" + ((exporter.getCompareFlags() & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE ? "on" : "off"));
|
||||||
|
|
||||||
builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which));
|
|
||||||
builder.append(": ");
|
|
||||||
|
|
||||||
if ((exporter.getCompareFlags() & flag) == flag) {
|
|
||||||
builder.append(StatCollector.translateToLocal("misc.storagecraft:on"));
|
|
||||||
} else {
|
|
||||||
builder.append(StatCollector.translateToLocal("misc.storagecraft:off"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
mc.getTextureManager().bindTexture(EXPORTER_RESOURCE);
|
bindTexture("gui/exporter.png");
|
||||||
|
|
||||||
drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
super.drawForeground(mouseX, mouseY);
|
||||||
|
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:exporter"), 7, 7, 4210752);
|
drawString(7, 7, t("gui.storagecraft:exporter"));
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 93, 4210752);
|
drawString(7, 93, t("container.inventory"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,9 +1,6 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
import org.lwjgl.input.Mouse;
|
import org.lwjgl.input.Mouse;
|
||||||
import storagecraft.StorageCraft;
|
import storagecraft.StorageCraft;
|
||||||
@@ -14,28 +11,22 @@ import storagecraft.tile.TileController;
|
|||||||
import storagecraft.tile.TileGrid;
|
import storagecraft.tile.TileGrid;
|
||||||
|
|
||||||
public class GuiGrid extends GuiMachine {
|
public class GuiGrid extends GuiMachine {
|
||||||
public static final ResourceLocation GRID_RESOURCE = new ResourceLocation("storagecraft:textures/gui/grid.png");
|
|
||||||
|
|
||||||
private ContainerGrid container;
|
private ContainerGrid container;
|
||||||
private TileGrid grid;
|
private TileGrid grid;
|
||||||
|
|
||||||
|
private int hoveringSlot;
|
||||||
private int offset;
|
private int offset;
|
||||||
|
|
||||||
private int hoveringSlot;
|
|
||||||
|
|
||||||
public GuiGrid(ContainerGrid container, TileGrid grid) {
|
public GuiGrid(ContainerGrid container, TileGrid grid) {
|
||||||
super(container, grid);
|
super(container, 176, 190, grid);
|
||||||
|
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
|
|
||||||
this.xSize = 176;
|
|
||||||
this.ySize = 190;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateScreen() {
|
public void update(int x, int y) {
|
||||||
super.updateScreen();
|
super.update(x, y);
|
||||||
|
|
||||||
int wheel = Mouse.getDWheel();
|
int wheel = Mouse.getDWheel();
|
||||||
|
|
||||||
@@ -50,7 +41,7 @@ public class GuiGrid extends GuiMachine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxOffset() {
|
private int getMaxOffset() {
|
||||||
if (!grid.isConnected()) {
|
if (!grid.isConnected()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -60,7 +51,7 @@ public class GuiGrid extends GuiMachine {
|
|||||||
return max < 0 ? 0 : max;
|
return max < 0 ? 0 : max;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canScroll(int delta) {
|
private boolean canScroll(int delta) {
|
||||||
if (offset + delta < 0) {
|
if (offset + delta < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -68,22 +59,27 @@ public class GuiGrid extends GuiMachine {
|
|||||||
return offset + delta <= getMaxOffset();
|
return offset + delta <= getMaxOffset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private boolean isHoveringOverValidSlot() {
|
||||||
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
return grid.isConnected() && isHoveringOverSlot() && hoveringSlot < grid.getController().getItems().size();
|
||||||
mc.getTextureManager().bindTexture(GRID_RESOURCE);
|
}
|
||||||
|
|
||||||
drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize);
|
private boolean isHoveringOverSlot() {
|
||||||
|
return hoveringSlot >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
bindTexture("gui/grid.png");
|
||||||
|
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:grid"), 7, 7, 4210752);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752);
|
}
|
||||||
|
|
||||||
int mx = mouseX - ((this.width - xSize) / 2);
|
@Override
|
||||||
int my = mouseY - ((this.height - ySize) / 2);
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
|
super.drawForeground(mouseX, mouseY);
|
||||||
|
|
||||||
|
drawString(7, 7, t("gui.storagecraft:grid"));
|
||||||
|
drawString(7, 96, t("container.inventory"));
|
||||||
|
|
||||||
int x = 8;
|
int x = 8;
|
||||||
int y = 20;
|
int y = 20;
|
||||||
@@ -94,17 +90,15 @@ public class GuiGrid extends GuiMachine {
|
|||||||
|
|
||||||
for (int i = 0; i < 9 * 4; ++i) {
|
for (int i = 0; i < 9 * 4; ++i) {
|
||||||
if (grid.isConnected() && slot < grid.getController().getItems().size()) {
|
if (grid.isConnected() && slot < grid.getController().getItems().size()) {
|
||||||
ItemStack stack = grid.getController().getItems().get(slot).toItemStack();
|
drawItem(x, y, grid.getController().getItems().get(slot).toItemStack(), true);
|
||||||
|
|
||||||
itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, x, y);
|
|
||||||
itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack, x, y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mx >= x && mx <= x + 16 && my >= y && my <= y + 16) || !grid.isConnected()) {
|
if ((mouseX >= x && mouseX <= x + 16 && mouseY >= y && mouseY <= y + 16) || !grid.isConnected()) {
|
||||||
hoveringSlot = slot;
|
hoveringSlot = slot;
|
||||||
|
|
||||||
int color = grid.isConnected() ? -2130706433 : 0xFF5B5B5B;
|
int color = grid.isConnected() ? -2130706433 : 0xFF5B5B5B;
|
||||||
|
|
||||||
|
// @TODO: make it so it renders over the item
|
||||||
drawGradientRect(x, y, x + 16, y + 16, color, color);
|
drawGradientRect(x, y, x + 16, y + 16, color, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,18 +113,10 @@ public class GuiGrid extends GuiMachine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isHoveringOverValidSlot()) {
|
if (isHoveringOverValidSlot()) {
|
||||||
renderToolTip(grid.getController().getItems().get(hoveringSlot).toItemStack(), mx, my);
|
drawTooltip(mouseX, mouseY, grid.getController().getItems().get(hoveringSlot).toItemStack());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isHoveringOverValidSlot() {
|
|
||||||
return grid.isConnected() && isHoveringOverSlot() && hoveringSlot < grid.getController().getItems().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isHoveringOverSlot() {
|
|
||||||
return hoveringSlot >= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(int mouseX, int mouseY, int clickedButton) {
|
public void mouseClicked(int mouseX, int mouseY, int clickedButton) {
|
||||||
super.mouseClicked(mouseX, mouseY, clickedButton);
|
super.mouseClicked(mouseX, mouseY, clickedButton);
|
||||||
|
@@ -1,8 +1,6 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import storagecraft.StorageCraft;
|
import storagecraft.StorageCraft;
|
||||||
import storagecraft.container.ContainerImporter;
|
import storagecraft.container.ContainerImporter;
|
||||||
import storagecraft.network.MessageImporterUpdate;
|
import storagecraft.network.MessageImporterUpdate;
|
||||||
@@ -10,8 +8,6 @@ import storagecraft.tile.TileImporter;
|
|||||||
import storagecraft.util.InventoryUtils;
|
import storagecraft.util.InventoryUtils;
|
||||||
|
|
||||||
public class GuiImporter extends GuiMachine {
|
public class GuiImporter extends GuiMachine {
|
||||||
public static final ResourceLocation IMPORTER_RESOURCE = new ResourceLocation("storagecraft:textures/gui/importer.png");
|
|
||||||
|
|
||||||
private TileImporter importer;
|
private TileImporter importer;
|
||||||
|
|
||||||
private GuiButton compareNBT;
|
private GuiButton compareNBT;
|
||||||
@@ -19,20 +15,14 @@ public class GuiImporter extends GuiMachine {
|
|||||||
private GuiButton mode;
|
private GuiButton mode;
|
||||||
|
|
||||||
public GuiImporter(ContainerImporter container, TileImporter importer) {
|
public GuiImporter(ContainerImporter container, TileImporter importer) {
|
||||||
super(container, importer);
|
super(container, 176, 201, importer);
|
||||||
|
|
||||||
this.xSize = 176;
|
|
||||||
this.ySize = 201;
|
|
||||||
|
|
||||||
this.importer = importer;
|
this.importer = importer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initGui() {
|
public void init(int x, int y) {
|
||||||
super.initGui();
|
super.init(x, y);
|
||||||
|
|
||||||
int x = (this.width - xSize) / 2;
|
|
||||||
int y = (this.height - ySize) / 2;
|
|
||||||
|
|
||||||
buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, ""));
|
buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, ""));
|
||||||
buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, ""));
|
buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, ""));
|
||||||
@@ -40,42 +30,31 @@ public class GuiImporter extends GuiMachine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateScreen() {
|
public void update(int x, int y) {
|
||||||
super.updateScreen();
|
super.update(x, y);
|
||||||
|
|
||||||
compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT);
|
compareNBT.displayString = t("misc.storagecraft:compareNBT") + ": ";
|
||||||
compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE);
|
compareNBT.displayString += t("misc.storagecraft:" + ((importer.getCompareFlags() & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT ? "on" : "off"));
|
||||||
mode.displayString = StatCollector.translateToLocal("misc.storagecraft:importer.mode." + importer.getMode().id);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getTextForCompareToggle(String which, int flag) {
|
compareDamage.displayString = t("misc.storagecraft:compareDamage") + ": ";
|
||||||
StringBuilder builder = new StringBuilder();
|
compareDamage.displayString += t("misc.storagecraft:" + ((importer.getCompareFlags() & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE ? "on" : "off"));
|
||||||
|
|
||||||
builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which));
|
mode.displayString = t("misc.storagecraft:importer.mode." + importer.getMode().id);
|
||||||
builder.append(": ");
|
|
||||||
|
|
||||||
if ((importer.getCompareFlags() & flag) == flag) {
|
|
||||||
builder.append(StatCollector.translateToLocal("misc.storagecraft:on"));
|
|
||||||
} else {
|
|
||||||
builder.append(StatCollector.translateToLocal("misc.storagecraft:off"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
mc.getTextureManager().bindTexture(IMPORTER_RESOURCE);
|
bindTexture("gui/importer.png");
|
||||||
|
|
||||||
drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
super.drawForeground(mouseX, mouseY);
|
||||||
|
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752);
|
drawString(7, 7, t("gui.storagecraft:importer"));
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 108, 4210752);
|
drawString(7, 108, t("container.inventory"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,52 +1,45 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import storagecraft.StorageCraft;
|
import storagecraft.StorageCraft;
|
||||||
import storagecraft.network.MessageRedstoneModeUpdate;
|
import storagecraft.network.MessageRedstoneModeUpdate;
|
||||||
import storagecraft.tile.TileMachine;
|
import storagecraft.tile.TileMachine;
|
||||||
|
|
||||||
public abstract class GuiMachine extends GuiContainer {
|
public abstract class GuiMachine extends GuiBase {
|
||||||
private TileMachine machine;
|
private TileMachine machine;
|
||||||
|
|
||||||
private int bx;
|
public static final ItemStack REDSTONE_MODE_ITEM = new ItemStack(Items.redstone, 1);
|
||||||
private int by = 6;
|
|
||||||
private int bw = 20;
|
|
||||||
private int bh = 20;
|
|
||||||
|
|
||||||
public GuiMachine(Container container, TileMachine machine) {
|
private int redstoneModeX;
|
||||||
super(container);
|
private int redstoneModeY = 6;
|
||||||
|
private int redstoneModeWidth = 20;
|
||||||
|
private int redstoneModeHeight = 20;
|
||||||
|
|
||||||
this.bx = xSize - 1;
|
public GuiMachine(Container container, int w, int h, TileMachine machine) {
|
||||||
|
super(container, w, h);
|
||||||
|
|
||||||
|
this.redstoneModeX = w - 1;
|
||||||
this.machine = machine;
|
this.machine = machine;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initGui() {
|
public void init(int x, int y) {
|
||||||
super.initGui();
|
buttonList.add(new GuiButton(0, x + redstoneModeX, y + redstoneModeY, redstoneModeWidth, redstoneModeHeight, ""));
|
||||||
|
|
||||||
buttonList.add(new GuiButton(0, ((this.width - xSize) / 2) + bx, ((this.height - ySize) / 2) + by, bw, bh, ""));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void update(int x, int y) {
|
||||||
int mx = mouseX - ((this.width - xSize) / 2);
|
}
|
||||||
int my = mouseY - ((this.height - ySize) / 2);
|
|
||||||
|
|
||||||
itemRender.renderItemIntoGUI(fontRendererObj, mc.getTextureManager(), new ItemStack(Items.redstone, 1), bx + 2, by + 1);
|
@Override
|
||||||
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
|
drawItem(redstoneModeX + 2, redstoneModeY + 1, REDSTONE_MODE_ITEM);
|
||||||
|
|
||||||
if (mx >= bx && mx <= bx + bw && my >= by && my <= by + bh) {
|
if (mouseX >= redstoneModeX && mouseX <= redstoneModeX + redstoneModeWidth && mouseY >= redstoneModeY && mouseY <= redstoneModeY + redstoneModeHeight) {
|
||||||
List<String> lines = new ArrayList<String>();
|
drawTooltip(mouseX, mouseY, t("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id));
|
||||||
|
|
||||||
lines.add(StatCollector.translateToLocal("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id));
|
|
||||||
|
|
||||||
drawHoveringText(lines, mx, my, fontRendererObj);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,29 +1,25 @@
|
|||||||
package storagecraft.gui;
|
package storagecraft.gui;
|
||||||
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.StatCollector;
|
|
||||||
import storagecraft.container.ContainerStorageProxy;
|
import storagecraft.container.ContainerStorageProxy;
|
||||||
import storagecraft.tile.TileStorageProxy;
|
import storagecraft.tile.TileStorageProxy;
|
||||||
|
|
||||||
public class GuiStorageProxy extends GuiMachine {
|
public class GuiStorageProxy extends GuiMachine {
|
||||||
public static final ResourceLocation STORAGE_PROXY_RESOURCE = new ResourceLocation("storagecraft:textures/gui/storageProxy.png");
|
|
||||||
|
|
||||||
public GuiStorageProxy(ContainerStorageProxy container, TileStorageProxy storageProxy) {
|
public GuiStorageProxy(ContainerStorageProxy container, TileStorageProxy storageProxy) {
|
||||||
super(container, storageProxy);
|
super(container, 176, 131, storageProxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
mc.getTextureManager().bindTexture(STORAGE_PROXY_RESOURCE);
|
bindTexture("gui/storageProxy.png");
|
||||||
|
|
||||||
drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
public void drawForeground(int mouseX, int mouseY) {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
super.drawForeground(mouseX, mouseY);
|
||||||
|
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:storageProxy"), 7, 7, 4210752);
|
drawString(7, 7, t("gui.storagecraft:storageProxy"));
|
||||||
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 39, 4210752);
|
drawString(7, 39, t("container.inventory"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user