From 7baf08872db4a6042db57bec0aaaf16552aea5ca Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Thu, 24 Oct 2013 16:02:48 -0400 Subject: [PATCH] Got the encoder to scale with the screen resolution Took a lot of remembering how to do this unity than translating that to java minecraft. As well to calculate the correct translation base on the fact that my gui is scaled by .52 of a normal one. --- .../dark/assembly/client/ClientProxy.java | 3 +- .../assembly/client/gui/GuiEncoderCoder.java | 4 +- .../client/gui/GuiEncoderContainer.java | 2 +- .../dark/assembly/client/gui/GuiTaskList.java | 116 ++++++++++-------- 4 files changed, 73 insertions(+), 52 deletions(-) diff --git a/src/minecraft/dark/assembly/client/ClientProxy.java b/src/minecraft/dark/assembly/client/ClientProxy.java index 63158a68..0e5b292a 100644 --- a/src/minecraft/dark/assembly/client/ClientProxy.java +++ b/src/minecraft/dark/assembly/client/ClientProxy.java @@ -10,6 +10,7 @@ import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import dark.assembly.client.gui.GuiEncoderCoder; +import dark.assembly.client.gui.GuiEncoderHelp; import dark.assembly.client.gui.GuiEncoderInventory; import dark.assembly.client.gui.GuiImprinter; import dark.assembly.client.gui.GuiProcessor; @@ -81,7 +82,7 @@ public class ClientProxy extends CommonProxy } case GUI_ENCODER_HELP: { - return new GuiEncoderCoder(player, (TileEntityEncoder) tileEntity); + return new GuiEncoderHelp(player, (TileEntityEncoder) tileEntity); } case GUI_PROCESSOR: { diff --git a/src/minecraft/dark/assembly/client/gui/GuiEncoderCoder.java b/src/minecraft/dark/assembly/client/gui/GuiEncoderCoder.java index 6551ecc1..8cc2b423 100644 --- a/src/minecraft/dark/assembly/client/gui/GuiEncoderCoder.java +++ b/src/minecraft/dark/assembly/client/gui/GuiEncoderCoder.java @@ -24,7 +24,7 @@ public class GuiEncoderCoder extends GuiEncoderBase { if (taskListGui == null) { - taskListGui = new GuiTaskList((this.width - this.xSize) / 2 + 20, (this.height - this.ySize) / 2 + 40); + taskListGui = new GuiTaskList(); } super.drawBackgroundLayer(x, y, var1); FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE_CODE_BACK); @@ -34,7 +34,7 @@ public class GuiEncoderCoder extends GuiEncoderBase int containerWidth = (this.width - this.xSize) / 2; int containerHeight = (this.height - this.ySize) / 2; this.drawTexturedModalRect(containerWidth, containerHeight, 0, 0, this.xSize, this.ySize); - taskListGui.drawConsole(this.fontRenderer); + taskListGui.drawConsole(this.mc, (this.width - this.xSize) / 2 + 20, (this.height - this.ySize) / 2 + 40); } } diff --git a/src/minecraft/dark/assembly/client/gui/GuiEncoderContainer.java b/src/minecraft/dark/assembly/client/gui/GuiEncoderContainer.java index 0724fdc4..e50820b5 100644 --- a/src/minecraft/dark/assembly/client/gui/GuiEncoderContainer.java +++ b/src/minecraft/dark/assembly/client/gui/GuiEncoderContainer.java @@ -81,7 +81,7 @@ public abstract class GuiEncoderContainer extends GuiContainer @Override protected void drawGuiContainerForegroundLayer(int x, int y) { - this.fontRenderer.drawString("\u00a77" + "encoder", (int) (this.xSize / 2 - 7 * 2.5), 4, 4210752); + this.fontRenderer.drawString("\u00a77" + "Encoder", (int) (this.xSize / 2 - 7 * 2.5), 4, 4210752); /** Render Tool Tips */ if (((GuiButtonImage) this.buttonList.get(0)).isIntersect(x, y)) diff --git a/src/minecraft/dark/assembly/client/gui/GuiTaskList.java b/src/minecraft/dark/assembly/client/gui/GuiTaskList.java index c15289eb..633e52e4 100644 --- a/src/minecraft/dark/assembly/client/gui/GuiTaskList.java +++ b/src/minecraft/dark/assembly/client/gui/GuiTaskList.java @@ -1,7 +1,9 @@ package dark.assembly.client.gui; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; @@ -17,31 +19,32 @@ import dark.assembly.common.armbot.Program; import dark.assembly.common.armbot.command.TaskGive; import dark.core.interfaces.IScroll; +/** Not a gui itself but a component used to display task as a box inside of a gui + * + * @author DarkGuardsman */ public class GuiTaskList extends Gui implements IScroll { protected IProgram program; protected int scroll = 0; - /** The x position of this control. */ - public int xPosition; - - /** The y position of this control. */ - public int yPosition; - /** The string displayed on this control. */ public String displayString; public static final ResourceLocation TEXTURE_PROCESS = new ResourceLocation(AssemblyLine.instance.DOMAIN, AssemblyLine.GUI_DIRECTORY + "PROCESS.png"); - public GuiTaskList(int x, int y) + public GuiTaskList() { - this.xPosition = x; - this.yPosition = y; program = new Program(); program.setTaskAt(new Vector2(0, 0), new TaskGive()); program.setTaskAt(new Vector2(0, 1), new TaskGive()); program.setTaskAt(new Vector2(0, 2), new TaskGive()); program.setTaskAt(new Vector2(0, 3), new TaskGive()); + program.setTaskAt(new Vector2(0, 4), new TaskGive()); + program.setTaskAt(new Vector2(0, 5), new TaskGive()); + program.setTaskAt(new Vector2(0, 6), new TaskGive()); + program.setTaskAt(new Vector2(0, 7), new TaskGive()); + program.setTaskAt(new Vector2(0, 8), new TaskGive()); + program.setTaskAt(new Vector2(0, 9), new TaskGive()); program.init(null); } @@ -69,57 +72,74 @@ public class GuiTaskList extends Gui implements IScroll return this.scroll; } - public void drawConsole(FontRenderer fontRenderer) + public void drawConsole(Minecraft minecraft, int x, int y) { - int spacing = 10; + int spacingY = 25; + int spacingX = 25; int color = 14737632; GL11.glPushMatrix(); - float scale = 0.92f; + //With everything scaled the gui will not align like a normal one so use a scaled distance from the main GUI + float scale = 0.52f; + ScaledResolution scaledresolution = new ScaledResolution(minecraft.gameSettings, minecraft.displayWidth, minecraft.displayHeight); + int scaleH = scaledresolution.getScaledHeight(); + int scaleW = scaledresolution.getScaledWidth(); + this.drawCenteredString(minecraft.fontRenderer, "Scale - " + scaleW + "x " + scaleH + "y", 100, 100, color); + int desiredH = 240; + int desiredW = 427; + float sh = (scaleH / desiredH) / scale; + float sW = (scaleW / desiredW) / scale; + spacingY = (int) (spacingY * sh); + spacingX = (int) (spacingX * sW); + //Start drawing after everying is scaled down GL11.glScalef(scale, scale, scale); - // Draws each line - for (int i = 0; i < 4; i++) + //TODO add zooming which will involve storing scales with distance translations factors + for (int j = 0; j < 3; j++) { - int currentLine = i + this.scroll; - - if (currentLine < this.program.getSize().intY() && currentLine >= 0) + for (int i = 0; i < 6; i++) { - ITask task = this.program.getTaskAt(new Vector2(0, currentLine)); + int currentLine = i + this.scroll; - if (task != null) + if (currentLine <= this.program.getSize().intY() && currentLine >= 0) { - if (task instanceof IRedirectTask && !((IRedirectTask) task).render()) + ITask task = this.program.getTaskAt(new Vector2(j, currentLine)); + + if (task != null) { - continue; + if (task instanceof IRedirectTask && !((IRedirectTask) task).render()) + { + continue; + } + int xx = 50; + int yy = 39; + int uu = 0; + int vv = 0; + switch (task.getType()) + { + case DATA: + break; + case PROCESS: + break; + case DEFINEDPROCESS: + xx = 50; + yy = 39; + uu = 0; + vv = 39; + break; + case DECISION: + xx = 50; + yy = 50; + uu = 50; + vv = 0; + break; + } + FMLClientHandler.instance().getClient().renderEngine.bindTexture(this.TEXTURE_PROCESS); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Vector2 center = new Vector2(x * sW + (spacingX * j), y * sh + (spacingY * i)); + this.drawTexturedModalRect(center.intX(), center.intY(), uu, vv, xx, yy); + this.drawCenteredString(minecraft.fontRenderer, task.getMethodName(), center.intX() + (xx / 2), center.intY() + ((yy - 8) / 2), color); } - int xx = 50; - int yy = 39; - int uu = 0; - int vv = 0; - switch (task.getType()) - { - case DATA: - break; - case PROCESS: - break; - case DEFINEDPROCESS: - xx = 50; - yy = 39; - uu = 0; - vv = 39; - break; - case DECISION: - xx = 50; - yy = 50; - uu = 50; - vv = 0; - break; - } - FMLClientHandler.instance().getClient().renderEngine.bindTexture(this.TEXTURE_PROCESS); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.drawTexturedModalRect(this.xPosition + xx / 2, this.yPosition + (yy * i), uu, vv, xx, yy); - this.drawCenteredString(fontRenderer, task.getMethodName(), this.xPosition + xx, this.yPosition + (yy * i), -6250336); } }