Automatic assignment of entities

This commit is contained in:
Anuken
2020-04-27 01:31:41 -04:00
parent 2f3c098b50
commit a4d49f5d17
11 changed files with 102 additions and 29 deletions

View File

@@ -1,17 +1,18 @@
package mindustry.io;
import arc.*;
import arc.files.*;
import arc.struct.*;
import arc.files.Fi;
import arc.util.io.CounterInputStream;
import arc.util.io.FastDeflaterOutputStream;
import mindustry.Vars;
import arc.util.io.*;
import mindustry.*;
import mindustry.game.EventType.*;
import mindustry.io.legacy.*;
import mindustry.io.versions.*;
import mindustry.world.WorldContext;
import mindustry.world.*;
import java.io.*;
import java.util.Arrays;
import java.util.zip.InflaterInputStream;
import java.util.*;
import java.util.zip.*;
import static mindustry.Vars.*;
@@ -151,6 +152,7 @@ public class SaveIO{
SaveVersion ver = versions.get(version);
ver.read(stream, counter, context);
Events.fire(new SaveLoadEvent());
}catch(Exception e){
throw new SaveException(e);
}finally{

View File

@@ -1,5 +1,7 @@
package mindustry.io;
import arc.*;
import arc.math.geom.*;
import arc.struct.*;
import arc.util.*;
import arc.util.io.*;
@@ -69,7 +71,9 @@ public abstract class SaveVersion extends SaveFileReader{
"rules", JsonIO.write(state.rules),
"mods", JsonIO.write(mods.getModStrings().toArray(String.class)),
"width", world.width(),
"height", world.height()
"height", world.height(),
"viewpos", Tmp.v1.set(player == null ? Vec2.ZERO : player).toString(),
"controlledType", headless || control.input.controlledType == null ? "null" : control.input.controlledType.name
).merge(tags));
}
@@ -83,6 +87,14 @@ public abstract class SaveVersion extends SaveFileReader{
if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get();
lastReadBuild = map.getInt("build", -1);
if(!headless){
Tmp.v1.tryFromString(map.get("viewpos"));
Core.camera.position.set(Tmp.v1);
player.set(Tmp.v1);
control.input.controlledType = content.getByName(ContentType.unit, map.get("controlledType"));
}
Map worldmap = maps.byName(map.get("mapname", "\\\\\\"));
state.map = worldmap == null ? new Map(StringMap.of(
"name", map.get("mapname", "Unknown"),
@@ -184,7 +196,6 @@ public abstract class SaveVersion extends SaveFileReader{
//read blocks
for(int i = 0; i < width * height; i++){
int x = i % width, y = i / width;
Block block = content.block(stream.readShort());
Tile tile = context.tile(i);
if(block == null) block = Blocks.air;