| package li.cil.oc.client.gui |
| |
| import li.cil.oc.client.Textures |
| import li.cil.oc.common.{container, tileentity} |
| import net.minecraft.client.renderer.Tessellator |
| import net.minecraft.entity.player.InventoryPlayer |
| import net.minecraft.util.StatCollector |
| import org.lwjgl.opengl.GL11 |
| |
| class Disassembler(playerInventory: InventoryPlayer, val disassembler: tileentity.Disassembler) extends DynamicGuiContainer(new container.Disassembler(playerInventory, disassembler)) { |
| private def disassemblerContainer = inventorySlots.asInstanceOf[container.Disassembler] |
| |
| private val progressX = 8 |
| private val progressY = 65 |
| |
| private val progressWidth = 160 |
| private val progressHeight = 12 |
| |
| override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = { |
| fontRenderer.drawString( |
| StatCollector.translateToLocal(disassembler.getInvName), |
| 8, 6, 0x404040) |
| } |
| |
| override def drawGuiContainerBackgroundLayer(dt: Float, mouseX: Int, mouseY: Int) { |
| GL11.glColor3f(1, 1, 1) // Required under Linux. |
| super.drawGuiContainerBackgroundLayer(dt, mouseX, mouseY) |
| mc.renderEngine.bindTexture(Textures.guiDisassembler) |
| drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize) |
| drawProgress() |
| } |
| |
| private def drawProgress() { |
| val level = disassemblerContainer.disassemblyProgress / 100.0 |
| |
| val u0 = 0 |
| val u1 = progressWidth / 256.0 * level |
| val v0 = 1 - progressHeight / 256.0 |
| val v1 = 1 |
| val x = guiLeft + progressX |
| val y = guiTop + progressY |
| val w = progressWidth * level |
| |
| val t = Tessellator.instance |
| t.startDrawingQuads() |
| t.addVertexWithUV(x, y, zLevel, u0, v0) |
| t.addVertexWithUV(x, y + progressHeight, zLevel, u0, v1) |
| t.addVertexWithUV(x + w, y + progressHeight, zLevel, u1, v1) |
| t.addVertexWithUV(x + w, y, zLevel, u1, v0) |
| t.draw() |
| } |
| } |