63 lines
2.3 KiB
Java
63 lines
2.3 KiB
Java
package it.polimi.ingsw.gc14;
|
|
|
|
import it.polimi.ingsw.gc14.Controller.ClientController;
|
|
import it.polimi.ingsw.gc14.Network.RMI.Client.RMIClient;
|
|
import it.polimi.ingsw.gc14.Network.TCP.Client.TCPClient;
|
|
import it.polimi.ingsw.gc14.View.GUI.GUI;
|
|
import it.polimi.ingsw.gc14.View.GUI.LoginView;
|
|
import javafx.application.Application;
|
|
import javafx.application.Platform;
|
|
import javafx.stage.Stage;
|
|
|
|
public class ClientLauncherGUI extends Application {
|
|
|
|
@Override
|
|
public void start(Stage stage) {
|
|
LoginView loginView = new LoginView();
|
|
GUI view = new GUI(stage);
|
|
|
|
ClientController controller = new ClientController(view);
|
|
view.setController(controller);
|
|
|
|
loginView.getBtnAccedi().setOnAction(e -> {
|
|
String nome = loginView.getNome();
|
|
int numPlayer = loginView.getNumPlayers();
|
|
int networkType = loginView.getNetworkType();
|
|
String ip = loginView.getIP();
|
|
|
|
if (nome.isEmpty() || ip.isEmpty()) {
|
|
loginView.setErrore("Compila tutti i campi.");
|
|
return;
|
|
}
|
|
view.setUsername(nome);
|
|
|
|
// Connessione in un thread separato — non bloccare il JavaFX thread!
|
|
new Thread(() -> {
|
|
if (networkType == 0) {
|
|
RMIClient client = new RMIClient(controller, ip, 1099, loginView.getInterfaccia());
|
|
if (client.connect(nome, numPlayer)) {
|
|
controller.setClient(client);
|
|
// Da qui in poi il server chiamerà onGameInit → render()
|
|
} else {
|
|
Platform.runLater(() -> loginView.setErrore("Connessione RMI fallita."));
|
|
}
|
|
} else {
|
|
TCPClient client = new TCPClient(controller, ip, 8080,8081);
|
|
if (client.connect(nome, numPlayer)) {
|
|
controller.setClient(client);
|
|
} else {
|
|
Platform.runLater(() -> loginView.setErrore("Connessione TCP fallita."));
|
|
}
|
|
}
|
|
}).start();
|
|
});
|
|
|
|
stage.setTitle("Mesos");
|
|
stage.setScene(loginView.getScene());
|
|
stage.show();
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
launch();
|
|
}
|
|
} |