package hunternif.mc.atlas.client.gui; import hunternif.mc.atlas.util.ExportImageUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; public enum ExportProgressOverlay { INSTANCE; @SubscribeEvent @SideOnly(Side.CLIENT) public void draw(RenderGameOverlayEvent.Post event) { int x = event.getResolution().getScaledWidth() - 40, y = event.getResolution().getScaledHeight() - 20, barWidth = 50, barHeight = 2; ExportUpdateListener l = ExportUpdateListener.INSTANCE; if(event.getType() != ElementType.ALL || !ExportImageUtil.isExporting) return; FontRenderer font = Minecraft.getMinecraft().fontRenderer; int s = 2; GlStateManager.scale(1.0/s, 1.0/s, 1); int headerWidth = font.getStringWidth(l.header); font.drawStringWithShadow(l.header, ( x )*s -headerWidth/2, ( y )*s - 14, 0xffffff); int statusWidth = font.getStringWidth(l.status); font.drawStringWithShadow(l.status, ( x )*s -statusWidth/2, ( y )*s, 0xffffff); GlStateManager.scale(s, s, 1); y += 7; x -= barWidth/2; double p = l.currentProgress/l.maxProgress; if(l.maxProgress < 0) p = 0; GlStateManager.disableTexture2D(); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vb = tessellator.getBuffer(); vb.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); vb.pos(x, y, 0) .color(0.5f, 0.5f, 0.5f, 1).endVertex(); vb.pos(x, y+barHeight, 0) .color(0.5f, 0.5f, 0.5f, 1).endVertex(); vb.pos(x+barWidth, y+barHeight, 0) .color(0.5f, 0.5f, 0.5f, 1).endVertex(); vb.pos(x+barWidth, y, 0) .color(0.5f, 0.5f, 0.5f, 1).endVertex(); vb.pos(x, y, 0) .color(0.5f, 1, 0.5f, 1).endVertex(); vb.pos(x, y+barHeight, 0) .color(0.5f, 1, 0.5f, 1).endVertex(); vb.pos(x+barWidth*p, y+barHeight, 0).color(0.5f, 1, 0.5f, 1).endVertex(); vb.pos(x+barWidth*p, y, 0) .color(0.5f, 1, 0.5f, 1).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); } }