aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java
diff options
context:
space:
mode:
authorBuildTools <james.jenour@protonmail.com>2021-01-18 23:59:09 +0800
committerBuildTools <james.jenour@protonmail.com>2021-01-18 23:59:09 +0800
commit3255cfce951367c9303297205f64577ef1eac650 (patch)
treef43ceb889dc96aed62b378bdc4f5fe3fd3fd95ac /src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java
parentc9cc530adfb39085fe4b0f9a60e0ca6e4bbb8eb9 (diff)
downloadnotenoughupdates-3255cfce951367c9303297205f64577ef1eac650.tar.gz
notenoughupdates-3255cfce951367c9303297205f64577ef1eac650.tar.bz2
notenoughupdates-3255cfce951367c9303297205f64577ef1eac650.zip
gravy
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java88
1 files changed, 86 insertions, 2 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java
index 233e8819..75c9415c 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java
@@ -354,7 +354,24 @@ public class AccessoryBagOverlay {
missingInternal.sort(getItemComparator());
for(String internal : missingInternal) {
- missing.add(NotEnoughUpdates.INSTANCE.manager.jsonToStack(NotEnoughUpdates.INSTANCE.manager.getItemInformation().get(internal)));
+ boolean hasDup = false;
+
+ if(talisman_upgrades.has(internal)) {
+ JsonArray upgrades = talisman_upgrades.get(internal).getAsJsonArray();
+ for(int j=0; j<upgrades.size(); j++) {
+ String upgrade = upgrades.get(j).getAsString();
+ if(missingInternal.contains(upgrade)) {
+ hasDup = true;
+ break;
+ }
+ }
+ }
+
+ ItemStack stack = NotEnoughUpdates.INSTANCE.manager.jsonToStack(NotEnoughUpdates.INSTANCE.manager.getItemInformation().get(internal), false);
+ if(hasDup) {
+ stack.setStackDisplayName(stack.getDisplayName()+"*");
+ }
+ missing.add(stack);
}
}
if(missing.isEmpty()) {
@@ -375,9 +392,73 @@ public class AccessoryBagOverlay {
}
if(missing.size() > 11) {
- Utils.drawStringCenteredScaledMaxWidth("+" + (missing.size()-10) + " More",
+ Utils.drawStringCenteredScaledMaxWidth("Show All",
Minecraft.getMinecraft().fontRendererObj, x+40, y+16+121, false, 70,
new Color(80, 80, 80).getRGB());
+
+ final ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft());
+ final int scaledWidth = scaledresolution.getScaledWidth();
+ final int scaledHeight = scaledresolution.getScaledHeight();
+ int mouseX = Mouse.getX() * scaledWidth / Minecraft.getMinecraft().displayWidth;
+ int mouseY = scaledHeight - Mouse.getY() * scaledHeight / Minecraft.getMinecraft().displayHeight - 1;
+
+ if(mouseX > x && mouseX < x+80 &&
+ mouseY > y+11+121 && mouseY < y+21+121) {
+ List<String> text = new ArrayList<>();
+ StringBuilder line = new StringBuilder();
+ int leftMaxSize = 0;
+ int middleMaxSize = 0;
+ for(int i=0; i<missing.size(); i += 3) {
+ leftMaxSize = Math.max(leftMaxSize, Minecraft.getMinecraft().fontRendererObj.
+ getStringWidth(missing.get(i).getDisplayName()));
+ }
+ for(int i=1; i<missing.size(); i += 3) {
+ middleMaxSize = Math.max(middleMaxSize, Minecraft.getMinecraft().fontRendererObj.
+ getStringWidth(missing.get(i).getDisplayName()));
+ }
+ for(int i=0; i<missing.size(); i++) {
+ if(i % 3 == 0 && i > 0) {
+ text.add(line.toString());
+ line = new StringBuilder();
+ }
+ StringBuilder name = new StringBuilder(missing.get(i).getDisplayName());
+ int nameLen = Minecraft.getMinecraft().fontRendererObj.getStringWidth(name.toString());
+
+ int padSize = -1;
+ if(i % 3 == 0) padSize = leftMaxSize;
+ if(i % 3 == 1) padSize = middleMaxSize;
+ if(padSize > 0) {
+ float padNum = (padSize - nameLen) / 4.0f;
+ int remainder = (int)((padNum % 1) * 4);
+ while(padNum >= 1) {
+ if(remainder > 0) {
+ name.append(EnumChatFormatting.BOLD).append(" ");
+ remainder--;
+ } else {
+ name.append(EnumChatFormatting.RESET).append(" ");
+ }
+ padNum--;
+ }
+ }
+ line.append('\u00A7').append(Utils.getPrimaryColourCode(missing.get(i).getDisplayName()));
+ if(i < 9) {
+ line.append((char)('\u2776'+i)).append(' ');
+ } else {
+ line.append("\u2b24 ");
+ }
+ line.append(name);
+ if(i % 3 < 2) line.append(" ");
+ }
+
+ GlStateManager.pushMatrix();
+ GlStateManager.scale(2f/scaledresolution.getScaleFactor(), 2f/scaledresolution.getScaleFactor(), 1);
+ Utils.drawHoveringText(text,
+ mouseX*scaledresolution.getScaleFactor()/2,
+ mouseY*scaledresolution.getScaleFactor()/2,
+ scaledWidth*scaledresolution.getScaleFactor()/2,
+ scaledHeight*scaledresolution.getScaleFactor()/2, -1, Minecraft.getMinecraft().fontRendererObj);
+ GlStateManager.popMatrix();
+ }
}
}
}
@@ -465,6 +546,9 @@ public class AccessoryBagOverlay {
cost2 = NotEnoughUpdates.INSTANCE.manager.auctionManager.getCraftCost(o2).craftCost;
}
+ if(cost1 == -1 && cost2 == -1) return o1.compareTo(o2);
+ if(cost1 == -1) return 1;
+ if(cost2 == -1) return -1;
if(cost1 < cost2) return -1;
if(cost1 > cost2) return 1;