Use short filter names in JSON

This commit is contained in:
Anuken
2021-07-17 16:46:35 -04:00
parent 0ed7934df0
commit f7f2b3438c
3 changed files with 29 additions and 19 deletions

View File

@@ -15,6 +15,7 @@ import mindustry.game.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.io.*; import mindustry.io.*;
import mindustry.maps.*;
import mindustry.maps.filters.*; import mindustry.maps.filters.*;
import mindustry.maps.filters.GenerateFilter.*; import mindustry.maps.filters.GenerateFilter.*;
import mindustry.ui.*; import mindustry.ui.*;
@@ -26,12 +27,6 @@ import static mindustry.Vars.*;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public class MapGenerateDialog extends BaseDialog{ public class MapGenerateDialog extends BaseDialog{
final Prov<GenerateFilter>[] filterTypes = new Prov[]{
NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new,
RiverNoiseFilter::new, OreFilter::new, OreMedianFilter::new, MedianFilter::new,
BlendFilter::new, MirrorFilter::new, ClearFilter::new, CoreSpawnFilter::new,
EnemySpawnFilter::new, SpawnPathFilter::new
};
final boolean applied; final boolean applied;
Pixmap pixmap; Pixmap pixmap;
@@ -333,7 +328,7 @@ public class MapGenerateDialog extends BaseDialog{
p.marginRight(14); p.marginRight(14);
p.defaults().size(195f, 56f); p.defaults().size(195f, 56f);
int i = 0; int i = 0;
for(var gen : filterTypes){ for(var gen : Maps.allFilterTypes){
var filter = gen.get(); var filter = gen.get();
var icon = filter.icon(); var icon = filter.icon();

View File

@@ -1,11 +1,13 @@
package mindustry.io; package mindustry.io;
import arc.util.*;
import arc.util.serialization.*; import arc.util.serialization.*;
import arc.util.serialization.Json.*; import arc.util.serialization.Json.*;
import mindustry.*; import mindustry.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.maps.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.*; import mindustry.world.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
@@ -215,6 +217,12 @@ public class JsonIO{
return item != null ? item : liquid; return item != null ? item : liquid;
} }
}); });
//use short names for all filter types
for(var filter : Maps.allFilterTypes){
var i = filter.get();
json.addClassTag(Strings.camelize(i.getClass().getSimpleName().replace("Filter", "")), i.getClass());
}
} }
static class CustomJson extends Json{ static class CustomJson extends Json{

View File

@@ -24,23 +24,30 @@ import mindustry.world.*;
import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.*;
import java.io.*; import java.io.*;
import java.util.concurrent.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class Maps{ public class Maps{
/** All generation filter types. */
public static Prov<GenerateFilter>[] allFilterTypes = new Prov[]{
NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new,
RiverNoiseFilter::new, OreFilter::new, OreMedianFilter::new, MedianFilter::new,
BlendFilter::new, MirrorFilter::new, ClearFilter::new, CoreSpawnFilter::new,
EnemySpawnFilter::new, SpawnPathFilter::new
};
/** List of all built-in maps. Filenames only. */ /** List of all built-in maps. Filenames only. */
private static String[] defaultMapNames = {"maze", "fortress", "labyrinth", "islands", "tendrils", "caldera", "wasteland", "shattered", "fork", "triad", "mudFlats", "moltenLake", "archipelago", "debrisField", "veins", "glacier", "passage"}; private static String[] defaultMapNames = {"maze", "fortress", "labyrinth", "islands", "tendrils", "caldera", "wasteland", "shattered", "fork", "triad", "mudFlats", "moltenLake", "archipelago", "debrisField", "veins", "glacier", "passage"};
/** Maps tagged as PvP */ /** Maps tagged as PvP */
static final String[] pvpMaps = {"veins", "glacier", "passage"}; private static String[] pvpMaps = {"veins", "glacier", "passage"};
/** All maps stored in an ordered array. */ /** All maps stored in an ordered array. */
private Seq<Map> maps = new Seq<>(); private Seq<Map> maps = new Seq<>();
/** Serializer for meta. */
private Json json = new Json();
private ShuffleMode shuffleMode = ShuffleMode.all; private ShuffleMode shuffleMode = ShuffleMode.all;
private @Nullable MapProvider shuffler; private @Nullable MapProvider shuffler;
private AsyncExecutor executor = new AsyncExecutor(2); private ExecutorService executor = Threads.executor(3);
private ObjectSet<Map> previewList = new ObjectSet<>(); private ObjectSet<Map> previewList = new ObjectSet<>();
public ShuffleMode getShuffleMode(){ public ShuffleMode getShuffleMode(){
@@ -352,20 +359,20 @@ public class Maps{
if(groups == null) return "[]"; if(groups == null) return "[]";
StringWriter buffer = new StringWriter(); StringWriter buffer = new StringWriter();
json.setWriter(new JsonWriter(buffer)); JsonIO.json.setWriter(new JsonWriter(buffer));
json.writeArrayStart(); JsonIO.json.writeArrayStart();
for(int i = 0; i < groups.size; i++){ for(int i = 0; i < groups.size; i++){
json.writeObjectStart(SpawnGroup.class, SpawnGroup.class); JsonIO.json.writeObjectStart(SpawnGroup.class, SpawnGroup.class);
groups.get(i).write(json); groups.get(i).write(JsonIO.json);
json.writeObjectEnd(); JsonIO.json.writeObjectEnd();
} }
json.writeArrayEnd(); JsonIO.json.writeArrayEnd();
return buffer.toString(); return buffer.toString();
} }
public Seq<SpawnGroup> readWaves(String str){ public Seq<SpawnGroup> readWaves(String str){
return str == null ? null : str.equals("[]") ? new Seq<>() : Seq.with(json.fromJson(SpawnGroup[].class, str)); return str == null ? null : str.equals("[]") ? new Seq<>() : Seq.with(JsonIO.json.fromJson(SpawnGroup[].class, str));
} }
public void loadPreviews(){ public void loadPreviews(){