diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index b70e31fab8..b38afe1f9e 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -827,6 +827,11 @@ difficulty.normal = Normal difficulty.hard = Hard difficulty.eradication = Eradication +difficulty.enemyHealthMultiplier = Enemy Health: {0} +difficulty.enemySpawnMultiplier = Enemy Amount: {0} +difficulty.waveTimeMultiplier = Wave Timer: {0} +difficulty.nomodifiers = [lightgray](No modifiers) + planets = Planets planet.serpulo.name = Serpulo diff --git a/core/src/mindustry/game/Difficulty.java b/core/src/mindustry/game/Difficulty.java index fe657294ed..e6f34ef002 100644 --- a/core/src/mindustry/game/Difficulty.java +++ b/core/src/mindustry/game/Difficulty.java @@ -21,7 +21,24 @@ public enum Difficulty{ this.enemyHealthMultiplier = enemyHealthMultiplier; } + public String info(){ + String res = + (enemyHealthMultiplier == 1f ? "" : Core.bundle.format("difficulty.enemyHealthMultiplier", percentStat(enemyHealthMultiplier)) + "\n") + + (enemySpawnMultiplier == 1f ? "" : Core.bundle.format("difficulty.enemySpawnMultiplier", percentStat(enemySpawnMultiplier)) + "\n") + + (waveTimeMultiplier == 1f ? "" : Core.bundle.format("difficulty.waveTimeMultiplier", percentStatNeg(waveTimeMultiplier)) + "\n"); + + return res.isEmpty() ? Core.bundle.get("difficulty.nomodifiers") : res; + } + public String localized(){ return Core.bundle.get("difficulty." + name()); } + + static String percentStat(float val){ + return ((int)(val * 100 - 100) > 0 ? "[negstat]+" : "[stat]") + (int)(val * 100 - 100) + "%[]"; + } + + static String percentStatNeg(float val){ + return ((int)(val * 100 - 100) > 0 ? "[stat]+" : "[negstat]") + (int)(val * 100 - 100) + "%[]"; + } } diff --git a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java index 0082c2a552..e9e6e868e7 100644 --- a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java @@ -53,7 +53,8 @@ public class CampaignRulesDialog extends BaseDialog{ for(Difficulty diff : Difficulty.all){ t.button(diff.localized(), style, () -> { rules.difficulty = diff; - }).group(group).checked(b -> rules.difficulty == diff); + }).group(group).checked(b -> rules.difficulty == diff) + .tooltip(diff.info()); if(Core.graphics.isPortrait() && diff.ordinal() % 2 == 1){ t.row();