diff --git a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java index 82ddf20e6b..2d655fe98a 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java @@ -10,8 +10,7 @@ import io.anuke.mindustry.net.Net; import java.io.IOException; -import static io.anuke.mindustry.Vars.player; -import static io.anuke.mindustry.Vars.ui; +import static io.anuke.mindustry.Vars.*; public class HostDialog extends FloatingDialog{ float w = 300; @@ -50,23 +49,29 @@ public class HostDialog extends FloatingDialog{ return; } - ui.loadfrag.show("$hosting"); - Time.runTask(5f, () -> { - try{ - Net.host(Vars.port); - player.isAdmin = true; - }catch(IOException e){ - ui.showError(Core.bundle.format("server.error", Strings.parseException(e, true))); - } - ui.loadfrag.hide(); - hide(); - }); + runHost(); }).width(w).height(70f); cont.addButton("?", () -> ui.showInfo("$host.info")).size(65f, 70f).padLeft(6f); shown(() -> { - Core.app.post(() -> Core.settings.getBoolOnce("hostinfo", () -> ui.showInfo("$host.info"))); + if(!steam){ + Core.app.post(() -> Core.settings.getBoolOnce("hostinfo", () -> ui.showInfo("$host.info"))); + } + }); + } + + public void runHost(){ + ui.loadfrag.show("$hosting"); + Time.runTask(5f, () -> { + try{ + Net.host(Vars.port); + player.isAdmin = true; + }catch(IOException e){ + ui.showError(Core.bundle.format("server.error", Strings.parseException(e, true))); + } + ui.loadfrag.hide(); + hide(); }); } } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java index 62b4f24a79..c55d59c3bc 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java @@ -57,7 +57,13 @@ public class PausedDialog extends FloatingDialog{ cont.row(); - cont.addButton("$hostserver", ui.host::show).disabled(b -> Net.active()).colspan(2).width(dw * 2 + 20f); + cont.addButton("$hostserver", () -> { + if(steam){ + ui.host.runHost(); + }else{ + ui.host.show(); + } + }).disabled(b -> Net.active()).colspan(2).width(dw * 2 + 20f); } cont.row(); diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 1570afff42..d8b9c64851 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -15,7 +15,7 @@ public class DesktopLauncher{ Platform.instance = new DesktopPlatform(arg); if(SteamAPI.isSteamRunning()){ - SteamNetImpl net = new SteamNetImpl(); + SteamCoreNetImpl net = DesktopPlatform.steamCore = new SteamCoreNetImpl(); Net.setClientProvider(net); Net.setServerProvider(net); }else{ diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java index 22a34c2f33..3bf560339b 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java @@ -15,6 +15,7 @@ import io.anuke.arc.util.serialization.*; import io.anuke.mindustry.*; import io.anuke.mindustry.core.GameState.*; import io.anuke.mindustry.core.*; +import io.anuke.mindustry.desktop.steam.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.*; @@ -27,7 +28,8 @@ import static io.anuke.mindustry.Vars.*; public class DesktopPlatform extends Platform{ - static boolean useDiscord = OS.is64Bit, useSteam = true, showConsole = false; + static boolean useDiscord = OS.is64Bit, useSteam = true, showConsole = true; + static SteamCoreNetImpl steamCore; final static String applicationId = "610508934456934412"; String[] args; @@ -50,8 +52,9 @@ public class DesktopPlatform extends Platform{ } if(useSteam){ + if(showConsole){ - Events.on(GameLoadEvent.class, event -> { + Events.on(ClientLoadEvent.class, event -> { Label[] label = {null}; Core.scene.table(t -> { t.touchable(Touchable.disabled); @@ -79,15 +82,15 @@ public class DesktopPlatform extends Platform{ }); } - Vars.steam = true; try{ SteamAPI.loadLibraries(); if(!SteamAPI.init()){ Log.info("Steam client not running. Make sure Steam is running!"); }else{ - + Vars.steam = true; //run steam callbacks - Events.on(GameLoadEvent.class, event -> { + Events.on(ClientLoadEvent.class, event -> { + Core.settings.defaults("name", steamCore.friends.getPersonaName()); //update callbacks Core.app.addListener(new ApplicationListener(){ @Override diff --git a/desktop/src/io/anuke/mindustry/desktop/steam/SteamNetImpl.java b/desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java similarity index 93% rename from desktop/src/io/anuke/mindustry/desktop/steam/SteamNetImpl.java rename to desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java index 4dbbca5ddb..11bd12d49b 100644 --- a/desktop/src/io/anuke/mindustry/desktop/steam/SteamNetImpl.java +++ b/desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java @@ -15,7 +15,6 @@ import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Net.*; import io.anuke.mindustry.net.Packets.*; -import net.jpountz.lz4.*; import java.io.*; import java.nio.*; @@ -23,16 +22,14 @@ import java.util.concurrent.*; import static io.anuke.mindustry.Vars.*; -public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCallback, SteamFriendsCallback, ClientProvider, ServerProvider{ - final SteamNetworking snet = new SteamNetworking(this); - final SteamMatchmaking smat = new SteamMatchmaking(this); - final SteamFriends friends = new SteamFriends(this); +public class SteamCoreNetImpl implements SteamNetworkingCallback, SteamMatchmakingCallback, SteamFriendsCallback, ClientProvider, ServerProvider{ + public final SteamNetworking snet = new SteamNetworking(this); + public final SteamMatchmaking smat = new SteamMatchmaking(this); + public final SteamFriends friends = new SteamFriends(this); final PacketSerializer serializer = new PacketSerializer(); final ByteBuffer writeBuffer = ByteBuffer.allocateDirect(1024 * 4); final ByteBuffer readBuffer = ByteBuffer.allocateDirect(1024 * 4); - final LZ4FastDecompressor decompressor = LZ4Factory.fastestInstance().fastDecompressor(); - final LZ4Compressor compressor = LZ4Factory.fastestInstance().fastCompressor(); final CopyOnWriteArrayList connections = new CopyOnWriteArrayList<>(); final IntMap steamConnections = new IntMap<>(); //maps steam ID -> valid net connection @@ -42,8 +39,8 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa Consumer lobbyCallback; Runnable lobbyDoneCallback, joinCallback; - public SteamNetImpl(){ - Events.on(GameLoadEvent.class, e -> Core.app.addListener(new ApplicationListener(){ + public SteamCoreNetImpl(){ + Events.on(ClientLoadEvent.class, e -> Core.app.addListener(new ApplicationListener(){ //read packets int length; SteamID from = new SteamID(); @@ -135,11 +132,6 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa } } - @Override - public byte[] decompressSnapshot(byte[] input, int size){ - return decompressor.decompress(input, size); - } - @Override public void discover(Consumer callback, Runnable done){ smat.addRequestLobbyListResultCountFilter(32); @@ -171,11 +163,6 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa steamConnections.clear(); } - @Override - public byte[] compressSnapshot(byte[] input){ - return compressor.compress(input); - } - @Override public Iterable getConnections(){ return connections; @@ -443,13 +430,12 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa @Override public boolean isConnected(){ snet.getP2PSessionState(sid, state); - return state.isConnectionActive() || state.isConnecting(); + return state.isConnectionActive(); } @Override public void close(){ snet.closeP2PSessionWithUser(sid); - //smat. } } }