mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Support prompting for server when clicking Play Online
This commit is contained in:
@@ -1,11 +1,17 @@
|
|||||||
package forge.screens.online;
|
package forge.screens.online;
|
||||||
|
|
||||||
|
import forge.FThreads;
|
||||||
|
import forge.Forge;
|
||||||
import forge.interfaces.ILobbyView;
|
import forge.interfaces.ILobbyView;
|
||||||
import forge.match.GameLobby;
|
import forge.match.GameLobby;
|
||||||
|
import forge.net.IOnlineChatInterface;
|
||||||
import forge.net.IOnlineLobby;
|
import forge.net.IOnlineLobby;
|
||||||
|
import forge.net.NetConnectUtil;
|
||||||
import forge.net.OfflineLobby;
|
import forge.net.OfflineLobby;
|
||||||
import forge.net.client.FGameClient;
|
import forge.net.client.FGameClient;
|
||||||
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.constructed.LobbyScreen;
|
import forge.screens.constructed.LobbyScreen;
|
||||||
|
import forge.screens.online.OnlineMenu.OnlineScreen;
|
||||||
|
|
||||||
public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
||||||
public OnlineLobbyScreen() {
|
public OnlineLobbyScreen() {
|
||||||
@@ -23,4 +29,43 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
|||||||
// TODO Auto-generated method stub
|
// 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();
|
initializeScreen();
|
||||||
Forge.setBackScreen(screen);
|
Forge.setBackScreen(screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FScreen getScreen() {
|
||||||
|
initializeScreen();
|
||||||
|
return screen;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final ForgePreferences prefs = FModel.getPreferences();
|
private static final ForgePreferences prefs = FModel.getPreferences();
|
||||||
|
|||||||
Reference in New Issue
Block a user