mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Support prompting for server when clicking Play Online
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user