package net.minecraft.client.gui;
import com.google.common.collect.Lists;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Random;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.network.play.client.C16PacketClientStatus;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
import org.apache.commons.io.Charsets;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class GuiWinGame extends GuiScreen
{
private static final Logger logger = LogManager.getLogger();
private static final ResourceLocation field_146576_f = new ResourceLocation("textures/gui/title/minecraft.png");
private static final ResourceLocation field_146577_g = new ResourceLocation("textures/misc/vignette.png");
private int field_146581_h;
private List field_146582_i;
private int field_146579_r;
private float field_146578_s = 0.5F;
private static final String __OBFID = "CL_00000719";
/**
* Called from the main game loop to update the screen.
*/
public void updateScreen()
{
++this.field_146581_h;
float var1 = (float)(this.field_146579_r + this.height + this.height + 24) / this.field_146578_s;
if ((float)this.field_146581_h > var1)
{
this.sendRespawnPacket();
}
}
/**
* Fired when a key is typed (except F11 who toggle full screen). This is the equivalent of
* KeyListener.keyTyped(KeyEvent e). Args : character (character on the key), keyCode (lwjgl Keyboard key code)
*/
protected void keyTyped(char typedChar, int keyCode) throws IOException
{
if (keyCode == 1)
{
this.sendRespawnPacket();
}
}
private void sendRespawnPacket()
{
this.mc.thePlayer.sendQueue.addToSendQueue(new C16PacketClientStatus(C16PacketClientStatus.EnumState.PERFORM_RESPAWN));
this.mc.displayGuiScreen((GuiScreen)null);
}
/**
* Returns true if this GUI should pause the game when it is displayed in single-player
*/
public boolean doesGuiPauseGame()
{
return true;
}
/**
* Adds the buttons (and other controls) to the screen in question.
*/
public void initGui()
{
if (this.field_146582_i == null)
{
this.field_146582_i = Lists.newArrayList();
try
{
String var1 = "";
String var2 = "" + EnumChatFormatting.WHITE + EnumChatFormatting.OBFUSCATED + EnumChatFormatting.GREEN + EnumChatFormatting.AQUA;
short var3 = 274;
BufferedReader var4 = new BufferedReader(new InputStreamReader(this.mc.getResourceManager().getResource(new ResourceLocation("texts/end.txt")).getInputStream(), Charsets.UTF_8));
Random var5 = new Random(8124371L);
int var6;
while ((var1 = var4.readLine()) != null)
{
String var7;
String var8;
for (var1 = var1.replaceAll("PLAYERNAME", this.mc.getSession().getUsername()); var1.contains(var2); var1 = var7 + EnumChatFormatting.WHITE + EnumChatFormatting.OBFUSCATED + "XXXXXXXX".substring(0, var5.nextInt(4) + 3) + var8)
{
var6 = var1.indexOf(var2);
var7 = var1.substring(0, var6);
var8 = var1.substring(var6 + var2.length());
}
this.field_146582_i.addAll(this.mc.fontRendererObj.listFormattedStringToWidth(var1, var3));
this.field_146582_i.add("");
}
for (var6 = 0; var6 < 8; ++var6)
{
this.field_146582_i.add("");
}
var4 = new BufferedReader(new InputStreamReader(this.mc.getResourceManager().getResource(new ResourceLocation("texts/credits.txt")).getInputStream(), Charsets.UTF_8));
while ((var1 = var4.readLine()) != null)
{
var1 = var1.replaceAll("PLAYERNAME", this.mc.getSession().getUsername());
var1 = var1.replaceAll("\t", " ");
this.field_146582_i.addAll(this.mc.fontRendererObj.listFormattedStringToWidth(var1, var3));
this.field_146582_i.add("");
}
this.field_146579_r = this.field_146582_i.size() * 12;
}
catch (Exception var9)
{
logger.error("Couldn\'t load credits", var9);
}
}
}
private void drawWinGameScreen(int p_146575_1_, int p_146575_2_, float p_146575_3_)
{
Tessellator var4 = Tessellator.getInstance();
WorldRenderer var5 = var4.getWorldRenderer();
this.mc.getTextureManager().bindTexture(Gui.optionsBackground);
var5.startDrawingQuads();
var5.func_178960_a(1.0F, 1.0F, 1.0F, 1.0F);
int var6 = this.width;
float var7 = 0.0F - ((float)this.field_146581_h + p_146575_3_) * 0.5F * this.field_146578_s;
float var8 = (float)this.height - ((float)this.field_146581_h + p_146575_3_) * 0.5F * this.field_146578_s;
float var9 = 0.015625F;
float var10 = ((float)this.field_146581_h + p_146575_3_ - 0.0F) * 0.02F;
float var11 = (float)(this.field_146579_r + this.height + this.height + 24) / this.field_146578_s;
float var12 = (var11 - 20.0F - ((float)this.field_146581_h + p_146575_3_)) * 0.005F;
if (var12 < var10)
{
var10 = var12;
}
if (var10 > 1.0F)
{
var10 = 1.0F;
}
var10 *= var10;
var10 = var10 * 96.0F / 255.0F;
var5.func_178986_b(var10, var10, var10);
var5.addVertexWithUV(0.0D, (double)this.height, (double)this.zLevel, 0.0D, (double)(var7 * var9));
var5.addVertexWithUV((double)var6, (double)this.height, (double)this.zLevel, (double)((float)var6 * var9), (double)(var7 * var9));
var5.addVertexWithUV((double)var6, 0.0D, (double)this.zLevel, (double)((float)var6 * var9), (double)(var8 * var9));
var5.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, 0.0D, (double)(var8 * var9));
var4.draw();
}
/**
* Draws the screen and all the components in it. Args : mouseX, mouseY, renderPartialTicks
*/
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
this.drawWinGameScreen(mouseX, mouseY, partialTicks);
Tessellator var4 = Tessellator.getInstance();
WorldRenderer var5 = var4.getWorldRenderer();
short var6 = 274;
int var7 = this.width / 2 - var6 / 2;
int var8 = this.height + 50;
float var9 = -((float)this.field_146581_h + partialTicks) * this.field_146578_s;
GlStateManager.pushMatrix();
GlStateManager.translate(0.0F, var9, 0.0F);
this.mc.getTextureManager().bindTexture(field_146576_f);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(var7, var8, 0, 0, 155, 44);
this.drawTexturedModalRect(var7 + 155, var8, 0, 45, 155, 44);
var5.func_178991_c(16777215);
int var10 = var8 + 200;
int var11;
for (var11 = 0; var11 < this.field_146582_i.size(); ++var11)
{
if (var11 == this.field_146582_i.size() - 1)
{
float var12 = (float)var10 + var9 - (float)(this.height / 2 - 6);
if (var12 < 0.0F)
{
GlStateManager.translate(0.0F, -var12, 0.0F);
}
}
if ((float)var10 + var9 + 12.0F + 8.0F > 0.0F && (float)var10 + var9 < (float)this.height)
{
String var13 = (String)this.field_146582_i.get(var11);
if (var13.startsWith("[C]"))
{
this.fontRendererObj.func_175063_a(var13.substring(3), (float)(var7 + (var6 - this.fontRendererObj.getStringWidth(var13.substring(3))) / 2), (float)var10, 16777215);
}
else
{
this.fontRendererObj.fontRandom.setSeed((long)var11 * 4238972211L + (long)(this.field_146581_h / 4));
this.fontRendererObj.func_175063_a(var13, (float)var7, (float)var10, 16777215);
}
}
var10 += 12;
}
GlStateManager.popMatrix();
this.mc.getTextureManager().bindTexture(field_146577_g);
GlStateManager.enableBlend();
GlStateManager.blendFunc(0, 769);
var5.startDrawingQuads();
var5.func_178960_a(1.0F, 1.0F, 1.0F, 1.0F);
var11 = this.width;
int var14 = this.height;
var5.addVertexWithUV(0.0D, (double)var14, (double)this.zLevel, 0.0D, 1.0D);
var5.addVertexWithUV((double)var11, (double)var14, (double)this.zLevel, 1.0D, 1.0D);
var5.addVertexWithUV((double)var11, 0.0D, (double)this.zLevel, 1.0D, 0.0D);
var5.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, 0.0D, 0.0D);
var4.draw();
GlStateManager.disableBlend();
super.drawScreen(mouseX, mouseY, partialTicks);
}
}