Refactor scene management.

Init totem choice scene
This commit is contained in:
2026-05-13 18:21:30 +02:00
parent 110526d836
commit 4fc2c1a458
5 changed files with 123 additions and 136 deletions
@@ -1,61 +1,21 @@
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 it.polimi.ingsw.gc14.View.IView;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import static javafx.application.Application.launch;
public class ClientLauncherGUI extends Application {
@Override
public void start(Stage stage) {
LoginView loginView = new LoginView();
public void start(Stage stage) throws Exception {
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();
view.start(stage);
}
public static void main(String[] args) {