diff --git a/src/main/java/forge/Constant.java b/src/main/java/forge/Constant.java index 380f0d4d07e..c56105b2de1 100644 --- a/src/main/java/forge/Constant.java +++ b/src/main/java/forge/Constant.java @@ -50,7 +50,7 @@ public final class Constant { public static class Runtime { /** The Constant NetConn. */ - public static boolean NET_CONN = false; + public static volatile boolean NET_CONN = false; /** The Constant width. */ public static final int WIDTH = 300; diff --git a/src/main/java/forge/model/FModel.java b/src/main/java/forge/model/FModel.java index 624836868d5..6fae553d3f0 100644 --- a/src/main/java/forge/model/FModel.java +++ b/src/main/java/forge/model/FModel.java @@ -145,15 +145,30 @@ public enum FModel { AllZone.setInputControl(new InputControl(FModel.this)); AllZone.getInputControl().setComputer(new ComputerAIInput(new ComputerAIGeneral())); - // Set gameplay preferences and constants - final HttpUtil pinger = new HttpUtil(); - final String url = ForgeProps.getProperty(NewConstants.CARDFORGE_URL) + "/draftAI/ping.php"; - Constant.Runtime.NET_CONN = (pinger.getURL(url).equals("pong") ? true : false); - + testNetworkConnection(); + this.setBuildInfo(new BuildInfo()); FModel.loadDynamicGamedata(); } + /** + * Tests if draft upload is technically possible. + * Separate thread, no more hangs when network connection is limited + */ + private void testNetworkConnection() { + // + Runnable runNetworkTest = new Runnable() { + @Override + public void run() { + final HttpUtil pinger = new HttpUtil(); + final String url = ForgeProps.getProperty(NewConstants.CARDFORGE_URL) + "/draftAI/ping.php"; + Constant.Runtime.NET_CONN = pinger.getURL(url).equals("pong"); + } + }; + Thread testNetConnection = new Thread(runNetworkTest, "CheckRemoteDraftAI"); + testNetConnection.start(); + } + /** * Load dynamic gamedata. */