From 5df2a3e6258664a80515855d993b266b582eaca0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 19 Aug 2020 17:11:37 -0400 Subject: [PATCH] Added ping marker to servers --- core/assets/planets/colors.png | Bin 10737 -> 0 bytes core/src/mindustry/core/ContentLoader.java | 10 +++++----- core/src/mindustry/net/ArcNetProvider.java | 6 ++++-- core/src/mindustry/net/Host.java | 3 ++- core/src/mindustry/net/NetworkIO.java | 4 ++-- core/src/mindustry/ui/dialogs/JoinDialog.java | 13 +++++++++++-- desktop/src/mindustry/desktop/steam/SNet.java | 1 + 7 files changed, 25 insertions(+), 12 deletions(-) delete mode 100644 core/assets/planets/colors.png diff --git a/core/assets/planets/colors.png b/core/assets/planets/colors.png deleted file mode 100644 index 5efd5d38e06573a086fe551d14de54e984881fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10737 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 items(){ @@ -255,7 +255,7 @@ public class ContentLoader{ } public Item item(int id){ - return (Item)getByID(ContentType.item, id); + return getByID(ContentType.item, id); } public Seq liquids(){ @@ -263,7 +263,7 @@ public class ContentLoader{ } public Liquid liquid(int id){ - return (Liquid)getByID(ContentType.liquid, id); + return getByID(ContentType.liquid, id); } public Seq bullets(){ @@ -271,7 +271,7 @@ public class ContentLoader{ } public BulletType bullet(int id){ - return (BulletType)getByID(ContentType.bullet, id); + return getByID(ContentType.bullet, id); } public Seq sectors(){ diff --git a/core/src/mindustry/net/ArcNetProvider.java b/core/src/mindustry/net/ArcNetProvider.java index b6a3cf378a..5fce1d1373 100644 --- a/core/src/mindustry/net/ArcNetProvider.java +++ b/core/src/mindustry/net/ArcNetProvider.java @@ -180,6 +180,7 @@ public class ArcNetProvider implements NetProvider{ Threads.daemon(() -> { try{ DatagramSocket socket = new DatagramSocket(); + long time = Time.millis(); socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), port)); socket.setSoTimeout(2000); @@ -187,7 +188,7 @@ public class ArcNetProvider implements NetProvider{ socket.receive(packet); ByteBuffer buffer = ByteBuffer.wrap(packet.getData()); - Host host = NetworkIO.readServerData(packet.getAddress().getHostAddress(), buffer); + Host host = NetworkIO.readServerData((int)Time.timeSinceMillis(time), packet.getAddress().getHostAddress(), buffer); Core.app.post(() -> valid.get(host)); }catch(Exception e){ @@ -199,6 +200,7 @@ public class ArcNetProvider implements NetProvider{ @Override public void discoverServers(Cons callback, Runnable done){ Seq foundAddresses = new Seq<>(); + long time = Time.millis(); client.discoverHosts(port, multicastGroup, multicastPort, 3000, packet -> { Core.app.post(() -> { try{ @@ -206,7 +208,7 @@ public class ArcNetProvider implements NetProvider{ return; } ByteBuffer buffer = ByteBuffer.wrap(packet.getData()); - Host host = NetworkIO.readServerData(packet.getAddress().getHostAddress(), buffer); + Host host = NetworkIO.readServerData((int)Time.timeSinceMillis(time), packet.getAddress().getHostAddress(), buffer); callback.get(host); foundAddresses.add(packet.getAddress()); }catch(Exception e){ diff --git a/core/src/mindustry/net/Host.java b/core/src/mindustry/net/Host.java index cc52f30b86..123fdad341 100644 --- a/core/src/mindustry/net/Host.java +++ b/core/src/mindustry/net/Host.java @@ -16,7 +16,8 @@ public class Host{ public final @Nullable String modeName; public int ping, port = Vars.port; - public Host(String name, String address, String mapname, int wave, int players, int version, String versionType, Gamemode mode, int playerLimit, String description, String modeName){ + public Host(int ping, String name, String address, String mapname, int wave, int players, int version, String versionType, Gamemode mode, int playerLimit, String description, String modeName){ + this.ping = ping; this.name = name; this.address = address; this.players = players; diff --git a/core/src/mindustry/net/NetworkIO.java b/core/src/mindustry/net/NetworkIO.java index 7df5cd46bb..05bd69fe32 100644 --- a/core/src/mindustry/net/NetworkIO.java +++ b/core/src/mindustry/net/NetworkIO.java @@ -88,7 +88,7 @@ public class NetworkIO{ return buffer; } - public static Host readServerData(String hostAddress, ByteBuffer buffer){ + public static Host readServerData(int ping, String hostAddress, ByteBuffer buffer){ String host = readString(buffer); String map = readString(buffer); int players = buffer.getInt(); @@ -100,7 +100,7 @@ public class NetworkIO{ String description = readString(buffer); String modeName = readString(buffer); - return new Host(host, hostAddress, map, wave, players, version, vertype, gamemode, limit, description, modeName.isEmpty() ? null : modeName); + return new Host(ping, host, hostAddress, map, wave, players, version, vertype, gamemode, limit, description, modeName.isEmpty() ? null : modeName); } private static void writeString(ByteBuffer buffer, String string, int maxlen){ diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 9b02b7413e..92776ab729 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -1,6 +1,7 @@ package mindustry.ui.dialogs; import arc.*; +import arc.graphics.*; import arc.input.*; import arc.math.*; import arc.scene.ui.*; @@ -233,6 +234,10 @@ public class JoinDialog extends BaseDialog{ t.add("[lightgray]" + (Core.bundle.format("players" + (host.players == 1 && host.playerLimit <= 0 ? ".single" : ""), (host.players == 0 ? "[lightgray]" : "[accent]") + host.players + (host.playerLimit > 0 ? "[lightgray]/[accent]" + host.playerLimit : "")+ "[lightgray]"))).left(); t.row(); t.add("[lightgray]" + Core.bundle.format("save.map", host.mapname) + "[lightgray] / " + (host.modeName == null ? host.mode.toString() : host.modeName)).width(targetWidth() - 10f).left().get().setEllipsis(true); + if(host.ping > 0){ + t.row(); + t.add(Iconc.chartBar + " " + host.ping + "ms").color(Color.gray).left(); + } }).expand().left().bottom().padLeft(12f).padBottom(8); } @@ -434,9 +439,13 @@ public class JoinDialog extends BaseDialog{ defaultServers.clear(); val.asArray().each(child -> defaultServers.add(child.getString("address", ""))); Log.info("Fetched @ global servers.", defaultServers.size); - }catch(Throwable ignored){} + }catch(Throwable ignored){ + Log.err("Failed to parse community servers."); + } }); - }catch(Throwable ignored){} + }catch(Throwable e){ + Log.err("Failed to fetch community servers."); + } }, t -> {}); } diff --git a/desktop/src/mindustry/desktop/steam/SNet.java b/desktop/src/mindustry/desktop/steam/SNet.java index 2a038171f7..9cd7c816ee 100644 --- a/desktop/src/mindustry/desktop/steam/SNet.java +++ b/desktop/src/mindustry/desktop/steam/SNet.java @@ -305,6 +305,7 @@ public class SNet implements SteamNetworkingCallback, SteamMatchmakingCallback, try{ SteamID lobby = smat.getLobbyByIndex(i); Host out = new Host( + -1, //invalid ping smat.getLobbyData(lobby, "name"), "steam:" + lobby.handle(), smat.getLobbyData(lobby, "mapname"),