blob: fe6c097505935b657d7d6f4e02f242db074ca177 [file] [log] [blame] [raw]
package li.cil.oc.client.gui
import li.cil.oc.Config
import li.cil.oc.common.container
import li.cil.oc.common.tileentity
import net.minecraft.client.gui.inventory.GuiContainer
import net.minecraft.client.renderer.Tessellator
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.inventory.Slot
import net.minecraft.util.ResourceLocation
import net.minecraft.util.StatCollector
import org.lwjgl.opengl.GL11
class Computer(inventory: InventoryPlayer, val tileEntity: tileentity.Computer) extends GuiContainer(new container.Computer(inventory, tileEntity)) {
private val background = new ResourceLocation(Config.resourceDomain, "textures/gui/computer.png")
private val iconPsu = new ResourceLocation(Config.resourceDomain, "textures/gui/icon_psu.png")
private val iconPci = new ResourceLocation(Config.resourceDomain, "textures/gui/icon_pci.png")
private val iconRam = new ResourceLocation(Config.resourceDomain, "textures/gui/icon_ram.png")
private val iconHdd = new ResourceLocation(Config.resourceDomain, "textures/gui/icon_hdd.png")
private val icons = Array(iconPsu, iconPci, iconPci, iconPci, iconRam, iconRam, iconHdd, iconHdd)
private var (x, y) = (0, 0)
override def initGui() = {
super.initGui()
x = (width - xSize) / 2
y = (height - ySize) / 2
}
override def drawSlotInventory(slot: Slot) = {
super.drawSlotInventory(slot)
if (slot.slotNumber < 8 && !slot.getHasStack)
drawSlotIcon(slot, icons(slot.slotNumber))
}
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
fontRenderer.drawString(
StatCollector.translateToLocal("oc.container.computer"),
8, 6, 0x404040)
fontRenderer.drawString(
StatCollector.translateToLocal("container.inventory"),
8, ySize - 96 + 2, 0x404040)
}
override def drawGuiContainerBackgroundLayer(dt: Float, mouseX: Int, mouseY: Int) = {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F)
mc.renderEngine.bindTexture(background)
drawTexturedModalRect(x, y, 0, 0, xSize, ySize)
}
override def doesGuiPauseGame = false
private def drawSlotIcon(slot: Slot, icon: ResourceLocation) = {
GL11.glPushAttrib(0xFFFFFF)
GL11.glDisable(GL11.GL_LIGHTING)
GL11.glDisable(GL11.GL_DEPTH_TEST)
GL11.glEnable(GL11.GL_BLEND)
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
GL11.glColor4f(1, 1, 1, 0.25f)
mc.renderEngine.bindTexture(icon)
val t = Tessellator.instance
t.startDrawingQuads()
t.addVertexWithUV(slot.xDisplayPosition, slot.yDisplayPosition + 16, zLevel, 0, 1)
t.addVertexWithUV(slot.xDisplayPosition + 16, slot.yDisplayPosition + 16, zLevel, 1, 1)
t.addVertexWithUV(slot.xDisplayPosition + 16, slot.yDisplayPosition, zLevel, 1, 0)
t.addVertexWithUV(slot.xDisplayPosition, slot.yDisplayPosition, zLevel, 0, 0)
t.draw()
GL11.glPopAttrib()
}
}