Add: Added "deleteSave" Method In ServerLauncher.java.

Fix: Fixed Loading/Deletion Logic For "gameSave" Method In ServerLauncher.java.
This commit is contained in:
GabrieleRadice
2026-05-10 17:12:34 +02:00
parent 875a986602
commit 680c748d4c
@@ -98,14 +98,17 @@ public class ServerLauncher {
event.setIsError(!event.apply(gameController)); event.setIsError(!event.apply(gameController));
serverRMI.notifyAll(event); serverRMI.notifyAll(event);
serverTCP.notifyAll(event); serverTCP.notifyAll(event);
if(!event.getIsError()){
if(this.gameController.getModel().getCurrentState().getGameStage() == GameStages.ENDED){
this.deleteSave();
}
else if(!this.gameSave() ){
System.out.println("\n!!! Save failed !!!\n");
}
}
if (!playerList.get(gameController.getModel().getCurrentState().getCurrentPlayer().getUserName())) { if (!playerList.get(gameController.getModel().getCurrentState().getCurrentPlayer().getUserName())) {
actionQueue.offer(new SkipPlayerDisconnected(gameController.getModel().getCurrentState().getCurrentPlayer().getUserName())); actionQueue.offer(new SkipPlayerDisconnected(gameController.getModel().getCurrentState().getCurrentPlayer().getUserName()));
if(this.gameController.getModel().getCurrentState().getGameStage() != GameStages.ENDED && !event.getIsError()){
if(!this.gameSave() ){
System.out.println("\n!!! Save failed !!!\n");
}
}
} }
return !event.getIsError(); return !event.getIsError();
} }
@@ -219,32 +222,65 @@ public class ServerLauncher {
} }
private boolean gameSave(){ private boolean gameSave(){
Path filePath = Paths.get("src/main/resources/GameSaves/save.dat"); try{
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath.toFile()))){ Path jarPath = Paths.get(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getParent();
oos.writeObject(this.gameController.getModel()); Path filePath = jarPath.resolve("GameSaves/save.dat");
System.out.println("Game saved to: " + filePath.toAbsolutePath()); Files.createDirectories(filePath.getParent());
return true;
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath.toFile()))){
oos.writeObject(this.gameController.getModel());
System.out.println("Game saved to: " + filePath.toAbsolutePath());
return true;
}
catch(IOException e){
e.printStackTrace();
return false;
}
} }
catch(IOException e){ catch(IOException e){
System.out.println("Couldn't create directory.");
e.printStackTrace(); e.printStackTrace();
return false; return false;
} } catch (URISyntaxException e) {
}
private static Game loadSave(){
Path filePath = Paths.get("src/main/resources/GameSaves/save.dat");
try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath.toFile()))){
return (Game)(ois.readObject());
}
catch(FileNotFoundException e){
return null;
}
catch(IOException e){
e.printStackTrace();
return null;
}
catch(ClassNotFoundException e){
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
private Game loadSave(){
try {
Path jarPath = Paths.get(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getParent();
Path filePath = jarPath.resolve("GameSaves/save.dat");
try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath.toFile()))){
return (Game)(ois.readObject());
}
catch(FileNotFoundException e){
return null;
}
catch(IOException e){
e.printStackTrace();
return null;
}
catch(ClassNotFoundException e){
throw new RuntimeException(e);
}
}
catch(URISyntaxException e){
throw new RuntimeException(e);
}
}
private boolean deleteSave(){
try{
Path jarPath = Paths.get(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getParent();
Path filePath = jarPath.resolve("GameSaves/save.dat");
Files.delete(filePath);
return true;
}
catch(URISyntaxException e){
return false;
}
catch (IOException e){
return false;
}
}
} }