Create a tier enum like:
Code:
enum UpgradeTier {
LOCKED(0),
TIER_1(100),
TIER_2(225),
TIER_3(350),
TIER_4(475),
TIER_5(600);
UpgradeTier(int killsRequired) {
this.killsRequired = killsRequired;
}
private final int killsRequired;
public int getKillsRequired() {
return killsRequired;
}
static UpgradeTier getTierForKills(int kills) {
// return highest tier for current # kills
}
}
then it's as simple as this:
Code:
final String locked = "blah weapon %s requires %d kills blah"
final String unlocked = "upgrade weapon %s to tier %d"
for (WeaponUpgrade wep : WeaponUpgrade.values()) {
int currentKills = player.upgrades.computeIfAbsent(wep.getUpgradeKey(), it -> 0);
UpgradeTier tier = UpgradeTier.getTierForKills(currentKills);
if (tier == UpgradeTier.values()[UpgradeTier.values().length - 1]) {
// send maxed out or whatever, no further upgrades.
} else {
// send locked / unlocked string with # of kills for next tier to unlock
player.send(new SendString(String.format(tier == UpgradeTier.LOCKED ? locked : unlocked, wep.getWeaponName(), UpgradeTier.values()[tier.ordinal() + 1].getKillsRequired())));
}
// update container
player.send(new SendItemOnInterfaceSlot(wep.getContainerId(), wep.getUpgradeItemId(), wep.getItemSlot()));
}