Fixed logic config() called in clients / JSON-compatible effects

This commit is contained in:
Anuken
2020-11-01 10:30:30 -05:00
parent 187cb79265
commit d786c8668e
8 changed files with 165 additions and 10 deletions

View File

@@ -7,6 +7,7 @@ import arc.files.*;
import arc.func.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.mock.*;
import arc.struct.*;
import arc.util.*;
@@ -19,6 +20,7 @@ import mindustry.content.TechTree.*;
import mindustry.ctype.*;
import mindustry.entities.*;
import mindustry.entities.bullet.*;
import mindustry.entities.effect.*;
import mindustry.game.*;
import mindustry.game.Objectives.*;
import mindustry.gen.*;
@@ -41,7 +43,17 @@ public class ContentParser{
ObjectSet<Class<?>> implicitNullable = ObjectSet.with(TextureRegion.class, TextureRegion[].class, TextureRegion[][].class);
ObjectMap<Class<?>, FieldParser> classParsers = new ObjectMap<>(){{
put(Effect.class, (type, data) -> field(Fx.class, data));
put(Effect.class, (type, data) -> {
if(data.isString()){
return field(Fx.class, data);
}
Class<? extends Effect> bc = data.has("type") ? resolve(data.getString("type"), "mindustry.entities.effect") : ParticleEffect.class;
data.remove("type");
Effect result = make(bc);
readFields(result, data);
return result;
});
put(Interp.class, (type, data) -> field(Interp.class, data));
put(Schematic.class, (type, data) -> {
Object result = fieldOpt(Loadouts.class, data);
if(result != null){