From 8d5cd7b81463d2387b49f164ab6ad799626129ad Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 8 May 2020 20:22:11 -0400 Subject: [PATCH] Serialization that makes more sense --- .../resources/revisions/WeatherEntity/1.json | 1 + .../resources/revisions/WeatherEntity/2.json | 1 + .../src/mindustry/entities/def/BulletComp.java | 2 +- core/src/mindustry/entities/def/DecalComp.java | 2 +- .../src/mindustry/entities/def/EffectComp.java | 4 +--- core/src/mindustry/io/SaveVersion.java | 10 +++++----- core/src/mindustry/io/TypeIO.java | 9 +++++++++ core/src/mindustry/mod/Scripts.java | 2 +- core/src/mindustry/type/Weather.java | 9 +++++++-- .../world/blocks/distribution/Router.java | 18 +++++++++--------- 10 files changed, 36 insertions(+), 22 deletions(-) create mode 100644 annotations/src/main/resources/revisions/WeatherEntity/1.json create mode 100644 annotations/src/main/resources/revisions/WeatherEntity/2.json diff --git a/annotations/src/main/resources/revisions/WeatherEntity/1.json b/annotations/src/main/resources/revisions/WeatherEntity/1.json new file mode 100644 index 0000000000..f4e8c1ac58 --- /dev/null +++ b/annotations/src/main/resources/revisions/WeatherEntity/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:intensity,type:float,size:4},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/WeatherEntity/2.json b/annotations/src/main/resources/revisions/WeatherEntity/2.json new file mode 100644 index 0000000000..81211ecea6 --- /dev/null +++ b/annotations/src/main/resources/revisions/WeatherEntity/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:intensity,type:float,size:4},{name:opacity,type:float,size:4},{name:weather,type:mindustry.type.Weather,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/core/src/mindustry/entities/def/BulletComp.java b/core/src/mindustry/entities/def/BulletComp.java index 38b4df9ce4..2dc1e61d75 100644 --- a/core/src/mindustry/entities/def/BulletComp.java +++ b/core/src/mindustry/entities/def/BulletComp.java @@ -13,7 +13,7 @@ import mindustry.graphics.*; import static mindustry.Vars.*; -@EntityDef(value = {Bulletc.class}, pooled = true) +@EntityDef(value = {Bulletc.class}, pooled = true, serialize = false) @Component abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Drawc, Shielderc, Ownerc, Velc, Bulletc, Timerc{ @Import Team team; diff --git a/core/src/mindustry/entities/def/DecalComp.java b/core/src/mindustry/entities/def/DecalComp.java index 2eae302f95..814e451e49 100644 --- a/core/src/mindustry/entities/def/DecalComp.java +++ b/core/src/mindustry/entities/def/DecalComp.java @@ -7,7 +7,7 @@ import mindustry.annotations.Annotations.*; import mindustry.gen.*; import mindustry.graphics.*; -@EntityDef(value = {Decalc.class}, pooled = true) +@EntityDef(value = {Decalc.class}, pooled = true, serialize = false) @Component abstract class DecalComp implements Drawc, Timedc, Rotc, Posc{ @Import float x, y, rotation; diff --git a/core/src/mindustry/entities/def/EffectComp.java b/core/src/mindustry/entities/def/EffectComp.java index e1b72844de..e322e856b6 100644 --- a/core/src/mindustry/entities/def/EffectComp.java +++ b/core/src/mindustry/entities/def/EffectComp.java @@ -1,13 +1,11 @@ package mindustry.entities.def; import arc.graphics.*; -import arc.graphics.g2d.*; import mindustry.annotations.Annotations.*; import mindustry.entities.*; import mindustry.gen.*; -import mindustry.graphics.*; -@EntityDef(value = {Effectc.class, Childc.class}, pooled = true) +@EntityDef(value = {Effectc.class, Childc.class}, pooled = true, serialize = false) @Component abstract class EffectComp implements Posc, Drawc, Timedc, Rotc, Childc{ Color color = new Color(Color.white); diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 9a558d976f..8166af6feb 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -252,8 +252,8 @@ public abstract class SaveVersion extends SaveFileReader{ } } - stream.writeInt(Groups.sync.count(Entityc::serialize)); - for(Syncc entity : Groups.sync){ + stream.writeInt(Groups.all.count(Entityc::serialize)); + for(Entityc entity : Groups.all){ if(!entity.serialize()) continue; writeChunk(stream, true, out -> { @@ -278,9 +278,9 @@ public abstract class SaveVersion extends SaveFileReader{ for(int j = 0; j < amount; j++){ readChunk(stream, true, in -> { byte typeid = in.readByte(); - Syncc sync = (Syncc)EntityMapping.map(typeid).get(); - sync.read(Reads.get(in)); - sync.add(); + Entityc entity = (Entityc)EntityMapping.map(typeid).get(); + entity.read(Reads.get(in)); + entity.add(); }); } } diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index 8b7bc27210..0357735dee 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -259,6 +259,15 @@ public class TypeIO{ return id == -1 ? null : content.item(id); } + public static void writeWeather(Writes write, Weather item){ + write.s(item == null ? -1 : item.id); + } + + public static Weather readWeather(Reads read){ + short id = read.s(); + return id == -1 ? null : content.getByID(ContentType.weather, id); + } + public static void writeString(Writes write, String string){ if(string != null){ byte[] bytes = string.getBytes(charset); diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index f78645915f..3559400beb 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -19,7 +19,7 @@ import java.util.regex.*; public class Scripts implements Disposable{ private final Array blacklist = Array.with("net", "files", "reflect", "javax", "rhino", "file", "channels", "jdk", "runtime", "util.os", "rmi", "security", "org.", "sun.", "beans", "sql", "http", "exec", "compiler", "process", "system", - ".awt", "socket", "classloader", "oracle", "invoke", "arc.events"); + ".awt", "socket", "classloader", "oracle", "invoke", "arc.events", "java.util.function", "java.util.stream"); private final Array whitelist = Array.with("mindustry.net", "netserver", "netclient", "com.sun.proxy.$proxy"); private final Context context; private Scriptable scope; diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index 19245cf7a0..33e5d6f379 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -52,17 +52,22 @@ public abstract class Weather extends MappableContent{ @Component abstract class WeatherComp implements Posc, Drawc{ Weather weather; - float intensity = 1f; + float intensity = 1f, opacity = 1f; void init(Weather weather){ this.weather = weather; } + @Override + public void update(){ + weather.update((Weatherc)this); + } + @Override public void draw(){ if(renderer.weatherAlpha() > 0.0001f){ Draw.draw(Layer.weather, () -> { - Draw.alpha(renderer.weatherAlpha()); + Draw.alpha(renderer.weatherAlpha() * opacity); weather.draw((Weatherc)this); Draw.reset(); }); diff --git a/core/src/mindustry/world/blocks/distribution/Router.java b/core/src/mindustry/world/blocks/distribution/Router.java index 97d0ffb772..7e06328b84 100644 --- a/core/src/mindustry/world/blocks/distribution/Router.java +++ b/core/src/mindustry/world/blocks/distribution/Router.java @@ -56,6 +56,15 @@ public class Router extends Block{ lastInput = source.tile(); } + @Override + public int removeStack(Item item, int amount){ + int result = super.removeStack(item, amount); + if(result != 0 && item == lastItem){ + lastItem = null; + } + return result; + } + Tilec getTileTarget(Item item, Tile from, boolean set){ int counter = tile.rotation(); for(int i = 0; i < proximity.size; i++){ @@ -68,14 +77,5 @@ public class Router extends Block{ } return null; } - - @Override - public int removeStack(Item item, int amount){ - int result = super.removeStack(item, amount); - if(result != 0 && item == lastItem){ - lastItem = null; - } - return result; - } } }