Fix: Fixed Model Setting Logic In RMIServer.java And TCPServer.java When A Game Is Restored From Disk.

This commit is contained in:
GabrieleRadice
2026-05-08 19:34:20 +02:00
parent 506e6677af
commit 875a986602
2 changed files with 52 additions and 43 deletions
@@ -83,10 +83,15 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer {
} }
synchronized (controller) { synchronized (controller) {
if(playerList.isEmpty()){ if(playerList.isEmpty()){
if(controller.getModel() == null){
model = new Game(preferredInt); model = new Game(preferredInt);
controller.setModel(model); controller.setModel(model);
playerList.setLimit(preferredInt); playerList.setLimit(preferredInt);
} }
else{
model = controller.getModel();
}
}
if (controller.addPlayer(username)) { if (controller.addPlayer(username)) {
clients.put(username, callback); clients.put(username, callback);
playerList.put(username,true); playerList.put(username,true);
@@ -88,12 +88,13 @@ public class TCPServer {
continue; continue;
} }
if (playerList.isEmpty()) { if (playerList.isEmpty()) {
if(controller.getModel() == null){
Game model = new Game(eventAddPlayer.getProposedNPlayer()); Game model = new Game(eventAddPlayer.getProposedNPlayer());
controller.setModel(model); controller.setModel(model);
playerList.setLimit(eventAddPlayer.getProposedNPlayer()); playerList.setLimit(eventAddPlayer.getProposedNPlayer());
} }
}
String username = eventAddPlayer.getUsername(); String username = eventAddPlayer.getUsername();
@@ -114,7 +115,8 @@ public class TCPServer {
// metti in attesa del socket heartbeat // metti in attesa del socket heartbeat
} else if (playerList.containsKey(username) && !playerList.get(username)) { }
else if(playerList.containsKey(username) && !playerList.get(username)){
// riconnessione // riconnessione
playerList.put(username, true); playerList.put(username, true);
System.out.println("Reconnected player: " + username); System.out.println("Reconnected player: " + username);
@@ -131,14 +133,16 @@ public class TCPServer {
clientHandlers.add(handler); clientHandlers.add(handler);
connectedPlayers++; connectedPlayers++;
actionQueue.add(new ReconnectPlayer(username)); actionQueue.add(new ReconnectPlayer(username));
} else { }
else{
clientSocket.getOutputStream().write(-1); clientSocket.getOutputStream().write(-1);
clientSocket.close(); clientSocket.close();
System.out.println("Player could not be added. Connection terminated."); System.out.println("Player could not be added. Connection terminated.");
} }
} catch (IOException | ClassNotFoundException e) { }
catch(IOException | ClassNotFoundException e){
e.printStackTrace(); e.printStackTrace();
} }
} }