Updated: now the disconnected player before the crash are ignored for the game restarting

This commit is contained in:
rubenpirreram
2026-05-10 22:29:42 +02:00
parent 8106adb0d0
commit ef34f780a3
3 changed files with 10 additions and 3 deletions
@@ -42,7 +42,7 @@ public class Game implements Serializable {
} }
//TODO //TODO
Map<Player,Boolean> disconnetedPlayers = new HashMap<>(); public Map<Player,Boolean> disconnetedPlayers = new HashMap<>();
//TODO //TODO
public boolean DisconnectedPlayer(Player player) public boolean DisconnectedPlayer(Player player)
{ {
@@ -86,7 +86,7 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer {
clients.put(username, callback); clients.put(username, callback);
System.out.println("Reconnected player: " + username); System.out.println("Reconnected player: " + username);
startWatchdog(username); startWatchdog(username);
callback.onGameInit(model); callback.onGameInit(controller.getModel());
System.out.println("Model sent: " + username); System.out.println("Model sent: " + username);
actionQueue.add(new ReconnectPlayer(username)); actionQueue.add(new ReconnectPlayer(username));
return true; return true;
@@ -112,7 +112,7 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer {
clients.put(username, callback); clients.put(username, callback);
System.out.println("Reconnected player: " + username); System.out.println("Reconnected player: " + username);
startWatchdog(username); startWatchdog(username);
callback.onGameInit(model); callback.onGameInit(controller.getModel());
System.out.println("Model sent: " + username); System.out.println("Model sent: " + username);
actionQueue.add(new ReconnectPlayer(username)); actionQueue.add(new ReconnectPlayer(username));
return true; return true;
@@ -139,6 +139,13 @@ public class ServerLauncher {
ServerLauncher launcher = new ServerLauncher(actionQueue, gameController, serverRMI, serverTCP); ServerLauncher launcher = new ServerLauncher(actionQueue, gameController, serverRMI, serverTCP);
if(gameController.getModel() != null){ if(gameController.getModel() != null){
playerList.setLimit(gameController.getModel().getNPlayers()); playerList.setLimit(gameController.getModel().getNPlayers());
for(Map.Entry<Player,Boolean>entry: gameController.getModel().disconnetedPlayers.entrySet())
{
if(entry.getValue())
{
playerList.put(entry.getKey().getUserName(),false);
}
}
serverCrashed = true; serverCrashed = true;
} else { } else {
serverCrashed = false; serverCrashed = false;