package io.jexiletools.es.model; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import net.thirdy.blackmarket.fxcontrols.LabelAndImageDisplayable; public enum Currencies implements LabelAndImageDisplayable { // CEV rates from http://exiletools.com/rates chaos("1", "Chaos Orb", "/images/Currency/CurrencyRerollRare.png"), none("0", "NONE", null), fuse("0.500", "Orb of Fusing" , "/images/Currency/CurrencyRerollSocketLinks.png"), alt("0.062", "Orb of Alteration", "/images/Currency/CurrencyRerollMagic.png"), alch("0.500", "Orb of Alchemy", "/images/Currency/CurrencyUpgradeToRare.png"), ex("40.000", "Exalted Orb", "/images/Currency/CurrencyAddModToRare.png"), unknown("0", "Unknown", "/images/Currency/questionmark.png"), cart("0.333", "Cartographers Chisel", "/images/Currency/CurrencyMapQuality.png"), jew("0.125", "Jewellers Orb", "/images/Currency/CurrencyRerollSocketNumbers.png"), regal("2.000", "Regal Orb", "/images/Currency/CurrencyUpgradeMagicToRare.png"), chance("0.143", "Orb of Chance", "/images/Currency/CurrencyUpgradeRandomly.png"), gcp("2.000", "Gemcutters Prism", "/images/Currency/CurrencyGemQuality.png"), chrom("0.067", "Chromatic Orb", "/images/Currency/CurrencyRerollSocketColours.png"), regret("1.000", "Orb of Regret", "/images/Currency/CurrencyPassiveSkillRefund.png"), divine("17.000", "Divine Orb", "/images/Currency/CurrencyModValues.png"), scour("0.500", "Orb of Scouring", "/images/Currency/CurrencyConvertToNormal.png"), vaal("1.000", "Vaal Orb", "/images/Currency/CurrencyVaal.png"), mirror("100", "Mirror of Kalandra", "/images/Currency/CurrencyDuplicate.png"), id("0.006", "Scroll of Identity", "/images/Currency/CurrencyIdentification.png"), bless("0.750", "Blessed Orb", "/images/Currency/CurrencyImplicitMod.png"); // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyAddModToMagic.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyAddModToRare.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyArmourQuality.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyConvertToNormal.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyDuplicate.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyFlaskQuality.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyGemQuality.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyIdentification.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyIdentificationFragment.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyImplicitMod.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyImprint.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyImprintOrb.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyMapQuality.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyModValues.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyPassiveSkillRefund.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyPortal.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRerollMagic.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRerollMagicShard.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRerollRare.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRerollSocketColours.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRerollSocketLinks.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRerollSocketNumbers.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyRhoaFeather.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyUpgradeMagicToRare.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyUpgradeRandomly.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyUpgradeToMagic.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyUpgradeToMagicShard.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyUpgradeToRare.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyUpgradeToRareShard.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyVaal.png // http://webcdn.pathofexile.com/image/Art/2DItems/Currency/CurrencyWeaponQuality.png private String displayName; private String icon; private BigDecimal cev; Currencies(String cev, String displayName, String icon) { this.cev = new BigDecimal(cev); this.displayName = displayName; this.icon = icon; } public Double cevOf(BigDecimal d){ return cev.multiply(d).setScale(2, RoundingMode.CEILING).doubleValue(); } public Double cevOf(Double d){ return cevOf(new BigDecimal(d.toString())); } public String displayName() { return displayName; } public Optional<String> icon() { return Optional.ofNullable(icon); } @Override public String toString() { return displayName; } public static Currencies fromDisplayName(String displayName) { return Arrays.asList(values()) .stream() .filter(e -> e.displayName.equalsIgnoreCase(displayName)) .findFirst() .orElseGet(() -> Currencies.unknown); } public static List<String> validDisplayNames() { return Arrays.asList(values()).stream() .filter(c -> c != none && c != unknown) .map(c -> c.displayName()) .collect(Collectors.toList()); } }