From 5651d1b023cde229939a54258d064a86f17b3691 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 5 Sep 2019 19:23:17 -0400 Subject: [PATCH] Support for built-in servers --- .../sprites/ui/icons/icon-fdroid.png | Bin 0 -> 1762 bytes core/src/io/anuke/mindustry/Vars.java | 3 +++ .../mindustry/entities/type/FlyingUnit.java | 2 +- .../src/io/anuke/mindustry/game/Tutorial.java | 4 ++-- .../mindustry/ui/dialogs/JoinDialog.java | 21 +++++++++++------- 5 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 core/assets-raw/sprites/ui/icons/icon-fdroid.png diff --git a/core/assets-raw/sprites/ui/icons/icon-fdroid.png b/core/assets-raw/sprites/ui/icons/icon-fdroid.png new file mode 100644 index 0000000000000000000000000000000000000000..24c7cb884d589dbf3e473c4fb4cb8db916bee7c9 GIT binary patch literal 1762 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1b4OJl#B|(Yh3I#>^X_+~x z3MG{VsS2qTnQ06R6}R4o=N3KD;Q4!A^Bac;6U*_3o3ru_j^9@=u$t@VZ#MbV`jt1X zvYp;E;ojtlx6a1@*Za=TCzd3>=vhe6CkrReR&BML^B?y-IlOOPa-8zssk?78w|N+x z+UYxej@FZpUs-vl@7X)m`t9_&HIh}4KaDiD86_L(sp~r*a`(HwSGz{d^loeM->~ON zi*B4-eEjzUhGdr;!eutCN8W4CpUM*FF|q4o%ux|ngXOPh-Fy5z?}9Dk2eaw}=f8XF ztuK&q)=yl@K1a{;=<^@BQ{LGs?OS{1yWH8QSMSSz|FL%B^;zn>q$V-PyySYNI>okG zNr87$ytjqu{*ImRHa|GC?-$=SHmBTk=66Jr6!vLcSm4$DOwPJ=heXAuq?C6j5+fJHdJm?p-hVKl|$%LiNmW?y=_g#qFexoWvC;6%4g_I`4fNSI;Wh_-Ymp;oTpC9CY|%n0R~s`$^+hfN}Nwpwr%~`cj?;G z6Yf24SzTN_7cF3$&v$}Lv90C3u5#5UEY{Q2TW{%=F4yc88$uVxD`wnT(kd36b*o5wZP^lke%o(X zwmy%mlC?=m;4V<+m93l-sP4Pu5|8mYlhS9AX|X4^s%o#9)2{8Wtg^thc< zNao>b^OO<4yQ4bw-S$0}3w|%(^U?U(oWSq0XDk=L>)ZK#k8NV^mA!XQsh!y8l+Yy` z^x>yt;%wac=MeoVY;;vVI0G0A5K^P$g{3o4j|xOY_S>z2Llxlkh^ ze)XhnPdD6M*6cWMV$K&+lN!BU3<5o(nY*6G`hVGQ_4fk(MasIXy@Auq_ z+xed3_3;b+3+0{d+v<4!>b9-vSsdhZX-ipZ+k{Q?+MuBmmH&MTZW^`?}{>nNqDCBf4sJ2r~(x=OCS zzh#|hX=PvV^zZxKr(~C`44b)fZ+`#0Ep6}qR~?!H49HuO2*Fv$}b;0!LlLjvZE-yF5Dodvoa~ z*;u?gzPq}AcX>mAzVX>t66_{-&4N33%s9EOYhieaa)&|M1$E=oGbS%lsX2b#mZ@fM z_eY)o#r1u0rs;+X3PR_N4sYo+?^tf0+x*$CuthX=>W?`UXO?ga*%!rr{Lx!{Ftst= z?MzA5JPRisv0D+D$zdj@k2D{xSoLy>eu_<)Wq#qcQ=!-PsMjZ2EMKovJolM_P{a`- zm5zV_SI*QM9T!(kPEvIJT`2#5!t3cLmQGmB;?~C+vcR$I?}PdeyQ8)3Eg!13K6ZHC z{kW!wVPWioz~VXYlaFW4VK|unz$^c!c4@-1$zP(pyX6@F-ac@&)I0cF!)e)s4<{%1 z-kjQG(pn=|VZS*46ch7yhx4|xrS_Sfsj=QA{dIovl&`igzCKy|bj6%^ Y+ePFq^_7P+FfcH9y85}Sb4q9e0Q>+lBLDyZ literal 0 HcmV?d00001 diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index ad684bc223..4fe137fed4 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -3,6 +3,7 @@ package io.anuke.mindustry; import io.anuke.arc.Application.*; import io.anuke.arc.*; import io.anuke.arc.assets.*; +import io.anuke.arc.collection.*; import io.anuke.arc.files.*; import io.anuke.arc.graphics.*; import io.anuke.arc.scene.ui.layout.*; @@ -43,6 +44,8 @@ public class Vars implements Loadable{ public static final String discordURL = "https://discord.gg/mindustry"; /** URL for sending crash reports to */ public static final String crashReportURL = "http://mins.us.to/report"; + /** list of built-in servers.*/ + public static final Array defaultServers = Array.with(/*"mins.us.to"*/); /** maximum distance between mine and core that supports automatic transferring */ public static final float mineTransferRange = 220f; /** team of the player by default */ diff --git a/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java b/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java index d02ad55ec1..95fb1821b9 100644 --- a/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java @@ -125,8 +125,8 @@ public abstract class FlyingUnit extends BaseUnit{ if(!Net.client()){ updateRotation(); - wobble(); } + wobble(); } @Override diff --git a/core/src/io/anuke/mindustry/game/Tutorial.java b/core/src/io/anuke/mindustry/game/Tutorial.java index a655af8cec..d099055220 100644 --- a/core/src/io/anuke/mindustry/game/Tutorial.java +++ b/core/src/io/anuke/mindustry/game/Tutorial.java @@ -188,13 +188,12 @@ public class Tutorial{ protected final String line = Core.bundle.has("tutorial." + name() + ".mobile") && mobile ? "tutorial." + name() + ".mobile" : "tutorial." + name(); protected final Function text; - protected final Array sentences; + protected Array sentences; protected final BooleanProvider done; TutorialStage(Function text, BooleanProvider done){ this.text = text; this.done = done; - this.sentences = Array.select(Core.bundle.get(line).split("\n"), s -> !s.isEmpty()); } TutorialStage(BooleanProvider done){ @@ -203,6 +202,7 @@ public class Tutorial{ /** displayed tutorial stage text.*/ public String text(){ + if(sentences == null) this.sentences = Array.select(Core.bundle.get(line).split("\n"), s -> !s.isEmpty()); String line = sentences.get(control.tutorial.sentence); return line.contains("{") ? text.get(line) : line; } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java index 473addf0ed..8b99c99795 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java @@ -176,6 +176,11 @@ public class JoinDialog extends FloatingDialog{ void setupServer(Server server, Host host){ server.lastHost = host; + server.content.clear(); + buildServer(host, server.content); + } + + void buildServer(Host host, Table content){ String versionString; if(host.version == -1){ @@ -192,9 +197,8 @@ public class JoinDialog extends FloatingDialog{ versionString = Core.bundle.format("server.version", host.version, host.versionType); } - server.content.clear(); - server.content.table(t -> { + content.table(t -> { t.add("[lightgray]" + host.name + " " + versionString).width(targetWidth() - 10f).left().get().setEllipsis(true); t.row(); t.add("[lightgray]" + (Core.bundle.format("players" + (host.players == 1 ? ".single" : ""), (host.players == 0 ? "[lightgray]" : "[accent]") + host.players + (host.playerLimit > 0 ? "[lightgray]/[accent]" + host.playerLimit : "")+ "[lightgray]"))).left(); @@ -268,6 +272,9 @@ public class JoinDialog extends FloatingDialog{ local.background((Drawable)null); local.table("button", t -> t.label(() -> "[accent]" + Core.bundle.get("hosts.discovering") + Strings.animated(Time.time(), 4, 10f, ".")).pad(10f)).growX(); Net.discoverServers(this::addLocalHost, this::finishLocalHosts); + for(String host : defaultServers){ + Net.pingHost(host, port, this::addLocalHost, e -> {}); + } } void finishLocalHosts(){ @@ -292,12 +299,10 @@ public class JoinDialog extends FloatingDialog{ local.row(); - TextButton button = local.addButton("[accent]" + host.name, "clear", () -> connect(host.address, port)) - .width(w).height(80f).pad(4f).get(); - button.left(); - button.row(); - button.add("[lightgray]" + (host.players != 1 ? Core.bundle.format("players", host.players) : - Core.bundle.format("players.single", host.players))).padBottom(5); + TextButton button = local.addButton("", "clear", () -> connect(host.address, port)) + .width(w).pad(5f).get(); + button.clearChildren(); + buildServer(host, button); } void connect(String ip, int port){