diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java index 8fefc33..2c4ac8d 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -31,7 +31,7 @@ public class Game implements Serializable { private ArrayList playerStanding; - public List getPlayerStanding() { + public ArrayList getPlayerStanding() { return playerStanding; } /** @@ -992,12 +992,13 @@ public class Game implements Serializable { return true; } - public void EndGameForFeit(Player winner) { + public void EndGameForFeit() { + Player winner=playersList.stream().filter(x->!disconnetedPlayers.containsValue(x)||!disconnetedPlayers.get(x)).toList().get(0); currentState.GameStageUpdate(GameStages.ENDED); playerStanding=new ArrayList<>(playersList); playerStanding.remove(winner); playerStanding.sort((y,x)->x.getPrestigeValue()==y.getPrestigeValue()?Integer.compare(x.getFoodValue(),y.getFoodValue()):Integer.compare(x.getPrestigeValue(),y.getPrestigeValue())); - playerStanding.addFirst(winner); + playerStanding.add(0,winner); } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java b/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java index ebbeb10..9aef2c0 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java @@ -74,7 +74,7 @@ public class MiniModel implements Serializable { public void setPlayer(Player player) { players.put(player.getUserName(), player); } - public void setStandingPlayers(List standingPlayers) { + public void setStandingPlayers(ArrayList standingPlayers) { this.standingPlayers = standingPlayers; } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/EndedGame.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/EndedGame.java index cfe3998..6f9f950 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/EndedGame.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/EndedGame.java @@ -11,6 +11,7 @@ import it.polimi.ingsw.gc14.Network.NetworkEvent; import it.polimi.ingsw.gc14.View.IView; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -19,9 +20,9 @@ import java.util.Map; */ public class EndedGame extends NetworkEvent implements Serializable{ - List players; + ArrayList players; //TODO - public EndedGame(Map slotPlayerMap, OrderLogicCard orderLogicCard, CurrentState currentState, List players){ + public EndedGame(Map slotPlayerMap, OrderLogicCard orderLogicCard, CurrentState currentState, ArrayList players){ super("SERVER",EventType.ENDED_GAME,false); this.slotPlayerMap = slotPlayerMap; this.orderLogicCard = orderLogicCard; diff --git a/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java b/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java index f1e7006..ee531aa 100644 --- a/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java +++ b/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java @@ -164,10 +164,13 @@ public class ServerLauncher { disconnectionTimer.cancel(false); } disconnectionTimer = timerExecutor.schedule(() -> { - game.EndGameForFeit(game.getPlayerByUsername(playerList.keySet().stream().toList().getFirst())); + game.EndGameForFeit(); serverRMI.notifyAll(new EndedGame(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayerStanding())); serverTCP.notifyAll(new EndedGame(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayerStanding())); System.out.println("Timer expired: no player reconnected in 60s."); + if(!this.deleteSave()){ + System.out.println("\n!!! Couldn't delete save !!!\n"); + } }, 1, TimeUnit.MINUTES); } return !event.getIsError();