diff --git a/src/common/assemblyline/machines/TileEntitySorter.java b/src/common/assemblyline/machines/TileEntitySorter.java index f0f158c5b..f3cce69d0 100644 --- a/src/common/assemblyline/machines/TileEntitySorter.java +++ b/src/common/assemblyline/machines/TileEntitySorter.java @@ -46,7 +46,7 @@ public class TileEntitySorter extends TileEntityBase implements /** * on/off value for the GUI buttons */ - public boolean[] onOff = new boolean[5]; + public boolean[] onOff = new boolean[]{true,true,true,true,true}; /** * the belt found in the search area */ @@ -131,6 +131,7 @@ public class TileEntitySorter extends TileEntityBase implements this.beltSide.ignoreEntity(entity); } + System.out.print(" \n fire "); entity.motionX = (double) side.offsetX * 0.1; entity.motionY += 0.10000000298023224D; entity.motionZ = (double) side.offsetZ * 0.1; @@ -202,16 +203,14 @@ public class TileEntitySorter extends TileEntityBase implements if (i >= this.onOff.length) { return; } - boolean cc = this.onOff[i]; - if (cc) { - cc = false; + if (this.onOff[i]) { + this.onOff[i] = false; } else { - cc = true; + this.onOff[i] = true; } - this.onOff[i] = cc; if (worldObj.isRemote) { Packet packet = PacketManager.getPacket("asmLine", this, - new Object[] { tPacketID.SETTINGON, i }); + tPacketID.SETTINGON.ordinal(), i ); PacketDispatcher.sendPacketToServer(packet); } } @@ -261,17 +260,18 @@ public class TileEntitySorter extends TileEntityBase implements try{ int id = dataStream.readInt(); tPacketID pID = tPacketID.values()[id]; + System.out.print("\n id:"+id+" "); if(pID == tPacketID.ANIMATION) { this.firePiston = dataStream.readBoolean(); - } + }else if(pID == tPacketID.GUI) { for(int i =0; i < this.onOff.length; i++) { this.onOff[i] = dataStream.readBoolean(); } - } + }else if(pID == tPacketID.SETTINGON) { int num = dataStream.readInt(); diff --git a/src/minecraft/assemblyline/gui/GuiButtonImage.java b/src/minecraft/assemblyline/gui/GuiButtonImage.java new file mode 100644 index 000000000..b343fc41c --- /dev/null +++ b/src/minecraft/assemblyline/gui/GuiButtonImage.java @@ -0,0 +1,46 @@ +package assemblyline.gui; + +import net.minecraft.client.Minecraft; +import net.minecraft.src.GuiButton; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.common.Side; +import cpw.mods.fml.common.asm.SideOnly; +/** + * Copied from GSM lib and modified for this mod only + * @author Rseifert + * + */ +@SideOnly(Side.CLIENT) +public class GuiButtonImage extends GuiButton +{ + private int type = 0; + public GuiButtonImage(int par1, int par2, int par3,int type) + { + super(par1, par2, par3, 12, 12, ""); + this.type = type; + } + + /** + * Draws this button to the screen. + */ + @Override + public void drawButton(Minecraft par1Minecraft, int width, int hight) + { + if (this.drawButton) + { + GL11.glBindTexture(GL11.GL_TEXTURE_2D, par1Minecraft.renderEngine.getTexture("/assemblyline/textures/gui@.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + boolean var4 = width >= this.xPosition && hight >= this.yPosition && width < this.xPosition + this.width && hight < this.yPosition + this.height; + int var5 = 106; + int var6 = 0; + if (var4) + { + var5 += this.height; + } + + this.drawTexturedModalRect(this.xPosition, this.yPosition, var6, var5, this.width, this.height); + } + } +} \ No newline at end of file diff --git a/src/minecraft/assemblyline/gui/GuiSorter.java b/src/minecraft/assemblyline/gui/GuiSorter.java index 7108fd046..bc94df77f 100644 --- a/src/minecraft/assemblyline/gui/GuiSorter.java +++ b/src/minecraft/assemblyline/gui/GuiSorter.java @@ -1,53 +1,109 @@ package assemblyline.gui; +import net.minecraft.src.GuiButton; import net.minecraft.src.GuiContainer; import net.minecraft.src.InventoryPlayer; import net.minecraft.src.StatCollector; +import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import assemblyline.AssemblyLine; import assemblyline.machines.ContainerSorter; import assemblyline.machines.TileEntitySorter; -public class GuiSorter extends GuiContainer -{ +public class GuiSorter extends GuiContainer { private TileEntitySorter tileEntity; private int containerWidth; private int containerHeight; - public GuiSorter(InventoryPlayer par1InventoryPlayer, TileEntitySorter tileEntity) - { + public GuiSorter(InventoryPlayer par1InventoryPlayer, + TileEntitySorter tileEntity) { super(new ContainerSorter(par1InventoryPlayer, tileEntity)); this.tileEntity = tileEntity; } - /** - * Draw the foreground layer for the - * GuiContainer (everything in front of the - * items) - */ - @Override - protected void drawGuiContainerForegroundLayer(int par1, int par2) - { - this.fontRenderer.drawString("Ejector Settings", 55, 6, 4210752); - this.fontRenderer.drawString("Voltage: " + (int) this.tileEntity.getVoltage(), 95, 60, 4210752); - this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + public void initGui() { + super.initGui(); + Keyboard.enableRepeatEvents(true); + this.controlList.clear(); + int wid = (this.width - this.xSize) / 2; + int hig = (this.height - this.ySize) / 2; + this.controlList.add(new GuiButton(0, wid + 112, hig + 32, 44,19, "Toggle")); + for(int i = 1; i < this.tileEntity.onOff.length; i++) + { + this.controlList.add(new GuiButtonImage(i, wid + 17 + i*18, hig + 17, 0)); + } + } + + public void updateScreen() { + super.updateScreen(); } /** - * Draw the background layer for the - * GuiContainer (everything behind the items) + * Fired when a control is clicked. This is the equivalent of + * ActionListener.actionPerformed(ActionEvent e). + */ + protected void actionPerformed(GuiButton button) + { + if(button.id < 5) + { + this.tileEntity.changeOnOff(button.id); + } + super.actionPerformed(button); + } + + protected void keyTyped(char par1, int par2) { + super.keyTyped(par1, par2); + } + + protected void mouseClicked(int par1, int par2, int par3) { + super.mouseClicked(par1, par2, par3); + } + + public void onGuiClosed() { + super.onGuiClosed(); + } + + /** + * Draw the foreground layer for the GuiContainer (everything in front of + * the items) */ @Override - protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) - { - int var4 = this.mc.renderEngine.getTexture(AssemblyLine.TEXTURE_PATH + "gui_ejector.png"); + protected void drawGuiContainerForegroundLayer(int par1, int par2) { + this.fontRenderer.drawString("Ejector Settings", 55, 6, 4210752); + this.fontRenderer.drawString( + "Voltage: " + (int) this.tileEntity.getVoltage(), 95, 60, + 4210752); + this.fontRenderer.drawString( + StatCollector.translateToLocal("container.inventory"), 8, + this.ySize - 96 + 2, 4210752); + } + + /** + * Draw the background layer for the GuiContainer (everything behind the + * items) + */ + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, + int par3) { + int var4 = this.mc.renderEngine.getTexture(AssemblyLine.TEXTURE_PATH + + "gui_ejector.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.renderEngine.bindTexture(var4); containerWidth = (this.width - this.xSize) / 2; containerHeight = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(containerWidth, containerHeight, 0, 0, this.xSize, this.ySize); + this.drawTexturedModalRect(containerWidth, containerHeight, 0, 0, + this.xSize, this.ySize); + + //GUI button changes + for(int i = 1; i < this.tileEntity.onOff.length; i++) + { + this.drawTexturedModalRect(containerWidth+17+i*18, containerHeight+17, 176, +(tileEntity.onOff[i] ? 12 : 0), 12, 12); + } + this.fontRenderer.drawString( + "Reject: "+(tileEntity.onOff[0] ? "Inv" : "Other"), containerWidth + 108, + containerHeight +22, 4210752); } } diff --git a/src/minecraft/assemblyline/textures/gui@.png b/src/minecraft/assemblyline/textures/gui@.png new file mode 100644 index 000000000..5755b10e5 Binary files /dev/null and b/src/minecraft/assemblyline/textures/gui@.png differ diff --git a/src/minecraft/assemblyline/textures/gui_ejector.png b/src/minecraft/assemblyline/textures/gui_ejector.png index b9b396faa..2123e869c 100644 Binary files a/src/minecraft/assemblyline/textures/gui_ejector.png and b/src/minecraft/assemblyline/textures/gui_ejector.png differ