From 7b4d488b1105232112de3d6b59733c8e5bc35610 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 16 Aug 2021 20:06:50 -0400 Subject: [PATCH] UI cleanup --- .../mindustry/editor/MapGenerateDialog.java | 4 +- core/src/mindustry/editor/WaveGraph.java | 2 +- core/src/mindustry/editor/WaveInfoDialog.java | 2 +- core/src/mindustry/logic/LStatement.java | 2 +- core/src/mindustry/ui/ItemsDisplay.java | 2 +- core/src/mindustry/ui/SearchBar.java | 55 +----- .../ui/dialogs/CustomRulesDialog.java | 2 +- .../ui/dialogs/LaunchLoadoutDialog.java | 2 +- core/src/mindustry/ui/dialogs/ModsDialog.java | 167 ++++++++++-------- .../mindustry/ui/dialogs/PlanetDialog.java | 2 +- .../ui/dialogs/SchematicsDialog.java | 6 +- .../ui/fragments/PlayerListFragment.java | 2 +- gradle.properties | 2 +- 13 files changed, 110 insertions(+), 140 deletions(-) diff --git a/core/src/mindustry/editor/MapGenerateDialog.java b/core/src/mindustry/editor/MapGenerateDialog.java index e0dd326e6c..c1a25b4e6d 100644 --- a/core/src/mindustry/editor/MapGenerateDialog.java +++ b/core/src/mindustry/editor/MapGenerateDialog.java @@ -232,7 +232,7 @@ public class MapGenerateDialog extends BaseDialog{ }else{ Core.scene.setScrollFocus(null); } - }).grow().uniformX().get().setScrollingDisabled(true, false); + }).grow().uniformX().scrollX(false); }).grow(); buffer1 = create(); @@ -350,7 +350,7 @@ public class MapGenerateDialog extends BaseDialog{ update(); selection.hide(); }).with(Table::left).get().getLabelCell().growX().left().padLeft(5).labelAlign(Align.left); - }).get().setScrollingDisabled(true, false); + }).scrollX(false); selection.addCloseButton(); selection.show(); diff --git a/core/src/mindustry/editor/WaveGraph.java b/core/src/mindustry/editor/WaveGraph.java index 4f9562836d..13c6021d93 100644 --- a/core/src/mindustry/editor/WaveGraph.java +++ b/core/src/mindustry/editor/WaveGraph.java @@ -189,7 +189,7 @@ public class WaveGraph extends Table{ for(UnitType o : hidden) used.remove(o); }).update(b -> b.setChecked(hidden.contains(type))); } - }).get().setScrollingDisabled(false, true); + }).scrollY(false); for(UnitType type : hidden){ used.remove(type); diff --git a/core/src/mindustry/editor/WaveInfoDialog.java b/core/src/mindustry/editor/WaveInfoDialog.java index d83fa11f3e..3d1307b9d0 100644 --- a/core/src/mindustry/editor/WaveInfoDialog.java +++ b/core/src/mindustry/editor/WaveInfoDialog.java @@ -129,7 +129,7 @@ public class WaveInfoDialog extends BaseDialog{ cont.clear(); cont.stack(new Table(Tex.clear, main -> { - main.pane(t -> table = t).growX().growY().padRight(8f).get().setScrollingDisabled(true, false); + main.pane(t -> table = t).growX().growY().padRight(8f).scrollX(false); main.row(); main.button("@add", () -> { if(groups == null) groups = new Seq<>(); diff --git a/core/src/mindustry/logic/LStatement.java b/core/src/mindustry/logic/LStatement.java index e418b3a814..9368a9a8b1 100644 --- a/core/src/mindustry/logic/LStatement.java +++ b/core/src/mindustry/logic/LStatement.java @@ -175,7 +175,7 @@ public abstract class LStatement{ t.top().pane(inner -> { inner.top(); hideCons.get(inner, hide); - }).pad(0f).top().get().setScrollingDisabled(true, false); + }).pad(0f).top().scrollX(false); t.pack(); } diff --git a/core/src/mindustry/ui/ItemsDisplay.java b/core/src/mindustry/ui/ItemsDisplay.java index 375aaffe57..ce3e05a30c 100644 --- a/core/src/mindustry/ui/ItemsDisplay.java +++ b/core/src/mindustry/ui/ItemsDisplay.java @@ -50,7 +50,7 @@ public class ItemsDisplay extends Table{ label.actions(Actions.color(Color.white, 0.75f, Interp.fade)); } } - }).get().setScrollingDisabled(true, false), false).setDuration(0.3f); + }).scrollX(false), false).setDuration(0.3f); c.button("@globalitems", Icon.downOpen, Styles.clearTogglet, col::toggle).update(t -> { t.setChecked(col.isCollapsed()); diff --git a/core/src/mindustry/ui/SearchBar.java b/core/src/mindustry/ui/SearchBar.java index 8929f45266..8185fe746c 100644 --- a/core/src/mindustry/ui/SearchBar.java +++ b/core/src/mindustry/ui/SearchBar.java @@ -1,59 +1,6 @@ package mindustry.ui; -import arc.func.*; -import arc.graphics.*; -import arc.scene.ui.layout.*; -import arc.struct.*; -import mindustry.gen.*; - +//TODO remove, unlikely to be used anywhere else. public class SearchBar{ - public static Table add(Table parent, Seq list, Func queryf, - Func namef, Cons2 itemc, boolean show){ - Table[] pane = {null}; - - Cons rebuild = str -> { - String query = queryf.get(str); - - pane[0].clear(); - boolean any = false; - for(T item : list){ - if(query.isEmpty() || matches(query, namef.get(item))){ - any = true; - itemc.get(pane[0], item); - } - } - - if(!any){ - pane[0].add("@none.found").color(Color.lightGray).pad(4); - } - }; - - if(show){ - parent.table(search -> { - search.image(Icon.zoom).padRight(8f); - search.field("", rebuild).growX(); - }).fillX().padBottom(4); - } - - parent.row(); - parent.pane(table -> { - pane[0] = table; - rebuild.get(""); - }).get().setScrollingDisabled(true, false); - return pane[0]; - } - - public static Table add(Table parent, Seq list, Func queryf, Func namef, Cons2 itemc){ - return add(parent, list, queryf, namef, itemc, true); - } - - public static Table add(Table parent, Seq list, Func namef, Cons2 itemc, boolean show){ - return add(parent, list, String::toLowerCase, namef, itemc, show); - } - - /** Match a list item with the search query, case insensitive */ - public static boolean matches(String query, String name){ - return name != null && !name.isEmpty() && name.toLowerCase().contains(query); - } } diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 8ba462668c..b43fb01483 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -126,7 +126,7 @@ public class CustomRulesDialog extends BaseDialog{ void setup(){ cont.clear(); - cont.pane(m -> main = m).get().setScrollingDisabled(true, false); + cont.pane(m -> main = m).scrollX(false); main.margin(10f); main.button("@settings.reset", () -> { rules = resetter.get(); diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index d91ae8530a..30175e874c 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -131,7 +131,7 @@ public class LaunchLoadoutDialog extends BaseDialog{ } - }).growX().get().setScrollingDisabled(true, false); + }).growX().scrollX(false); cont.row(); cont.pane(items); diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index 578652fa7b..e83f45add2 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -69,7 +69,7 @@ public class ModsDialog extends BaseDialog{ browser.cont.pane(tablebrow -> { tablebrow.margin(10f).top(); browserTable = tablebrow; - }).get().setScrollingDisabled(true, false); + }).scrollX(false); browser.addCloseButton(); browser.onResize(this::rebuildBrowser); @@ -208,90 +208,113 @@ public class ModsDialog extends BaseDialog{ if(!mods.list().isEmpty()){ boolean[] anyDisabled = {false}; - SearchBar.add(cont, mods.list(), - mod -> mod.meta.displayName(), - (table, mod) -> { - if(!mod.enabled() && !anyDisabled[0] && mods.list().size > 0){ - anyDisabled[0] = true; - table.row(); - table.image().growX().height(4f).pad(6f).color(Pal.gray); - table.row(); - } + Table[] pane = {null}; - table.button(t -> { - t.top().left(); - t.margin(12f); + Cons rebuild = query -> { + pane[0].clear(); + boolean any = false; + for(LoadedMod item : mods.list()){ + if(Strings.matches(query, item.meta.displayName())){ + any = true; + if(!item.enabled() && !anyDisabled[0] && mods.list().size > 0){ + anyDisabled[0] = true; + pane[0].row(); + pane[0].image().growX().height(4f).pad(6f).color(Pal.gray).row(); + } - t.defaults().left().top(); - t.table(title -> { - title.left(); + pane[0].button(t -> { + t.top().left(); + t.margin(12f); - title.add(new BorderImage(){{ - if(mod.iconTexture != null){ - setDrawable(new TextureRegion(mod.iconTexture)); - }else{ - setDrawable(Tex.nomap); - } - border(Pal.accent); - }}).size(h - 8f).padTop(-8f).padLeft(-8f).padRight(8f); + t.defaults().left().top(); + t.table(title1 -> { + title1.left(); - title.table(text -> { - boolean hideDisabled = !mod.isSupported() || mod.hasUnmetDependencies() || mod.hasContentErrors(); + title1.add(new BorderImage(){{ + if(item.iconTexture != null){ + setDrawable(new TextureRegion(item.iconTexture)); + }else{ + setDrawable(Tex.nomap); + } + border(Pal.accent); + }}).size(h - 8f).padTop(-8f).padLeft(-8f).padRight(8f); - text.add("[accent]" + Strings.stripColors(mod.meta.displayName()) + "\n[lightgray]v" + Strings.stripColors(trimText(mod.meta.version)) + (mod.enabled() || hideDisabled ? "" : "\n" + Core.bundle.get("mod.disabled") + "")) + title1.table(text -> { + boolean hideDisabled = !item.isSupported() || item.hasUnmetDependencies() || item.hasContentErrors(); + + text.add("[accent]" + Strings.stripColors(item.meta.displayName()) + "\n[lightgray]v" + Strings.stripColors(trimText(item.meta.version)) + (item.enabled() || hideDisabled ? "" : "\n" + Core.bundle.get("mod.disabled") + "")) .wrap().top().width(300f).growX().left(); - text.row(); - - if(mod.isOutdated()){ - text.labelWrap("@mod.outdated").growX(); text.row(); - }else if(!mod.isSupported()){ - text.labelWrap(Core.bundle.format("mod.requiresversion", mod.meta.minGameVersion)).growX(); - text.row(); - }else if(mod.hasUnmetDependencies()){ - text.labelWrap(Core.bundle.format("mod.missingdependencies", mod.missingDependencies.toString(", "))).growX(); - t.row(); - }else if(mod.hasContentErrors()){ - text.labelWrap("@mod.erroredcontent").growX(); - text.row(); - }else if(mod.meta.hidden){ - text.labelWrap("@mod.multiplayer.compatible").growX(); - text.row(); - } - }).top().growX(); - title.add().growX(); - }).growX().growY().left(); + if(item.isOutdated()){ + text.labelWrap("@mod.outdated").growX(); + text.row(); + }else if(!item.isSupported()){ + text.labelWrap(Core.bundle.format("mod.requiresversion", item.meta.minGameVersion)).growX(); + text.row(); + }else if(item.hasUnmetDependencies()){ + text.labelWrap(Core.bundle.format("mod.missingdependencies", item.missingDependencies.toString(", "))).growX(); + t.row(); + }else if(item.hasContentErrors()){ + text.labelWrap("@mod.erroredcontent").growX(); + text.row(); + }else if(item.meta.hidden){ + text.labelWrap("@mod.multiplayer.compatible").growX(); + text.row(); + } + }).top().growX(); - t.table(right -> { - right.right(); - right.button(mod.enabled() ? Icon.downOpen : Icon.upOpen, Styles.clearPartiali, () -> { - mods.setEnabled(mod, !mod.enabled()); - setup(); - }).size(50f).disabled(!mod.isSupported()); + title1.add().growX(); + }).growX().growY().left(); - right.button(mod.hasSteamID() ? Icon.link : Icon.trash, Styles.clearPartiali, () -> { - if(!mod.hasSteamID()){ - ui.showConfirm("@confirm", "@mod.remove.confirm", () -> { - mods.removeMod(mod); - setup(); - }); - }else{ - platform.viewListing(mod); - } - }).size(50f); + t.table(right -> { + right.right(); + right.button(item.enabled() ? Icon.downOpen : Icon.upOpen, Styles.clearPartiali, () -> { + mods.setEnabled(item, !item.enabled()); + setup(); + }).size(50f).disabled(!item.isSupported()); - if(steam && !mod.hasSteamID()){ - right.row(); - right.button(Icon.export, Styles.clearPartiali, () -> { - platform.publish(mod); + right.button(item.hasSteamID() ? Icon.link : Icon.trash, Styles.clearPartiali, () -> { + if(!item.hasSteamID()){ + ui.showConfirm("@confirm", "@mod.remove.confirm", () -> { + mods.removeMod(item); + setup(); + }); + }else{ + platform.viewListing(item); + } }).size(50f); - } - }).growX().right().padRight(-8f).padTop(-8f); - }, Styles.clearPartialt, () -> showMod(mod)).size(w, h).growX().pad(4f); - table.row(); - }, !mobile || Core.graphics.isPortrait()).margin(10f).top(); + + if(steam && !item.hasSteamID()){ + right.row(); + right.button(Icon.export, Styles.clearPartiali, () -> { + platform.publish(item); + }).size(50f); + } + }).growX().right().padRight(-8f).padTop(-8f); + }, Styles.clearPartialt, () -> showMod(item)).size(w, h).growX().pad(4f); + pane[0].row(); + } + } + + if(!any){ + pane[0].add("@none.found").color(Color.lightGray).pad(4); + } + }; + + if(!mobile || Core.graphics.isPortrait()){ + cont.table(search -> { + search.image(Icon.zoom).padRight(8f); + search.field("", rebuild).growX(); + }).fillX().padBottom(4); + } + + cont.row(); + cont.pane(table1 -> { + pane[0] = table1.margin(10f).top(); + rebuild.get(""); + }).scrollX(false); }else{ cont.table(Styles.black6, t -> t.add("@mods.none")).height(80f); } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index d53c607598..91a1dcf9da 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -620,7 +620,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ }; readd[0].run(); - }).grow().get().setScrollingDisabled(true, false); + }).grow().scrollX(false); } @Override diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index b61bd2fc1e..6662aaae41 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -97,7 +97,7 @@ public class SchematicsDialog extends BaseDialog{ } }; rebuildTags.run(); - }).fillX().height(tagh).get().setScrollingDisabled(false, true); + }).fillX().height(tagh).scrollY(false); in.button(Icon.pencilSmall, () -> { showAllTags(); @@ -246,7 +246,7 @@ public class SchematicsDialog extends BaseDialog{ }; rebuildPane.run(); - }).grow().get().setScrollingDisabled(true, false); + }).grow().scrollX(false); } public void showInfo(Schematic schematic){ @@ -573,7 +573,7 @@ public class SchematicsDialog extends BaseDialog{ }); } - }).fillX().left().height(tagh).get().setScrollingDisabled(false, true); + }).fillX().left().height(tagh).scrollY(false); t.button(Icon.addSmall, () -> { var dialog = new BaseDialog("@schematic.addtag"); diff --git a/core/src/mindustry/ui/fragments/PlayerListFragment.java b/core/src/mindustry/ui/fragments/PlayerListFragment.java index 32115c7cea..1139aad0ed 100644 --- a/core/src/mindustry/ui/fragments/PlayerListFragment.java +++ b/core/src/mindustry/ui/fragments/PlayerListFragment.java @@ -52,7 +52,7 @@ public class PlayerListFragment extends Fragment{ search.setMessageText(Core.bundle.get("players.search")); pane.row(); - pane.pane(content).grow().get().setScrollingDisabled(true, false); + pane.pane(content).grow().scrollX(false); pane.row(); pane.table(menu -> { diff --git a/gradle.properties b/gradle.properties index 5eb904834f..bdc683c767 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,4 +11,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works http.socketTimeout=80000 http.connectionTimeout=80000 -archash=0d9a003fc8f70b58f739bfacc3817b4c2522a8af +archash=6b77c7f375e42e3049ab60b47bd0654becb5eab4