Files
Progetto-ingegneria-del-sof…/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java
T
2026-05-07 18:09:39 +02:00

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();
}
}