Progress on sector state
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user