I am currently making a game where players can make buildings. However, when i was playing with saving and loading i stubbled accross a weird problem. Objects save fine but when they are loaded they sort of go invisible. However when i check the data by calling all the buildings in the system to check their positions and their names everything looks fine so yeah im kinda confused . One thing you might want to know before looking at the code, “buildings” is an Arraylist and takes three parameters, i.e. new Building(string, int, int);. Here is the code i use for saving and loading buildings:
public static void Save_Buildings() {
try {
// saving
FileOutputStream saveFile = new FileOutputStream("saves/World_Data.sav");
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(Object_Control.Buildings.size());
for (int i = 0; i < Object_Control.Buildings.size(); i++) {
save.writeObject(Object_Control.Buildings.get(i).name);
save.writeObject(Object_Control.Buildings.get(i).x);
save.writeObject(Object_Control.Buildings.get(i).y);
}
for (int i = 0; i < Object_Control.Buildings.size(); i++) {
System.out.println(Object_Control.Buildings.get(i).name);
System.out.println(Object_Control.Buildings.get(i).x);
System.out.println(Object_Control.Buildings.get(i).y);
}
save.close();
saveFile.close();
} catch (Exception exc) {
exc.printStackTrace();
}
}
public static void Load_Buildings() {
try {
FileInputStream saveFile = new FileInputStream("saves/World_Data.sav");
ObjectInputStream save = new ObjectInputStream(saveFile);
Object_Control.Buildings.clear();
int AmountOfBuildings = (Integer)save.readObject();
for (int i = 0; i < AmountOfBuildings; i++) {
Object_Control.addBuilding(new Building("",0,0));
}
for (int i = 0; i < Object_Control.Buildings.size(); i++) {
Object_Control.Buildings.get(i).name = (String) save.readObject();
Object_Control.Buildings.get(i).x = (Integer) save.readObject();
Object_Control.Buildings.get(i).y = (Integer) save.readObject();
}
for (int i = 0; i < Object_Control.Buildings.size(); i++) {
System.out.println(Object_Control.Buildings.get(i).name);
System.out.println(Object_Control.Buildings.get(i).x);
System.out.println(Object_Control.Buildings.get(i).y);
}
save.close();
saveFile.close();
Menu.loading=false;
} catch (Exception exc) {
exc.printStackTrace();
}
}