diff options
| author | BuildTools <james.jenour@protonmail.com> | 2021-01-18 23:59:09 +0800 |
|---|---|---|
| committer | BuildTools <james.jenour@protonmail.com> | 2021-01-18 23:59:09 +0800 |
| commit | 3255cfce951367c9303297205f64577ef1eac650 (patch) | |
| tree | f43ceb889dc96aed62b378bdc4f5fe3fd3fd95ac /src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java | |
| parent | c9cc530adfb39085fe4b0f9a60e0ca6e4bbb8eb9 (diff) | |
| download | notenoughupdates-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.java | 88 |
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; |
