package minefantasy.mf2.client.gui;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import minefantasy.mf2.MineFantasyII;
import minefantasy.mf2.api.helpers.GuiHelper;
import minefantasy.mf2.api.knowledge.InformationBase;
import minefantasy.mf2.api.knowledge.InformationList;
import minefantasy.mf2.api.knowledge.InformationPage;
import minefantasy.mf2.api.knowledge.ResearchLogic;
import minefantasy.mf2.api.rpg.RPGElements;
import minefantasy.mf2.api.rpg.Skill;
import minefantasy.mf2.api.rpg.SkillList;
import minefantasy.mf2.item.ItemResearchScroll;
import minefantasy.mf2.knowledge.KnowledgeListMF;
import minefantasy.mf2.network.packet.ResearchRequest;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiOptionButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class GuiKnowledge extends GuiScreen
{
int offsetByX = 70;
int offsetByY = 0;
public int buyWidth = 225;
public int buyHeight = 72;
private RenderItem itemrender = new RenderItem();
private InformationBase selected = null;
private InformationBase highlighted = null;
private static final int field_146572_y = InformationList.minDisplayColumn * 24 - 112;
private static final int field_146571_z = InformationList.minDisplayRow * 24 - 112;
private static final int field_146559_A = InformationList.maxDisplayColumn * 24 - 77;
private static final int field_146560_B = InformationList.maxDisplayRow * 24 - 77;
private static final ResourceLocation screenTex = new ResourceLocation("minefantasy2:textures/gui/knowledge/knowledge.png");
private static final ResourceLocation buyTex = new ResourceLocation("minefantasy2:textures/gui/knowledge/purchase.png");
private static final ResourceLocation skillTex = new ResourceLocation("minefantasy2:textures/gui/knowledge/skilllist.png");
protected static int field_146555_f = 256;
protected static int field_146557_g = 202;
protected static int field_146563_h;
protected static int field_146564_i;
protected static float field_146570_r = 1.0F;
protected static double field_146569_s;
protected static double field_146568_t;
protected static double field_146567_u;
protected static double field_146566_v;
protected static double field_146565_w;
protected static double field_146573_x;
private static int field_146554_D;
private static boolean allDiscovered = true;
private static int currentPage = -1;
private GuiButton button;
private LinkedList<InformationBase> informationList = new LinkedList<InformationBase>();
private EntityPlayer player;
private boolean hasScroll = false;
private boolean canPurchase = false;
public GuiKnowledge(EntityPlayer user)
{
this.player = user;
short short1 = 141;
short short2 = 141;
GuiKnowledge.field_146569_s = GuiKnowledge.field_146567_u = GuiKnowledge.field_146565_w = KnowledgeListMF.gettingStarted.displayColumn * 24 - short1 / 2 - 12;
GuiKnowledge.field_146568_t = GuiKnowledge.field_146566_v = GuiKnowledge.field_146573_x = KnowledgeListMF.gettingStarted.displayRow * 24 - short2 / 2;
informationList.clear();
for (Object achievement : InformationList.knowledgeList)
{
if (!InformationPage.isInfoInPages((InformationBase)achievement))
{
informationList.add((InformationBase)achievement);
}
}
for(Object base: InformationList.knowledgeList.toArray())
{
if(!ResearchLogic.hasInfoUnlocked(user, (InformationBase)base))
{
allDiscovered = false;
break;
}
}
}
/**
* Adds the buttons (and other controls) to the screen in question.
*/
@Override
public void initGui()
{
int i1 = (this.width - GuiKnowledge.field_146555_f) / 2 + offsetByX;
int j1 = (this.height - GuiKnowledge.field_146557_g) / 2 + offsetByY;
this.buttonList.clear();
this.buttonList.add(new GuiOptionButton(1, this.width / 2 + 24, this.height / 2 + 101, 80, 20, I18n.format("gui.done", new Object[0])));
this.buttonList.add(button = new GuiButton(2, (width - field_146555_f) / 2 + 24, height / 2 + 101, 125, 20, InformationPage.getTitle(currentPage)));
int purchasex = i1 + (field_146555_f - buyWidth)/2;
int purchasey =j1 + (field_146557_g - buyHeight)/2;
//PURCHASE SCREEN
this.buttonList.add(new GuiOptionButton(3, purchasex + 19, purchasey + 47, 80, 20, I18n.format("gui.purchase", new Object[0])));
this.buttonList.add(new GuiOptionButton(4, purchasex + 125, purchasey + 47, 80, 20, I18n.format("gui.cancel", new Object[0])));
}
@Override
protected void mouseClicked(int x, int y, int button)
{
if(selected == null && button == 0 && highlighted != null)
{
if(ResearchLogic.hasInfoUnlocked(player, highlighted) && !highlighted.getPages().isEmpty())
{
player.openGui(MineFantasyII.instance, 1, player.worldObj, 0, highlighted.ID, 0);
}
else if(ResearchLogic.canPurchase(player, highlighted))
{
selected = highlighted;
setPurchaseAvailable(player);
}
}
super.mouseClicked(x, y, button);
}
@Override
protected void actionPerformed(GuiButton p_146284_1_)
{
if (p_146284_1_.id == 1)
{
this.mc.displayGuiScreen((GuiScreen)null);
}
if (selected == null && p_146284_1_.id == 2)
{
boolean hasDwarvern = ResearchLogic.hasInfoUnlocked(mc.thePlayer, KnowledgeListMF.dwarvernKnowledge);
boolean hasGnomish = ResearchLogic.hasInfoUnlocked(mc.thePlayer, KnowledgeListMF.gnomishKnowledge);
currentPage++;
if(currentPage == 5 && !hasDwarvern){currentPage++;};
if(currentPage == 6 && !hasGnomish){currentPage++;};
if (currentPage >= InformationPage.getInfoPages().size())
{
currentPage = -1;
}
button.displayString = InformationPage.getTitle(currentPage);
}
if (p_146284_1_.id == 3 && selected != null)
{
((EntityClientPlayerMP)player).sendQueue.addToSendQueue(new ResearchRequest(player, selected.ID).generatePacket());
selected = null;
}
if (p_146284_1_.id == 4 && selected != null)
{
selected = null;
}
}
/**
* Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
*/
@Override
protected void keyTyped(char p_73869_1_, int p_73869_2_)
{
if (p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode())
{
this.mc.displayGuiScreen((GuiScreen)null);
this.mc.setIngameFocus();
}
else
{
super.keyTyped(p_73869_1_, p_73869_2_);
}
}
/**
* Draws the screen and all the components in it.
*/
@Override
public void drawScreen(int mx, int my, float f)
{
{
int k;
if (selected == null && Mouse.isButtonDown(0))
{
k = (this.width - GuiKnowledge.field_146555_f) / 2 + offsetByX;
int l = (this.height - GuiKnowledge.field_146557_g) / 2 + offsetByY;
int i1 = k + 8;
int j1 = l + 17;
if ((GuiKnowledge.field_146554_D == 0 || GuiKnowledge.field_146554_D == 1) && mx >= i1 && mx < i1 + 224 && my >= j1 && my < j1 + 155)
{
if (GuiKnowledge.field_146554_D == 0)
{
GuiKnowledge.field_146554_D = 1;
}
else
{
GuiKnowledge.field_146567_u -= (mx - GuiKnowledge.field_146563_h) * GuiKnowledge.field_146570_r;
GuiKnowledge.field_146566_v -= (my - GuiKnowledge.field_146564_i) * GuiKnowledge.field_146570_r;
GuiKnowledge.field_146565_w = GuiKnowledge.field_146569_s = GuiKnowledge.field_146567_u;
GuiKnowledge.field_146573_x = GuiKnowledge.field_146568_t = GuiKnowledge.field_146566_v;
}
GuiKnowledge.field_146563_h = mx;
GuiKnowledge.field_146564_i = my;
}
}
else
{
GuiKnowledge.field_146554_D = 0;
}
k = Mouse.getDWheel();
float f4 = GuiKnowledge.field_146570_r;
if (k < 0)
{
GuiKnowledge.field_146570_r += 0.25F;
}
else if (k > 0)
{
GuiKnowledge.field_146570_r -= 0.25F;
}
GuiKnowledge.field_146570_r = MathHelper.clamp_float(GuiKnowledge.field_146570_r, 1.0F, 3.0F);
if (GuiKnowledge.field_146570_r != f4)
{
float f6 = f4 - GuiKnowledge.field_146570_r;
float f5 = f4 * GuiKnowledge.field_146555_f;
float f1 = f4 * GuiKnowledge.field_146557_g;
float f2 = GuiKnowledge.field_146570_r * GuiKnowledge.field_146555_f;
float f3 = GuiKnowledge.field_146570_r * GuiKnowledge.field_146557_g;
GuiKnowledge.field_146567_u -= (f2 - f5) * 0.5F;
GuiKnowledge.field_146566_v -= (f3 - f1) * 0.5F;
GuiKnowledge.field_146565_w = GuiKnowledge.field_146569_s = GuiKnowledge.field_146567_u;
GuiKnowledge.field_146573_x = GuiKnowledge.field_146568_t = GuiKnowledge.field_146566_v;
}
if (GuiKnowledge.field_146565_w < field_146572_y)
{
GuiKnowledge.field_146565_w = field_146572_y;
}
if (GuiKnowledge.field_146573_x < field_146571_z)
{
GuiKnowledge.field_146573_x = field_146571_z;
}
if (GuiKnowledge.field_146565_w >= field_146559_A)
{
GuiKnowledge.field_146565_w = field_146559_A - 1;
}
if (GuiKnowledge.field_146573_x >= field_146560_B)
{
GuiKnowledge.field_146573_x = field_146560_B - 1;
}
this.drawDefaultBackground();
this.renderMainPage(mx, my, f);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
this.drawOverlay();
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
}
if(buttonList.get(2) != null)
{
((GuiButton)buttonList.get(2)).visible = selected != null;
((GuiButton)buttonList.get(2)).enabled = selected != null && canPurchase ;
((GuiButton)buttonList.get(3)).visible = selected != null;
}
}
/**
* Called from the main game loop to update the screen.
*/
@Override
public void updateScreen()
{
{
GuiKnowledge.field_146569_s = GuiKnowledge.field_146567_u;
GuiKnowledge.field_146568_t = GuiKnowledge.field_146566_v;
double d0 = GuiKnowledge.field_146565_w - GuiKnowledge.field_146567_u;
double d1 = GuiKnowledge.field_146573_x - GuiKnowledge.field_146566_v;
if (d0 * d0 + d1 * d1 < 4.0D)
{
GuiKnowledge.field_146567_u += d0;
GuiKnowledge.field_146566_v += d1;
}
else
{
GuiKnowledge.field_146567_u += d0 * 0.85D;
GuiKnowledge.field_146566_v += d1 * 0.85D;
}
}
}
protected void drawOverlay()
{
int i = (this.width - GuiKnowledge.field_146555_f) / 2 + offsetByX;
int j = (this.height - GuiKnowledge.field_146557_g) / 2 + offsetByY;
this.fontRendererObj.drawString(I18n.format("gui.information", new Object[0]), i + 15, j + 5, 4210752);
}
protected void renderMainPage(int mx, int my, float f)
{
int k = MathHelper.floor_double(GuiKnowledge.field_146569_s + (GuiKnowledge.field_146567_u - GuiKnowledge.field_146569_s) * f);
int l = MathHelper.floor_double(GuiKnowledge.field_146568_t + (GuiKnowledge.field_146566_v - GuiKnowledge.field_146568_t) * f);
if (k < field_146572_y)
{
k = field_146572_y;
}
if (l < field_146571_z)
{
l = field_146571_z;
}
if (k >= field_146559_A)
{
k = field_146559_A - 1;
}
if (l >= field_146560_B)
{
l = field_146560_B - 1;
}
int i1 = (this.width - GuiKnowledge.field_146555_f) / 2 + offsetByX;
int j1 = (this.height - GuiKnowledge.field_146557_g) / 2 + offsetByY;
int k1 = i1 + 16;
int l1 = j1 + 17;
this.zLevel = 0.0F;
GL11.glDepthFunc(GL11.GL_GEQUAL);
GL11.glPushMatrix();
GL11.glTranslatef(k1, l1, -200.0F);
GL11.glScalef(1.0F / GuiKnowledge.field_146570_r, 1.0F / GuiKnowledge.field_146570_r, 0.0F);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
int i2 = k + 288 >> 4;
int j2 = l + 288 >> 4;
int k2 = (k + 288) % 16;
int l2 = (l + 288) % 16;
boolean flag = true;
boolean flag1 = true;
boolean flag2 = true;
boolean flag3 = true;
boolean flag4 = true;
Random random = new Random();
float f1 = 16.0F / GuiKnowledge.field_146570_r;
float f2 = 16.0F / GuiKnowledge.field_146570_r;
int i3;
int j3;
int k3;
for (i3 = 0; i3 * f1 - l2 < 155.0F; ++i3)
{
float f3 = 0.6F - (j2 + i3) / 25.0F * 0.3F;
GL11.glColor4f(f3, f3, f3, 1.0F);
for (j3 = 0; j3 * f2 - k2 < 224.0F; ++j3)
{
IIcon iicon = Blocks.planks.getIcon(0, 0);
this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
this.drawTexturedModelRectFromIcon(j3 * 16 - k2, i3 * 16 - l2, iicon, 16, 16);
}
}
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LEQUAL);
this.mc.getTextureManager().bindTexture(screenTex);
int researchVisibility;
int j4;
int l4;
List<InformationBase> achievementList = (currentPage == -1 ? informationList : InformationPage.getInfoPage(currentPage).getInfoList());
for (i3 = 0; i3 < achievementList.size(); ++i3)
{
InformationBase achievement1 = achievementList.get(i3);
if (achievement1.parentInfo != null && achievementList.contains(achievement1.parentInfo))
{
j3 = achievement1.displayColumn * 24 - k + 11;
k3 = achievement1.displayRow * 24 - l + 11;
l4 = achievement1.parentInfo.displayColumn * 24 - k + 11;
int l3 = achievement1.parentInfo.displayRow * 24 - l + 11;
boolean flag5 = ResearchLogic.hasInfoUnlocked(player, achievement1);
boolean flag6 = ResearchLogic.canUnlockInfo(player, achievement1);
researchVisibility = ResearchLogic.func_150874_c(player, achievement1);
if (researchVisibility <= getVisibleRange()[0])
{
j4 = -16777216;
if (flag5)
{
j4 = -6250336;
}
else if (flag6)
{
j4 = -16711936;
}
this.drawHorizontalLine(j3, l4, k3, j4);
this.drawVerticalLine(l4, k3, l3, j4);
if (j3 > l4)
{
this.drawTexturedModalRect(j3 - 11 - 7, k3 - 5, 114, 234, 7, 11);
}
else if (j3 < l4)
{
this.drawTexturedModalRect(j3 + 11, k3 - 5, 107, 234, 7, 11);
}
else if (k3 > l3)
{
this.drawTexturedModalRect(j3 - 5, k3 - 11 - 7, 96, 234, 11, 7);
}
else if (k3 < l3)
{
this.drawTexturedModalRect(j3 - 5, k3 + 11, 96, 241, 11, 7);
}
}
}
}
InformationBase achievement = null;
RenderItem renderitem = new RenderItem();
float f4 = (mx - k1) * GuiKnowledge.field_146570_r;
float f5 = (my - l1) * GuiKnowledge.field_146570_r;
RenderHelper.enableGUIStandardItemLighting();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
int i5;
int j5;
for (l4 = 0; l4 < achievementList.size(); ++l4)
{
InformationBase achievement2 = achievementList.get(l4);
i5 = achievement2.displayColumn * 24 - k;
j5 = achievement2.displayRow * 24 - l;
if (i5 >= -24 && j5 >= -24 && i5 <= 224.0F * GuiKnowledge.field_146570_r && j5 <= 155.0F * GuiKnowledge.field_146570_r)
{
researchVisibility = ResearchLogic.func_150874_c(player, achievement2);
float f6;
if (ResearchLogic.hasInfoUnlocked(player, achievement2))
{
f6 = 0.75F;
GL11.glColor4f(f6, f6, f6, 1.0F);
}
else if (ResearchLogic.canUnlockInfo(player, achievement2))
{
f6 = 1.0F;
GL11.glColor4f(0.5F, 1.0F, 0.5F, 1.0F);
}
else if (researchVisibility < getVisibleRange()[1])
{
f6 = 0.3F;
GL11.glColor4f(f6, f6, f6, 1.0F);
}
else if (researchVisibility == getVisibleRange()[1])
{
f6 = 0.2F;
GL11.glColor4f(f6, f6, f6, 1.0F);
}
else
{
if (researchVisibility != getVisibleRange()[2])
{
continue;
}
f6 = 0.1F;
GL11.glColor4f(f6, f6, f6, 1.0F);
}
this.mc.getTextureManager().bindTexture(screenTex);
GL11.glEnable(GL11.GL_BLEND);// Forge: Specifically enable blend because it is needed here. And we fix Generic RenderItem's leakage of it.
if (achievement2.getSpecial())
{
this.drawTexturedModalRect(i5 - 2, j5 - 2, 26, 202, 26, 26);
}
else if (achievement2.getPerk())
{
this.drawTexturedModalRect(i5 - 2, j5 - 2, 52, 202, 26, 26);
}
else
{
this.drawTexturedModalRect(i5 - 2, j5 - 2, 0, 202, 26, 26);
}
GL11.glDisable(GL11.GL_BLEND); //Forge: Cleanup states we set.
if (!ResearchLogic.canUnlockInfo(player, achievement2))
{
f6 = 0.1F;
GL11.glColor4f(f6, f6, f6, 1.0F);
renderitem.renderWithColor = false;
}
GL11.glDisable(GL11.GL_LIGHTING); //Forge: Make sure Lighting is disabled. Fixes MC-33065
GL11.glEnable(GL11.GL_CULL_FACE);
renderitem.renderItemAndEffectIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), achievement2.theItemStack, i5 + 3, j5 + 3);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_LIGHTING);
if (!ResearchLogic.canUnlockInfo(player, achievement2))
{
renderitem.renderWithColor = true;
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
if (f4 >= i5 && f4 <= i5 + 22 && f5 >= j5 && f5 <= j5 + 22)
{
achievement = achievement2;
}
}
}
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_BLEND);
GL11.glPopMatrix();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(screenTex);
this.drawTexturedModalRect(i1, j1, 0, 0, GuiKnowledge.field_146555_f, GuiKnowledge.field_146557_g);
this.zLevel = 0.0F;
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
if(selected != null)
{
int purchasex = i1 + (field_146555_f - buyWidth)/2;
int purchasey =j1 + (field_146557_g - buyHeight)/2;
renderPurchaseScreen(purchasex, purchasey, mx, my);
}
drawSkillList();
super.drawScreen(mx, my, f);
highlighted = achievement;
if (selected == null && achievement != null)
{
String s1 = achievement.getName();
String s2 = achievement.getDescription();
i5 = mx + 12;
j5 = my - 4;
researchVisibility = ResearchLogic.func_150874_c(player, achievement);
if (!ResearchLogic.canUnlockInfo(player, achievement))
{
String s;
int k4;
if (researchVisibility == 3)
{
s1 = I18n.format("achievement.unknown", new Object[0]);
j4 = Math.max(this.fontRendererObj.getStringWidth(s1), 120);
s = (new ChatComponentTranslation("achievement.requires", new Object[] {achievement.parentInfo.getName()})).getUnformattedText();
k4 = this.fontRendererObj.splitStringWidth(s, j4);
this.drawGradientRect(i5 - 3, j5 - 3, i5 + j4 + 3, j5 + k4 + 12 + 3, -1073741824, -1073741824);
this.fontRendererObj.drawSplitString(s, i5, j5 + 12, j4, -9416624);
}
else if (researchVisibility < 3)
{
j4 = Math.max(this.fontRendererObj.getStringWidth(s1), 120);
s = (new ChatComponentTranslation("achievement.requires", new Object[] {achievement.parentInfo.getName()})).getUnformattedText();
k4 = this.fontRendererObj.splitStringWidth(s, j4);
this.drawGradientRect(i5 - 3, j5 - 3, i5 + j4 + 3, j5 + k4 + 12 + 3, -1073741824, -1073741824);
this.fontRendererObj.drawSplitString(s, i5, j5 + 12, j4, -9416624);
}
else
{
s1 = null;
}
}
else
{
j4 = Math.max(this.fontRendererObj.getStringWidth(s1), 120);
int k5 = this.fontRendererObj.splitStringWidth(s2, j4);
if (ResearchLogic.hasInfoUnlocked(player, achievement) || ResearchLogic.canUnlockInfo(player, achievement))
{
k5 += 12;
}
this.drawGradientRect(i5 - 3, j5 - 3, i5 + j4 + 3, j5 + k5 + 3 + 12, -1073741824, -1073741824);
this.fontRendererObj.drawSplitString(s2, i5, j5 + 12, j4, -6250336);
if (ResearchLogic.hasInfoUnlocked(player, achievement))
{
this.fontRendererObj.drawStringWithShadow(I18n.format("information.discovered", new Object[0]), i5, j5 + k5 + 4, -7302913);
}
else if(ResearchLogic.canUnlockInfo(player, achievement))
{
this.fontRendererObj.drawStringWithShadow(StatCollector.translateToLocal("information.buy"), i5, j5 + k5 + 4, -7302913);
}
}
if (s1 != null)
{
this.fontRendererObj.drawStringWithShadow(s1, i5, j5, ResearchLogic.canUnlockInfo(player, achievement) ? (achievement.getSpecial() ? -128 : -1) : (achievement.getSpecial() ? -8355776 : -8355712));
}
}
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_LIGHTING);
RenderHelper.disableStandardItemLighting();
}
/**
* Returns true if this GUI should pause the game when it is displayed in single-player
*/
@Override
public boolean doesGuiPauseGame()
{
return false;
}
private int[] getVisibleRange()
{
return new int[]{1, 2, 3};
}
private void renderPurchaseScreen(int x, int y, int mx, int my)
{
if(selected != null)
{
String[] requirements = selected.getRequiredSkills();
int size = 0;
if(requirements != null)
{
size = requirements.length;
}
this.mc.getTextureManager().bindTexture(buyTex);
this.drawTexturedModalRect(x, y, 0, 0, buyWidth, 27);//Top
for(int a = 0; a < size; a++)
{
this.drawTexturedModalRect(x, y+27 + (a*19), 0, 27, buyWidth, 19);//Middle
}
this.drawTexturedModalRect(x, y+27 + (size*19), 0, 46, buyWidth, 26);//Bottom
if(buttonList.get(2) != null && buttonList.get(3) != null)
{
int j1 = (this.height - GuiKnowledge.field_146557_g) / 2;
int purchasey =j1 + (field_146557_g - buyHeight)/2;
int offset = -19;
if(requirements != null)
{
offset += (19*requirements.length);
}
((GuiButton)buttonList.get(2)).yPosition = purchasey + 47 + offset;
((GuiButton)buttonList.get(3)).yPosition = purchasey + 47 + offset;
}
int red = GuiHelper.getColourForRGB(220, 0, 0);
int white = 16777215;
mc.fontRenderer.drawString(selected.getName(), x+22, y+12, white, false);
if(hasScroll)
{
mc.fontRenderer.drawStringWithShadow(StatCollector.translateToLocal("knowledge.hasScroll"), x+20, y+32, red);
}
else
{
for(int a = 0; a < requirements.length; a ++)
{
boolean isUnlocked = selected.isUnlocked(a, mc.thePlayer);
String text = requirements[a];
mc.fontRenderer.drawStringWithShadow(text, x+20, y+32 + (a*19), isUnlocked ? white : red);
}
}
}
GL11.glColor3f(255, 255, 255);
}
private void setPurchaseAvailable(EntityPlayer user)
{
hasScroll = getHasScroll(user);
if(selected != null)
{
canPurchase = !hasScroll && selected.hasSkillsUnlocked(user);
}
else
{
canPurchase = false;
}
}
private boolean getHasScroll(EntityPlayer user)
{
if(selected == null || user == null)
{
return false;
}
int id = selected.ID;
for(int a = 0; a < user.inventory.getSizeInventory(); a++)
{
ItemStack slot = user.inventory.getStackInSlot(a);
if(slot != null && slot.getItem() instanceof ItemResearchScroll)
{
if(slot.getItemDamage() == id)
{
return true;
}
}
}
return false;
}
protected void drawSkillList()
{
GL11.glPushMatrix();
int skillWidth = 143;
int skillHeight = 156;
int x = (this.width - GuiKnowledge.field_146555_f) / 2 - skillWidth + offsetByX;
int y = (this.height - GuiKnowledge.field_146557_g) / 2 + offsetByY;
this.mc.getTextureManager().bindTexture(skillTex);
this.drawTexturedModalRect(x, y, 0, 0, skillWidth, skillHeight);
drawSkill(x+20, y+20, SkillList.artisanry);
drawSkill(x+20, y+44, SkillList.construction);
drawSkill(x+20, y+68, SkillList.provisioning);
drawSkill(x+20, y+92, SkillList.engineering);
drawSkill(x+20, y+116, SkillList.combat);
drawSkillName(x+20, y+20, SkillList.artisanry);
drawSkillName(x+20, y+44, SkillList.construction);
drawSkillName(x+20, y+68, SkillList.provisioning);
drawSkillName(x+20, y+92, SkillList.engineering);
drawSkillName(x+20, y+116, SkillList.combat);
GL11.glPopMatrix();
}
protected void drawSkill(int x, int y, Skill skill)
{
if(skill != null)
{
int level = RPGElements.getLevel(mc.thePlayer, skill);
int xp = skill.getXP(player)[0];
int max = skill.getXP(player)[1];
//this.mc.getTextureManager().bindTexture(skillTex);
float scale = (float)xp / (float)max;
this.drawTexturedModalRect(x+22, y+13, 0, 156, (int)(78F * scale), 5);
//mc.fontRenderer.drawString(skill.getDisplayName(), x+2, y+1, 0);
//mc.fontRenderer.drawString(""+level, x+1, y+10, 0);
}
}
protected void drawSkillName(int x, int y, Skill skill)
{
if(skill != null)
{
int level = RPGElements.getLevel(mc.thePlayer, skill);
mc.fontRenderer.drawString(skill.getDisplayName(), x+2, y+1, 0);
mc.fontRenderer.drawString(""+level, x+1, y+10, 0);
}
}
}