86 lines
3.0 KiB
Java
86 lines
3.0 KiB
Java
package logic;
|
|
|
|
import java.io.*;
|
|
/**
|
|
* 2019-03-10 (Edited on 2019-03-19)
|
|
* Authors: Harkamal Randhawa
|
|
* FileSaving Class allows the user to save the current status of the game and to continue from where they left off.
|
|
*/
|
|
|
|
public class FileSaving extends Player implements Serializable {
|
|
|
|
/**
|
|
* loads the file of type player which contains all the player instances
|
|
* @return player
|
|
*/
|
|
public Player loadFile() {
|
|
try {
|
|
//Load the previous save file
|
|
InputStream in = new FileInputStream(new File("src/saves/playerSave.txt"));
|
|
return getPlayer(in);
|
|
}
|
|
catch (Exception e) {
|
|
try {
|
|
//Loads the player save in a alternate location if the original location isn't available
|
|
InputStream in = new FileInputStream(new File("saves/playerSave.txt"));
|
|
return getPlayer(in);
|
|
}
|
|
catch(Exception e2){
|
|
//Only it's impossible for the player to load a file
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Only run inside this class, returns save files. Throws exceptions if it fails
|
|
* @param in The input stream from the previous save(If there is one)
|
|
* @return Returns the player object from the previous save file
|
|
* @throws IOException Only if the file cannot be read
|
|
* @throws ClassNotFoundException Only if there is no file available for the player to load
|
|
*/
|
|
private Player getPlayer(InputStream in) throws IOException, ClassNotFoundException {
|
|
ObjectInputStream inObject = new ObjectInputStream(in);
|
|
Player player = (Player) inObject.readObject();
|
|
in.close();
|
|
inObject.close();
|
|
return player;
|
|
}
|
|
|
|
/**
|
|
* Saves the file of type player which contains all the player instances
|
|
* @param player The player object being saved
|
|
*/
|
|
public boolean saveFile(Player player){
|
|
try{
|
|
//Saves the object to a file
|
|
FileOutputStream out = new FileOutputStream(new File("src/saves/playerSave.txt"));
|
|
ObjectOutputStream outObject = new ObjectOutputStream(out);
|
|
outObject.writeObject(player);
|
|
|
|
out.close();
|
|
outObject.close();
|
|
|
|
//returns true if program can save the file
|
|
return true;
|
|
}
|
|
catch (Exception e) {
|
|
try {
|
|
//If the player is running from the terminal it changes the files location, this catch statement fixes that
|
|
FileOutputStream out = new FileOutputStream(new File("saves/playerSave.txt"));
|
|
ObjectOutputStream outObject = new ObjectOutputStream(out);
|
|
outObject.writeObject(player);
|
|
|
|
out.close();
|
|
outObject.close();
|
|
//returns true if the program can save the file
|
|
return true;
|
|
}
|
|
catch(Exception e2){
|
|
//returns false if it's impossible for the player to save the file
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|