RTS Control groups

This commit is contained in:
Anuken
2023-09-19 23:48:40 -04:00
parent e6b2e27d2a
commit aecd220574
8 changed files with 119 additions and 18 deletions

View File

@@ -124,7 +124,10 @@ public abstract class SaveVersion extends SaveFileReader{
node.save();
}
writeStringMap(stream, StringMap.of(
StringMap result = new StringMap();
result.putAll(tags);
writeStringMap(stream, result.merge(StringMap.of(
"saved", Time.millis(),
"playtime", headless ? 0 : control.saves.getTotalPlaytime(),
"build", Version.build,
@@ -135,13 +138,14 @@ public abstract class SaveVersion extends SaveFileReader{
"stats", JsonIO.write(state.stats),
"rules", JsonIO.write(state.rules),
"mods", JsonIO.write(mods.getModStrings().toArray(String.class)),
"controlGroups", headless || control == null ? "null" : JsonIO.write(control.input.controlGroups),
"width", world.width(),
"height", world.height(),
"viewpos", Tmp.v1.set(player == null ? Vec2.ZERO : player).toString(),
"controlledType", headless || control.input.controlledType == null ? "null" : control.input.controlledType.name,
"nocores", state.rules.defaultTeam.cores().isEmpty(),
"playerteam", player == null ? state.rules.defaultTeam.id : player.team().id
).merge(tags));
)));
}
public void readMeta(DataInput stream, WorldContext context) throws IOException{
@@ -177,6 +181,11 @@ public abstract class SaveVersion extends SaveFileReader{
if(!net.client() && team != Team.derelict){
player.team(team);
}
var groups = JsonIO.read(IntSeq[].class, map.get("controlGroups", "null"));
if(groups != null && groups.length == control.input.controlGroups.length){
control.input.controlGroups = groups;
}
}
Map worldmap = maps.byName(map.get("mapname", "\\\\\\"));