From c25ea819262e739bd4a7232b87364c5801727655 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 3 Jun 2020 22:40:43 -0400 Subject: [PATCH] Better UI for certain dialogs --- core/src/mindustry/content/Blocks.java | 2 +- .../ui/dialogs/CustomGameDialog.java | 2 +- core/src/mindustry/ui/dialogs/LoadDialog.java | 47 ++++++++++--------- core/src/mindustry/ui/dialogs/MapsDialog.java | 3 +- core/src/mindustry/ui/dialogs/SaveDialog.java | 7 +-- .../ui/dialogs/SchematicsDialog.java | 4 +- 6 files changed, 34 insertions(+), 31 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 7865fd3f92..45622dd30c 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -675,7 +675,7 @@ public class Blocks implements ContentList{ }}; disassembler = new Separator("disassembler"){{ - requirements(Category.crafting, ItemStack.with(Items.graphite, 150, Items.titanium, 100, Items.silicon, 150, Items.surgealloy, 70)); + requirements(Category.crafting, ItemStack.with(Items.graphite, 140, Items.titanium, 100, Items.silicon, 150, Items.surgealloy, 70)); results = ItemStack.with( Items.sand, 4, Items.graphite, 2, diff --git a/core/src/mindustry/ui/dialogs/CustomGameDialog.java b/core/src/mindustry/ui/dialogs/CustomGameDialog.java index e9667270b8..1d7aa2d07b 100644 --- a/core/src/mindustry/ui/dialogs/CustomGameDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomGameDialog.java @@ -38,7 +38,7 @@ public class CustomGameDialog extends BaseDialog{ ScrollPane pane = new ScrollPane(maps); pane.setFadeScrollBars(false); - int maxwidth = Mathf.clamp((int)(Core.graphics.getWidth() / Scl.scl(200)), 1, 8); + int maxwidth = Math.max((int)(Core.graphics.getWidth() / Scl.scl(210)), 1); float images = 146f; int i = 0; diff --git a/core/src/mindustry/ui/dialogs/LoadDialog.java b/core/src/mindustry/ui/dialogs/LoadDialog.java index c74580e9a6..9231f1f289 100644 --- a/core/src/mindustry/ui/dialogs/LoadDialog.java +++ b/core/src/mindustry/ui/dialogs/LoadDialog.java @@ -31,12 +31,11 @@ public class LoadDialog extends BaseDialog{ super(title); setup(); - shown(() -> { - setup(); - Time.runTask(2f, () -> Core.scene.setScrollFocus(pane)); - }); + shown(this::setup); + onResize(this::setup); addCloseButton(); + addSetup(); } protected void setup(){ @@ -47,16 +46,22 @@ public class LoadDialog extends BaseDialog{ pane.setFadeScrollBars(false); pane.setScrollingDisabled(true, false); - slots.marginRight(24); + slots.marginRight(24).marginLeft(20f); Time.runTask(2f, () -> Core.scene.setScrollFocus(pane)); Array array = control.saves.getSaveSlots(); array.sort((slot, other) -> -Long.compare(slot.getTimestamp(), other.getTimestamp())); + int maxwidth = Math.max((int)(Core.graphics.getWidth() / Scl.scl(470)), 1); + int i = 0; + boolean any = false; + for(SaveSlot slot : array){ if(slot.isHidden()) continue; + any = true; + TextButton button = new TextButton("", Styles.cleart); button.getLabel().remove(); button.clearChildren(); @@ -97,8 +102,8 @@ public class LoadDialog extends BaseDialog{ String color = "[lightgray]"; TextureRegion def = Core.atlas.find("nomap"); - button.left().add(new BorderImage(def, 4f)).update(i -> { - TextureRegionDrawable draw = (TextureRegionDrawable)i.getDrawable(); + button.left().add(new BorderImage(def, 4f)).update(im -> { + TextureRegionDrawable draw = (TextureRegionDrawable)im.getDrawable(); if(draw.getRegion().getTexture().isDisposed()){ draw.setRegion(def); } @@ -107,7 +112,7 @@ public class LoadDialog extends BaseDialog{ if(draw.getRegion() == def && text != null){ draw.setRegion(new TextureRegion(text)); } - i.setScaling(Scaling.fit); + im.setScaling(Scaling.fit); }).left().size(160f).padRight(6); button.table(meta -> { @@ -128,27 +133,23 @@ public class LoadDialog extends BaseDialog{ modifyButton(button, slot); - slots.add(button).uniformX().fillX().pad(4).padRight(-4).margin(10f).row(); + slots.add(button).uniformX().fillX().pad(4).padRight(8f).margin(10f); + + if(++i % maxwidth == 0){ + slots.row(); + } + } + + if(!any){ + slots.button("$save.none", () -> {}).disabled(true).fillX().margin(20f).minWidth(340f).height(80f).pad(4f); } cont.add(pane); - - addSetup(); } public void addSetup(){ - boolean valids = false; - for(SaveSlot slot : control.saves.getSaveSlots()) if(!slot.isHidden()) valids = true; - if(!valids){ - slots.row(); - slots.button("$save.none", () -> { - }).disabled(true).fillX().margin(20f).minWidth(340f).height(80f).pad(4f); - } - - slots.row(); - - slots.button("$save.import", Icon.add, () -> { + buttons.button("$save.import", Icon.add, () -> { platform.showFileChooser(true, saveExtension, file -> { if(SaveIO.isSaveValid(file)){ try{ @@ -162,7 +163,7 @@ public class LoadDialog extends BaseDialog{ ui.showErrorMessage("$save.import.invalid"); } }); - }).fillX().margin(10f).minWidth(300f).height(70f).pad(4f).padRight(-4); + }).fillX().margin(10f); } public void runLoadSave(SaveSlot slot){ diff --git a/core/src/mindustry/ui/dialogs/MapsDialog.java b/core/src/mindustry/ui/dialogs/MapsDialog.java index 5a2f4aab34..66d502c8c7 100644 --- a/core/src/mindustry/ui/dialogs/MapsDialog.java +++ b/core/src/mindustry/ui/dialogs/MapsDialog.java @@ -3,7 +3,6 @@ package mindustry.ui.dialogs; import arc.*; import arc.graphics.*; import arc.input.*; -import arc.math.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.util.*; @@ -124,7 +123,7 @@ public class MapsDialog extends BaseDialog{ ScrollPane pane = new ScrollPane(maps); pane.setFadeScrollBars(false); - int maxwidth = Mathf.clamp((int)(Core.graphics.getWidth() / Scl.scl(230)), 1, 8); + int maxwidth = Math.max((int)(Core.graphics.getWidth() / Scl.scl(230)), 1); float mapsize = 200f; int i = 0; diff --git a/core/src/mindustry/ui/dialogs/SaveDialog.java b/core/src/mindustry/ui/dialogs/SaveDialog.java index b48dd6fe39..9292e2527b 100644 --- a/core/src/mindustry/ui/dialogs/SaveDialog.java +++ b/core/src/mindustry/ui/dialogs/SaveDialog.java @@ -20,16 +20,17 @@ public class SaveDialog extends LoadDialog{ }); } + @Override public void addSetup(){ - slots.row(); - slots.button("$save.new", Icon.add, () -> + + buttons.button("$save.new", Icon.add, () -> ui.showTextInput("$save", "$save.newslot", 30, "", text -> { ui.loadAnd("$saving", () -> { control.saves.addSave(text); Core.app.post(() -> Core.app.post(this::setup)); }); }) - ).fillX().margin(10f).minWidth(300f).height(70f).pad(4f).padRight(-4); + ).fillX().margin(10f); } @Override diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index eda28a1fb1..3628ff3f14 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -69,6 +69,8 @@ public class SchematicsDialog extends BaseDialog{ }); rebuildPane[0] = () -> { + int maxwidth = Math.max((int)(Core.graphics.getWidth() / Scl.scl(230)), 1); + t.clear(); int i = 0; String regex = "[`~!@#$%^&*()-_=+[{]}|;:'\",<.>/?]"; @@ -150,7 +152,7 @@ public class SchematicsDialog extends BaseDialog{ sel[0].getStyle().up = Tex.pane; - if(++i % (mobile ? Core.graphics.isPortrait() ? 2 : 3 : 4) == 0){ + if(++i % maxwidth == 0){ t.row(); } }