fishing_event/src/main/java/com/alttd/fishingevent/objects/RarityManager.java

43 lines
1.4 KiB
Java

package com.alttd.fishingevent.objects;
import java.util.*;
public class RarityManager {
private final HashMap<FishType, SortedSet<Rarity>> rarityMap;
private final HashMap<FishType, Integer> rarityChanceMap;
public RarityManager(Set<Rarity> rarities) {
rarityMap = new HashMap<>();
rarities.forEach(rarity ->
rarity.fishTypes().forEach(fishType ->
rarityMap.computeIfAbsent(fishType, k -> new TreeSet<>(Comparator.comparing(Rarity::rarityValue))).add(rarity)
)
);
rarityChanceMap = new HashMap<>();
rarities.forEach(rarity ->
rarity.fishTypes().forEach(fishType ->
rarityChanceMap.compute(fishType, (k, v) -> v == null ? rarity.chance() : v + rarity.chance())
)
);
}
public Optional<Rarity> getRarityFromNumber(FishType fishType, int random) {
SortedSet<Rarity> rarities = rarityMap.get(fishType);
if (rarities == null)
return Optional.empty();
for (Rarity rarity : rarities) {
random -= rarity.chance();
if (random <= 0)
return Optional.of(rarity);
}
return Optional.empty();
}
public int getMaxChanceRange(FishType fishType) {
return rarityChanceMap.getOrDefault(fishType, 0);
}
}