Changed save system to only convert saves on load, possibly fixing issues with saves disappearing on new version updates
This commit is contained in:
@@ -90,7 +90,6 @@ public class Mindustry extends ModuleCore {
|
|||||||
@Override
|
@Override
|
||||||
public void postInit(){
|
public void postInit(){
|
||||||
Vars.control.reset();
|
Vars.control.reset();
|
||||||
Vars.control.getSaves().convertSaves();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -108,7 +108,9 @@ public class SaveIO{
|
|||||||
public static boolean isSaveValid(DataInputStream stream){
|
public static boolean isSaveValid(DataInputStream stream){
|
||||||
|
|
||||||
try{
|
try{
|
||||||
SaveMeta meta = getData(stream);
|
int version = stream.readInt();
|
||||||
|
SaveFileVersion ver = versions.get(version);
|
||||||
|
SaveMeta meta = ver.getData(stream);
|
||||||
return meta.map != null;
|
return meta.map != null;
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
return false;
|
return false;
|
||||||
@@ -122,7 +124,7 @@ public class SaveIO{
|
|||||||
public static SaveMeta getData(DataInputStream stream){
|
public static SaveMeta getData(DataInputStream stream){
|
||||||
|
|
||||||
try{
|
try{
|
||||||
SaveMeta meta = getVersion().getData(stream);
|
SaveMeta meta = getVersion().getData(stream);
|
||||||
stream.close();
|
stream.close();
|
||||||
return meta;
|
return meta;
|
||||||
}catch (IOException e){
|
}catch (IOException e){
|
||||||
@@ -146,7 +148,7 @@ public class SaveIO{
|
|||||||
stream = new DataOutputStream(os);
|
stream = new DataOutputStream(os);
|
||||||
getVersion().write(stream);
|
getVersion().write(stream);
|
||||||
stream.close();
|
stream.close();
|
||||||
}catch (IOException e){
|
}catch (Exception e){
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,9 +163,13 @@ public class SaveIO{
|
|||||||
|
|
||||||
try{
|
try{
|
||||||
stream = new DataInputStream(is);
|
stream = new DataInputStream(is);
|
||||||
getVersion().read(stream);
|
int version = stream.readInt();
|
||||||
|
SaveFileVersion ver = versions.get(version);
|
||||||
|
|
||||||
|
ver.read(stream);
|
||||||
|
|
||||||
stream.close();
|
stream.close();
|
||||||
}catch (IOException e){
|
}catch (Exception e){
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,18 +34,6 @@ public class Saves {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void convertSaves(){
|
|
||||||
Array<SaveSlot> invalid = new Array<>();
|
|
||||||
|
|
||||||
for(SaveSlot slot : saves){
|
|
||||||
if(!SaveIO.checkConvert(slot.index)){
|
|
||||||
invalid.add(slot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
saves.removeAll(invalid, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SaveSlot getCurrent() {
|
public SaveSlot getCurrent() {
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,14 +31,8 @@ public class Save12 extends SaveFileVersion {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(DataInputStream stream) throws IOException {
|
public void read(DataInputStream stream) throws IOException {
|
||||||
|
|
||||||
int version = stream.readInt();
|
|
||||||
/*long loadTime = */stream.readLong();
|
/*long loadTime = */stream.readLong();
|
||||||
|
|
||||||
if(version != this.version){
|
|
||||||
throw new RuntimeException("Save file version mismatch!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//general state
|
//general state
|
||||||
byte mode = stream.readByte();
|
byte mode = stream.readByte();
|
||||||
byte mapid = stream.readByte();
|
byte mapid = stream.readByte();
|
||||||
|
|||||||
@@ -32,14 +32,8 @@ public class Save13 extends SaveFileVersion {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(DataInputStream stream) throws IOException {
|
public void read(DataInputStream stream) throws IOException {
|
||||||
|
|
||||||
int version = stream.readInt();
|
|
||||||
/*long loadTime = */stream.readLong();
|
/*long loadTime = */stream.readLong();
|
||||||
|
|
||||||
if(version != this.version){
|
|
||||||
throw new RuntimeException("Save file version mismatch!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//general state
|
//general state
|
||||||
byte mode = stream.readByte();
|
byte mode = stream.readByte();
|
||||||
byte mapid = stream.readByte();
|
byte mapid = stream.readByte();
|
||||||
|
|||||||
@@ -35,15 +35,9 @@ public class Save14 extends SaveFileVersion{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(DataInputStream stream) throws IOException {
|
public void read(DataInputStream stream) throws IOException {
|
||||||
|
|
||||||
int version = stream.readInt();
|
|
||||||
/*long loadTime = */
|
/*long loadTime = */
|
||||||
stream.readLong();
|
stream.readLong();
|
||||||
|
|
||||||
if(version != this.version){
|
|
||||||
throw new RuntimeException("Save file version mismatch!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//general state
|
//general state
|
||||||
byte mode = stream.readByte();
|
byte mode = stream.readByte();
|
||||||
byte mapid = stream.readByte();
|
byte mapid = stream.readByte();
|
||||||
|
|||||||
@@ -36,15 +36,9 @@ public class Save15 extends SaveFileVersion {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(DataInputStream stream) throws IOException {
|
public void read(DataInputStream stream) throws IOException {
|
||||||
|
|
||||||
int version = stream.readInt();
|
|
||||||
/*long loadTime = */
|
/*long loadTime = */
|
||||||
stream.readLong();
|
stream.readLong();
|
||||||
|
|
||||||
if(version != this.version){
|
|
||||||
throw new RuntimeException("Save file version mismatch!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//general state
|
//general state
|
||||||
byte mode = stream.readByte();
|
byte mode = stream.readByte();
|
||||||
byte mapid = stream.readByte();
|
byte mapid = stream.readByte();
|
||||||
|
|||||||
Reference in New Issue
Block a user