Progress on sector state

This commit is contained in:
Anuken
2020-05-30 21:04:41 -04:00
parent 8a4824e72d
commit 0842c3f0a0
20 changed files with 314 additions and 211 deletions
+4 -6
View File
@@ -3,7 +3,6 @@ package mindustry.io;
import arc.struct.*;
import mindustry.game.*;
import mindustry.maps.*;
import mindustry.type.*;
import static mindustry.Vars.maps;
@@ -15,13 +14,12 @@ public class SaveMeta{
public Map map;
public int wave;
public Rules rules;
public SectorInfo secinfo;
public StringMap tags;
public String[] mods;
/** These are in items/second. */
public ObjectFloatMap<Item> exportRates;
public boolean hasProduction;
public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules, ObjectFloatMap<Item> exportRates, StringMap tags){
public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules, SectorInfo secinfo, StringMap tags){
this.version = version;
this.build = build;
this.timestamp = timestamp;
@@ -31,8 +29,8 @@ public class SaveMeta{
this.rules = rules;
this.tags = tags;
this.mods = JsonIO.read(String[].class, tags.get("mods", "[]"));
this.exportRates = exportRates;
this.secinfo = secinfo;
exportRates.each(e -> hasProduction |= e.value > 0.001f);
secinfo.exportRates().each(e -> hasProduction |= e.value > 0.001f);
}
}
+8 -1
View File
@@ -39,7 +39,7 @@ public abstract class SaveVersion extends SaveFileReader{
map.get("mapname"),
map.getInt("wave"),
JsonIO.read(Rules.class, map.get("rules", "{}")),
JsonIO.read(Stats.class, map.get("stats", "{}")).exportRates(),
JsonIO.read(SectorInfo.class, map.get("secinfo", "{}")),
map
);
}
@@ -70,6 +70,11 @@ public abstract class SaveVersion extends SaveFileReader{
}
public void writeMeta(DataOutput stream, StringMap tags) throws IOException{
//prepare campaign data for writing
if(state.isCampaign()){
state.secinfo.prepare();
}
writeStringMap(stream, StringMap.of(
"saved", Time.millis(),
"playtime", headless ? 0 : control.saves.getTotalPlaytime(),
@@ -78,6 +83,7 @@ public abstract class SaveVersion extends SaveFileReader{
"wave", state.wave,
"wavetime", state.wavetime,
"stats", JsonIO.write(state.stats),
"secinfo", state.isCampaign() ? JsonIO.write(state.secinfo) : "{}",
"rules", JsonIO.write(state.rules),
"mods", JsonIO.write(mods.getModStrings().toArray(String.class)),
"width", world.width(),
@@ -94,6 +100,7 @@ public abstract class SaveVersion extends SaveFileReader{
state.wave = map.getInt("wave");
state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing);
state.stats = JsonIO.read(Stats.class, map.get("stats", "{}"));
state.secinfo = JsonIO.read(SectorInfo.class, map.get("secinfo", "{}"));
state.rules = JsonIO.read(Rules.class, map.get("rules", "{}"));
if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get();
lastReadBuild = map.getInt("build", -1);