Support prompting for server when clicking Play Online

This commit is contained in:
drdev
2015-05-31 21:58:45 +00:00
parent bb0a622635
commit 3fa441da5b
2 changed files with 50 additions and 0 deletions

View File

@@ -1,11 +1,17 @@
package forge.screens.online;
import forge.FThreads;
import forge.Forge;
import forge.interfaces.ILobbyView;
import forge.match.GameLobby;
import forge.net.IOnlineChatInterface;
import forge.net.IOnlineLobby;
import forge.net.NetConnectUtil;
import forge.net.OfflineLobby;
import forge.net.client.FGameClient;
import forge.screens.LoadingOverlay;
import forge.screens.constructed.LobbyScreen;
import forge.screens.online.OnlineMenu.OnlineScreen;
public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
public OnlineLobbyScreen() {
@@ -23,4 +29,43 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
// TODO Auto-generated method stub
}
@Override
public void onActivate() {
if (getLobby() instanceof OfflineLobby) {
//prompt to connect to server when offline lobby activated
FThreads.invokeInBackgroundThread(new Runnable() {
@Override
public void run() {
final String url = NetConnectUtil.getServerUrl();
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
if (url == null) {
Forge.back(); //go back to previous screen if user cancels connection
return;
}
final boolean joinServer = url.length() > 0;
final String caption = joinServer ? "Starting server..." : "Connecting to server...";
LoadingOverlay.show(caption, new Runnable() {
@Override
public void run() {
final String result;
final IOnlineChatInterface chatInterface = (IOnlineChatInterface)OnlineScreen.Chat.getScreen();
if (joinServer) {
result = NetConnectUtil.join(url, OnlineLobbyScreen.this, chatInterface);
}
else {
result = NetConnectUtil.host(OnlineLobbyScreen.this, chatInterface);
}
chatInterface.addMessage(result);
}
});
}
});
}
});
}
}
}

View File

@@ -55,6 +55,11 @@ public class OnlineMenu extends FPopupMenu {
initializeScreen();
Forge.setBackScreen(screen);
}
public FScreen getScreen() {
initializeScreen();
return screen;
}
}
private static final ForgePreferences prefs = FModel.getPreferences();