From c02d603a7abad742f543cd42588d72963c0abd96 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 26 Dec 2020 11:39:58 -0500 Subject: [PATCH] Search bar cleanup --- core/assets/bundles/bundle.properties | 1 + .../mindustry/entities/comp/BuilderComp.java | 2 +- .../mindustry/entities/comp/TimerComp.java | 1 + core/src/mindustry/ui/SearchBar.java | 51 ++++++++++--------- core/src/mindustry/ui/dialogs/ModsDialog.java | 7 +-- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index f7a571615b..ca33ac045b 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -89,6 +89,7 @@ joingame = Join Game customgame = Custom Game newgame = New Game none = +none.found = [lightgray] minimap = Minimap position = Position close = Close diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index b85c2b05e7..5b065ef666 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -77,7 +77,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ if(plans.size > 1){ int total = 0; BuildPlan req; - while((dst((req = buildPlan()).tile()) > finalPlaceDst || shouldSkip(req, core)) && total < plans.size){ + while((!within((req = buildPlan()).tile(), finalPlaceDst) || shouldSkip(req, core)) && total < plans.size){ plans.removeFirst(); plans.addLast(req); total++; diff --git a/core/src/mindustry/entities/comp/TimerComp.java b/core/src/mindustry/entities/comp/TimerComp.java index 26c76646d0..8fec3b8896 100644 --- a/core/src/mindustry/entities/comp/TimerComp.java +++ b/core/src/mindustry/entities/comp/TimerComp.java @@ -8,6 +8,7 @@ abstract class TimerComp{ transient Interval timer = new Interval(6); public boolean timer(int index, float time){ + if(Float.isInfinite(time)) return false; return timer.get(index, time); } } diff --git a/core/src/mindustry/ui/SearchBar.java b/core/src/mindustry/ui/SearchBar.java index 162c18ac54..57d1977a9d 100644 --- a/core/src/mindustry/ui/SearchBar.java +++ b/core/src/mindustry/ui/SearchBar.java @@ -1,50 +1,55 @@ package mindustry.ui; import arc.func.*; +import arc.graphics.*; import arc.scene.ui.layout.*; import arc.struct.*; import mindustry.gen.*; public class SearchBar{ + public static Table add(Table parent, Seq list, Func queryf, - Func namef, Cons2 itemc, Cons> barc){ - Cons[] rebuild = new Cons[]{null}; + Func namef, Cons2 itemc, boolean show){ Table[] pane = {null}; - barc.get(parent.table(search -> { - rebuild[0] = str -> { - String query = queryf.get(str); + Cons rebuild = str -> { + String query = queryf.get(str); - pane[0].clear(); - list.each(item -> { - if(query.isEmpty() || matches(query, namef.get(item))){ - itemc.get(pane[0], item); - } - }); - }; + 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); + } + } - search.image(Icon.zoom).padRight(8f); - search.field("", rebuild[0]).growX(); - }).fillX().padBottom(4)); + 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[0].get(""); + rebuild.get(""); }); return pane[0]; } public static Table add(Table parent, Seq list, Func queryf, Func namef, Cons2 itemc){ - return add(parent, list, queryf, namef, itemc, c -> {}); + return add(parent, list, queryf, namef, itemc, true); } - public static Table add(Table parent, Seq list, Func namef, Cons2 itemc, Cons> barc){ - return add(parent, list, String::toLowerCase, namef, itemc, barc); - } - - public static Table add(Table parent, Seq list, Func namef, Cons2 itemc){ - return add(parent, list, String::toLowerCase, namef, itemc); + 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 */ diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index f73ada4959..75dbdca5c7 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -312,12 +312,7 @@ public class ModsDialog extends BaseDialog{ }).growX().right().padRight(-8f).padTop(-8f); }, Styles.clearPartialt, () -> showMod(mod)).size(w, h).growX().pad(4f); table.row(); - }, bar -> { - if(mobile && !Core.graphics.isPortrait()){ - //hide search bar on mobile, takes up too much space - bar.get().clear(); - } - }).margin(10f).top(); + }, !mobile || Core.graphics.isPortrait()).margin(10f).top(); }else{ cont.table(Styles.black6, t -> t.add("@mods.none")).height(80f); }