summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-08-13 21:12:11 +0100
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-08-13 21:12:11 +0100
commit0ef6a00aa79f022e5bd56b3f77e6861bbecf6d94 (patch)
tree03966c83cd16d1912ec1596d83f89f251cc35f83 /src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java
parent921f1ba6f30e66c80c803618ebff496778e78970 (diff)
Added a new structure, a new curse, achievements, challenges, curses
entry in the guide; reworked liquids to be tile entities, cleaned the structures code, potion code and... you know what? I improved and changed so much stuff that I literally forgot what I did...
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java')
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java202
1 files changed, 146 insertions, 56 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java
index 59f5e91..752a2a7 100644
--- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java
+++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java
@@ -1,26 +1,36 @@
package darkknight.jewelrycraft.client.gui;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.inventory.GuiContainer;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.Container;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.world.World;
+import java.util.List;
+import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
+import darkknight.jewelrycraft.JewelrycraftMod;
import darkknight.jewelrycraft.api.Curse;
import darkknight.jewelrycraft.client.TabCurses;
import darkknight.jewelrycraft.client.TabRegistry;
import darkknight.jewelrycraft.events.KeyBindings;
+import darkknight.jewelrycraft.network.PacketSendClientPlayerInfo;
+import darkknight.jewelrycraft.network.PacketSendServerPlayerInfo;
+import darkknight.jewelrycraft.network.PacketSendServerPlayersInfo;
import darkknight.jewelrycraft.util.PlayerUtils;
import darkknight.jewelrycraft.util.Variables;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.inventory.Container;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import scala.swing.event.Key;
public class GuiCurseInfo extends GuiContainer {
World world;
EntityPlayer player;
ResourceLocation texture;
+ int page = 0, maxPages = 1;
+ String selectedCurse = "";
public GuiCurseInfo(Container container, World world, EntityPlayer player, ResourceLocation texture) {
super(container);
@@ -33,35 +43,6 @@ public class GuiCurseInfo extends GuiContainer {
public void drawScreen(int x, int y, float size) {
super.drawScreen(x, y, size);
- // this.drawGradientRect(0, 0, this.width, this.height, -1072689136,
- // -804253680);
- // int ind = 0;
- // if (player != null){
- // NBTTagCompound playerInfo =
- // PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
- // if (!playerInfo.hasNoTags()){
- // for(Curse curse: Curse.getCurseList())
- // if (playerInfo.getInteger(curse.getName()) > 0){
- // int halfDescrSize =
- // fontRendererObj.getStringWidth(curse.getDescription()) / 2;
- // mc.renderEngine.bindTexture(Variables.MISC_TEXTURE);
- // this.drawRect(0, 12 + ind * 34, this.width, 10 + (ind + 1) * 34,
- // 0xff000000);
- // mc.renderEngine.bindTexture(new ResourceLocation(Variables.MODID,
- // "textures/gui/" + curse.getTexturePack() + ".png"));
- // int tag = curse.getTextureID();
- // GL11.glColor3f(1F, 1F, 1F);
- // drawTexturedModalRect(this.width/2 - halfDescrSize - 35, 12 + ind *
- // 34, tag % 8 * 32, tag / 8 * 32, 32, 32);
- // this.drawString(fontRendererObj,
- // curse.getName().substring(curse.getName().indexOf(':') + 1),
- // this.width/2 - halfDescrSize, 20 + ind * 34, 0xffff00);
- // this.drawCenteredString(fontRendererObj, curse.getDescription(),
- // this.width/2, 30 + ind * 34, 0xffffff);
- // ind++;
- // }
- // }
- // }
}
@Override
@@ -69,21 +50,50 @@ public class GuiCurseInfo extends GuiContainer {
GL11.glColor3f(1, 1, 1);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
- int ind = 0;
- int size = 32;
if (player != null) {
NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
- if (!playerInfo.hasNoTags()) {
- for (Curse curse : Curse.getCurseList())
- if (playerInfo.getInteger(curse.getName()) > 0) {
+ if (!player.capabilities.isCreativeMode) maxPages = playerInfo.getInteger("activeCurses") / 5 - (playerInfo.getInteger("activeCurses") % 5 == 0 ? 1 : 0);
+ else maxPages = Curse.getCurseList().size() / 5 - (Curse.getCurseList().size() % 5 == 0 ? 1 : 0);
+ if (!player.capabilities.isCreativeMode) survivalCurses(playerInfo);
+ else creativeCurses(playerInfo);
+ if (playerInfo.hasKey("cursePoints")) this.drawString(fontRendererObj, "Curse points: " + playerInfo.getInteger("cursePoints") + " | Active curses: " + playerInfo.getInteger("activeCurses"), guiLeft, guiTop - 10, 0xffffff);
+ }
+ this.drawString(fontRendererObj, page + "/" + maxPages, guiLeft + 90, guiTop + 153, 0xffffff);
+ Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
+ drawTexturedModalRect(guiLeft + 5, guiTop + ySize - 14, 0, ySize, 13, 11);
+ drawTexturedModalRect(guiLeft + xSize - 38, guiTop + ySize - 14, 13, ySize, 13, 11);
+ }
+
+ private void survivalCurses(NBTTagCompound playerInfo) {
+ int size = 32;
+ int ind = 0;
+ if (!playerInfo.hasNoTags()) {
+ for (Curse curse : Curse.getCurseList()) {
+ if (playerInfo.getInteger(curse.getName()) > 0) {
+ if (ind >= page * 5 && ind < (page + 1) * 5) {
+ if (ind == page * 5 && selectedCurse == "") selectedCurse = curse.getName();
mc.renderEngine.bindTexture(Variables.MISC_TEXTURE);
- drawTexturedModalRect(guiLeft + 43, guiTop + 5 + (size - 8) * ind, 0, 32, 112, 22);
+ drawTexturedModalRect(guiLeft + 43, guiTop + 8 + (size - 8) * (ind - page * 5), 0, 32, 112, 22);
+ if (selectedCurse == curse.getName()) {
+ GL11.glPushMatrix();
+ GL11.glScalef(1.2f, 1.5f, 0f);
+ drawTexturedModalRect((int) (guiLeft / (1.2)) + 126, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 48, 16, 32, 16);
+ drawTexturedModalRect((int) (guiLeft / (1.2)) + 5, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 80, 16, 32, 16);
+ GL11.glPopMatrix();
+ GL11.glPushMatrix();
+ List descr = fontRendererObj.listFormattedStringToWidth(curse.getDescription(), 238);
+ GL11.glScalef(0.75F, 0.75F, 0F);
+ for (int i = 0; i < descr.size(); i++)
+ this.drawString(fontRendererObj, descr.get(i).toString(), (int) (guiLeft / 0.75F) + 12, (int) (guiTop / 0.75F) + 184 + i * 12 - (descr.size() > 1 ? 6 : 0), 0xffffff);
+ GL11.glPopMatrix();
+ }
if (playerInfo.getInteger(curse.getName()) == 2) {
+ mc.renderEngine.bindTexture(Variables.MISC_TEXTURE);
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1f, 1f, 1f, 0.5f);
- drawTexturedModalRect(guiLeft + 134, guiTop + 8 + (size - 8) * ind, 3 * 16, 0, 16, 16);
+ drawTexturedModalRect(guiLeft + 134, guiTop + 11 + (size - 8) * (ind - page * 5), 3 * 16, 0, 16, 16);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
}
@@ -94,28 +104,72 @@ public class GuiCurseInfo extends GuiContainer {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glScalef(0.5f, 0.5f, 0.0f);
- drawTexturedModalRect(guiLeft*2 + 100, guiTop*2 + 16 + ind * 48, tag % 8 * 32, tag / 8 * 32, 32, 32);
+ drawTexturedModalRect(guiLeft * 2 + 100, guiTop * 2 + 22 + (ind - page * 5) * 48, tag % 8 * 32, tag / 8 * 32, 32, 32);
GL11.glPopMatrix();
- this.drawString(fontRendererObj, curse.getDisplayName(), guiLeft + 70, guiTop + 12 + ind * (size - 8), 0xffffff);
- // this.drawCenteredString(fontRendererObj,
- // curse.getDescription(), this.width/2, 30 + ind * 34,
- // 0xffffff);
- ind++;
+ this.drawString(fontRendererObj, curse.getDisplayName(), guiLeft + 70, guiTop + 15 + (ind - page * 5) * (size - 8), 0xffffff);
}
+ ind++;
+ }
}
}
}
+ private void creativeCurses(NBTTagCompound playerInfo) {
+ int size = 32;
+ int ind = 0;
+ for (Curse curse : Curse.getCurseList()) {
+ if (ind >= page * 5 && ind < (page + 1) * 5) {
+ if (ind == page * 5 && selectedCurse == "") selectedCurse = curse.getName();
+ if (playerInfo.getInteger(curse.getName()) <= 0) {
+ GL11.glPushMatrix();
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glColor4f(1f, 1f, 1f, 0.5f);
+ }
+ mc.renderEngine.bindTexture(Variables.MISC_TEXTURE);
+ drawTexturedModalRect(guiLeft + 43, guiTop + 8 + (size - 8) * (ind - page * 5), 0, 32, 112, 22);
+ if (selectedCurse == curse.getName()) {
+ GL11.glPushMatrix();
+ GL11.glScalef(1.2f, 1.5f, 0f);
+ drawTexturedModalRect((int) (guiLeft / (1.2)) + 126, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 48, 16, 32, 16);
+ drawTexturedModalRect((int) (guiLeft / (1.2)) + 5, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 80, 16, 32, 16);
+ GL11.glPopMatrix();
+ GL11.glPushMatrix();
+ List descr = fontRendererObj.listFormattedStringToWidth(curse.getDescription(), 238);
+ GL11.glScalef(0.75F, 0.75F, 0F);
+ for (int i = 0; i < descr.size(); i++)
+ this.drawString(fontRendererObj, descr.get(i).toString(), (int) (guiLeft / 0.75F) + 12, (int) (guiTop / 0.75F) + 184 + i * 12 - (descr.size() > 1 ? 6 : 0), 0xffffff);
+ GL11.glPopMatrix();
+ }
+ int halfDescrSize = fontRendererObj.getStringWidth(curse.getDescription()) / 2;
+ mc.renderEngine.bindTexture(new ResourceLocation(Variables.MODID, "textures/gui/" + curse.getTexturePack() + ".png"));
+ int tag = curse.getTextureID();
+ GL11.glPushMatrix();
+ if (playerInfo.getInteger(curse.getName()) <= 0) GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
+ else GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ GL11.glDisable(GL11.GL_LIGHTING);
+ GL11.glScalef(0.5f, 0.5f, 0.0f);
+ drawTexturedModalRect(guiLeft * 2 + 100, guiTop * 2 + 22 + (ind - page * 5) * 48, tag % 8 * 32, tag / 8 * 32, 32, 32);
+ GL11.glPopMatrix();
+ this.drawString(fontRendererObj, curse.getDisplayName(), guiLeft + 70, guiTop + 15 + (ind - page * 5) * (size - 8), playerInfo.getInteger(curse.getName()) > 0 ? 0xffffffff : 0xaaffffff);
+ if (playerInfo.getInteger(curse.getName()) <= 0) {
+ GL11.glDisable(GL11.GL_BLEND);
+ GL11.glPopMatrix();
+ }
+ }
+ ind++;
+ }
+ }
+
@Override
public void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
}
-
- @Override
- protected void keyTyped(char charecter, int key)
- {
- super.keyTyped(charecter, key);
- if (key == KeyBindings.curses.getKeyCode()) mc.thePlayer.closeScreen();
- }
+
+ @Override
+ protected void keyTyped(char charecter, int key) {
+ super.keyTyped(charecter, key);
+ if (key == KeyBindings.curses.getKeyCode()) mc.thePlayer.closeScreen();
+ }
@Override
public void initGui() {
@@ -129,5 +183,41 @@ public class GuiCurseInfo extends GuiContainer {
protected void mouseClicked(int x, int y, int id) {
super.mouseClicked(x, y, id);
+ int ind = 0;
+ int size = 32;
+ if (player != null) {
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ for (Curse curse : Curse.getCurseList()) {
+ if (player.capabilities.isCreativeMode) {
+ if (x > (guiLeft + 43) && y > (guiTop + 8 + (size - 8) * (ind - page * 5)) && x < (guiLeft + 43 + 112) && y < (guiTop + 40 + (size - 8) * (ind - page * 5)) && ind >= page * 5 && ind < (page + 1) * 5) {
+ if (player.capabilities.isCreativeMode && isCtrlKeyDown() && playerInfo.getInteger(curse.getName()) > 0) {
+ playerInfo.setInteger(curse.getName(), 0);
+ playerInfo.setInteger("activeCurses", playerInfo.getInteger("activeCurses") - 1);
+ Curse.availableCurses.add(curse);
+ JewelrycraftMod.netWrapper.sendToServer(new PacketSendServerPlayerInfo("remove", curse.getName(), playerInfo));
+ JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo());
+ } else if (player.capabilities.isCreativeMode && isCtrlKeyDown() && playerInfo.getInteger(curse.getName()) <= 0) {
+ playerInfo.setInteger(curse.getName(), 1);
+ playerInfo.setInteger("activeCurses", playerInfo.getInteger("activeCurses") + 1);
+ Curse.availableCurses.remove(curse);
+ JewelrycraftMod.netWrapper.sendToServer(new PacketSendServerPlayerInfo("add", curse.getName(), playerInfo));
+ JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo());
+ } else selectedCurse = curse.getName();
+ }
+ ind++;
+ } else if (playerInfo.getInteger(curse.getName()) > 0) {
+ if (x > (guiLeft + 43) && y > (guiTop + 8 + (size - 8) * (ind - page * 5)) && x < (guiLeft + 43 + 112) && y < (guiTop + 40 + (size - 8) * (ind - page * 5)) && ind >= page * 5 && ind < (page + 1) * 5) selectedCurse = curse.getName();
+ ind++;
+ }
+ }
+ }
+ if (page > 0 && x > guiLeft + 5 && x < guiLeft + 18 && y > guiTop + ySize - 14 && y < guiTop + ySize - 3) {
+ page--;
+ selectedCurse = "";
+ }
+ if (page < maxPages && x > guiLeft + xSize - 38 && x < guiLeft + xSize - 25 && y > guiTop + ySize - 14 && y < guiTop + ySize - 3) {
+ page++;
+ selectedCurse = "";
+ }
}
} \ No newline at end of file