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