From e28dbfad69d91968a3d8742d49429929e8f08f83 Mon Sep 17 00:00:00 2001 From: Luna <16821808+l-Luna@users.noreply.github.com> Date: Thu, 11 Aug 2022 16:36:10 +0100 Subject: [PATCH] Community server search (#7305) * basic community server search * normalise capitalisation * localise "Search:" --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/ui/dialogs/JoinDialog.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index e1c7a888ee..261e094248 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -168,6 +168,7 @@ mod.scripts.disable = Your device does not support mods with scripts. You must d about.button = About name = Name: noname = Pick a[accent] player name[] first. +search = Search: planetmap = Planet Map launchcore = Launch Core filename = File Name: diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index d00b74633b..9b0ce4947a 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -40,6 +40,8 @@ public class JoinDialog extends BaseDialog{ int lastPort; Task ping; + String serverSearch = ""; + public JoinDialog(){ super("@joingame"); @@ -395,6 +397,15 @@ public class JoinDialog extends BaseDialog{ global.clear(); global.background(null); + + global.table(t -> { + t.add("@search").padRight(10); + t.field(serverSearch, text -> + serverSearch = text.trim().replaceAll(" +", " ").toLowerCase() + ).grow().pad(8); + t.button(Icon.zoom, Styles.emptyi, this::refreshCommunity).size(54f); + }).width(targetWidth()).height(70f).pad(4).row(); + for(int i = 0; i < defaultServers.size; i ++){ ServerGroup group = defaultServers.get((i + defaultServers.size/2) % defaultServers.size); boolean hidden = group.hidden(); @@ -411,6 +422,15 @@ public class JoinDialog extends BaseDialog{ net.pingHost(resaddress, resport, res -> { if(refreshes != cur) return; + if(!serverSearch.isEmpty()){ + if(!(group.name.toLowerCase().contains(serverSearch) + || res.name.toLowerCase().contains(serverSearch) + || res.description.toLowerCase().contains(serverSearch) + || res.mapname.toLowerCase().contains(serverSearch) + || (res.modeName != null && res.modeName.toLowerCase().contains(serverSearch)))) + return; + } + //add header if(groupTable[0] == null){ global.table(t -> groupTable[0] = t).row();