From e80a523073c2f47cee2e0e135bded05f029b7c20 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 13 Apr 2024 19:56:56 -0400 Subject: [PATCH] Rule dialog fixes --- .../ui/dialogs/CustomRulesDialog.java | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 40f7e1a642..191da9852e 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -3,7 +3,6 @@ package mindustry.ui.dialogs; import arc.*; import arc.func.*; import arc.graphics.*; -import arc.input.KeyCode; import arc.scene.style.*; import arc.scene.ui.*; import arc.scene.ui.ImageButton.*; @@ -193,9 +192,12 @@ public class CustomRulesDialog extends BaseDialog{ cont.clear(); cont.table(t -> { t.add("@search").padRight(10); - t.field(ruleSearch, text -> - ruleSearch = text.trim().replaceAll(" +", " ").toLowerCase() - ).grow().pad(8).get().keyDown(KeyCode.enter, this::setup); + var field = t.field(ruleSearch, text -> { + ruleSearch = text.trim().replaceAll(" +", " ").toLowerCase(); + setup(); + }).grow().pad(8).get(); + field.setCursorPosition(ruleSearch.length()); + Core.scene.setKeyboardFocus(field); t.button(Icon.cancel, Styles.emptyi, () -> { ruleSearch = ""; setup(); @@ -234,7 +236,7 @@ public class CustomRulesDialog extends BaseDialog{ setup(); } }, () -> rules.infiniteResources); - withInfo("@rules.onlydepositcore.info", () -> check("@rules.onlydepositcore", b -> rules.onlyDepositCore = b, () -> rules.onlyDepositCore)); + check("@rules.onlydepositcore", b -> rules.onlyDepositCore = b, () -> rules.onlyDepositCore); check("@rules.derelictrepair", b -> rules.derelictRepair = b, () -> rules.derelictRepair); check("@rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions); check("@rules.schematic", b -> rules.schematicsAllowed = b, () -> rules.schematicsAllowed); @@ -282,7 +284,7 @@ public class CustomRulesDialog extends BaseDialog{ category("enemy"); check("@rules.attack", b -> rules.attackMode = b, () -> rules.attackMode); check("@rules.corecapture", b -> rules.coreCapture = b, () -> rules.coreCapture); - withInfo("@rules.placerangecheck.info",() -> check("@rules.placerangecheck", b -> rules.placeRangeCheck = b, () -> rules.placeRangeCheck)); + check("@rules.placerangecheck", b -> rules.placeRangeCheck = b, () -> rules.placeRangeCheck); check("@rules.polygoncoreprotection", b -> rules.polygonCoreProtection = b, () -> rules.polygonCoreProtection); number("@rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200), () -> !rules.polygonCoreProtection); @@ -490,25 +492,13 @@ public class CustomRulesDialog extends BaseDialog{ public void check(String text, Boolc cons, Boolp prov, Boolp condition){ if(!Core.bundle.get(text.substring(1)).toLowerCase().contains(ruleSearch)) return; - current.check(text, cons).checked(prov.get()).update(a -> a.setDisabled(!condition.get())).padRight(100f).get().left(); - current.row(); - } - - public void withInfo(String info, Runnable add){ - Table wasCurrent = current; - current = new Table(); - current.left().defaults().fillX().left(); - - current.button(Icon.infoSmall, () -> ui.showInfo(info)).size(32f).padRight(10f); - add.run(); - - // rule does not match search pattern (runnable returned without adding anything) - if(current.getCells().size < 2){ - current.clear(); - }else{ - wasCurrent.add(current).row(); + String infoText = text.substring(1) + ".info"; + var cell = current.check(text, cons).checked(prov.get()).update(a -> a.setDisabled(!condition.get())).padRight(100f); + if(Core.bundle.has(infoText)){ + cell.tooltip(text + ".info"); } - current = wasCurrent; + cell.get().left(); + current.row(); } Cell field(Table table, float value, Floatc setter){