package micdoodle8.mods.galacticraft.core.client.gui.screen;
import micdoodle8.mods.galacticraft.core.Constants;
import micdoodle8.mods.galacticraft.core.util.ClientUtil;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;
public abstract class GuiStarBackground extends GuiScreen
{
private static final ResourceLocation backgroundTexture = new ResourceLocation(Constants.ASSET_PREFIX, "textures/gui/stars.png");
private static final ResourceLocation blackTexture = new ResourceLocation(Constants.ASSET_PREFIX, "textures/gui/black.png");
public void drawBlackBackground()
{
final ScaledResolution var5 = ClientUtil.getScaledRes(this.mc, this.mc.displayWidth, this.mc.displayHeight);
final int var6 = var5.getScaledWidth();
final int var7 = var5.getScaledHeight();
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_ALPHA_TEST);
this.mc.getTextureManager().bindTexture(GuiStarBackground.blackTexture);
final Tessellator tess = Tessellator.getInstance();
WorldRenderer worldRenderer = tess.getWorldRenderer();
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
worldRenderer.pos(0.0D, var7, -90.0D).tex(0.0D, 1.0D).endVertex();
worldRenderer.pos(var6, var7, -90.0D).tex(1.0D, 1.0D).endVertex();
worldRenderer.pos(var6, 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
worldRenderer.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
tess.draw();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
private void drawPanorama2(float par1)
{
final Tessellator tess = Tessellator.getInstance();
WorldRenderer worldRenderer = tess.getWorldRenderer();
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPushMatrix();
GL11.glLoadIdentity();
GLU.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPushMatrix();
GL11.glLoadIdentity();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
final byte var5 = 1;
for (int var6 = 0; var6 < var5 * var5; ++var6)
{
GL11.glPushMatrix();
final float var7 = ((float) (var6 % var5) / (float) var5 - 0.5F) / 128.0F;
final float var8 = ((float) (var6 / var5) / (float) var5 - 0.5F) / 128.0F;
final float var9 = 0.0F;
float mY;
float mX;
if (Mouse.getY() < this.height)
{
mY = (-this.height + Mouse.getY()) / 100F;
}
else
{
mY = (-this.height + Mouse.getY()) / 100F;
}
mX = (this.width - Mouse.getX()) / 100F;
this.doCustomTranslation(0, var7, var8, var9, mX, mY);
for (int var10 = 0; var10 < 9; ++var10)
{
GL11.glPushMatrix();
if (var10 == 1)
{
GL11.glTranslatef(1.96F, 0.0F, 0.0F);
}
if (var10 == 2)
{
GL11.glTranslatef(-1.96F, 0.0F, 0.0F);
}
if (var10 == 3)
{
GL11.glTranslatef(0.0F, 1.96F, 0.0F);
}
if (var10 == 4)
{
GL11.glTranslatef(0.0F, -1.96F, 0.0F);
}
if (var10 == 5)
{
GL11.glTranslatef(-1.96F, -1.96F, 0.0F);
}
if (var10 == 6)
{
GL11.glTranslatef(-1.96F, 1.96F, 0.0F);
}
if (var10 == 7)
{
GL11.glTranslatef(1.96F, -1.96F, 0.0F);
}
if (var10 == 8)
{
GL11.glTranslatef(1.96F, 1.96F, 0.0F);
}
this.mc.getTextureManager().bindTexture(GuiStarBackground.backgroundTexture);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
worldRenderer.pos(-1.0D, -1.0D, 1.0D).tex(0.0F + 1, 0.0F + 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
worldRenderer.pos(1.0D, -1.0D, 1.0D).tex(1.0F - 1, 0.0F + 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
worldRenderer.pos(1.0D, 1.0D, 1.0D).tex(1.0F - 1, 1.0F - 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
worldRenderer.pos(-1.0D, 1.0D, 1.0D).tex(0.0F + 1, 1.0F - 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
tess.draw();
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPopMatrix();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_DEPTH_TEST);
}
private void drawPanorama(float par1)
{
final Tessellator tess = Tessellator.getInstance();
WorldRenderer worldRenderer = tess.getWorldRenderer();
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPushMatrix();
GL11.glLoadIdentity();
GLU.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPushMatrix();
GL11.glLoadIdentity();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
final byte var5 = 1;
for (int var6 = 0; var6 < var5 * var5; ++var6)
{
GL11.glPushMatrix();
final float var7 = ((float) (var6 % var5) / (float) var5 - 0.5F) / 64.0F;
final float var8 = ((float) (var6 / var5) / (float) var5 - 0.5F) / 64.0F;
final float var9 = 0.0F;
float mY;
float mX;
if (Mouse.getY() < this.height)
{
mY = (-this.height + Mouse.getY()) / 100F;
}
else
{
mY = (-this.height + Mouse.getY()) / 100F;
}
mX = (this.width - Mouse.getX()) / 100F;
this.doCustomTranslation(1, var7, var8, var9, mX, mY);
GL11.glRotatef(MathHelper.sin(par1 / 1000.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(-par1 * 0.005F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(41, 0, 0, 1);
for (int var10 = 0; var10 < 6; ++var10)
{
GL11.glPushMatrix();
if (var10 == 1)
{
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
}
if (var10 == 2)
{
GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
}
if (var10 == 3)
{
GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
}
if (var10 == 4)
{
GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
}
if (var10 == 5)
{
GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
}
this.mc.getTextureManager().bindTexture(GuiStarBackground.backgroundTexture);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
worldRenderer.pos(-1.0D, -1.0D, 1.0D).tex(0.0F + 1, 0.0F + 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
worldRenderer.pos(1.0D, -1.0D, 1.0D).tex(1.0F - 1, 0.0F + 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
worldRenderer.pos(1.0D, 1.0D, 1.0D).tex(1.0F - 1, 1.0F - 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
worldRenderer.pos(-1.0D, 1.0D, 1.0D).tex(0.0F + 1, 1.0F - 1).color(1.0F, 1.0F, 1.0F, 1.0F / (var6 + 1)).endVertex();
tess.draw();
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPopMatrix();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_DEPTH_TEST);
}
private void rotateAndBlurSkybox()
{
this.mc.getTextureManager().bindTexture(GuiStarBackground.backgroundTexture);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColorMask(true, true, true, false);
GL11.glPushMatrix();
GL11.glPopMatrix();
GL11.glColorMask(true, true, true, true);
}
public void renderSkybox()
{
GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
GL11.glPushMatrix();
GL11.glScalef(1.0F, 0.0F, 1.0F);
this.drawPanorama(1);
this.drawPanorama2(1);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_TEXTURE_2D);
this.rotateAndBlurSkybox();
final Tessellator tess = Tessellator.getInstance();
WorldRenderer worldRenderer = tess.getWorldRenderer();
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
final float var5 = this.width > this.height ? 120.0F / this.width : 120.0F / this.height;
final float var6 = this.height * var5 / 256.0F;
final float var7 = this.width * var5 / 256.0F;
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
final int var8 = this.width;
final int var9 = this.height;
worldRenderer.pos(0.0D, var9, this.zLevel).tex(0.5F - var6, 0.5F + var7).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
worldRenderer.pos(var8, var9, this.zLevel).tex(0.5F - var6, 0.5F - var7).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
worldRenderer.pos(var8, 0.0D, this.zLevel).tex(0.5F + var6, 0.5F - var7).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
worldRenderer.pos(0.0D, 0.0D, this.zLevel).tex(0.5F + var6, 0.5F + var7).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
tess.draw();
GL11.glPopMatrix();
}
public abstract void doCustomTranslation(int type, float coord1, float coord2, float coord3, float mX, float mY);
}