From 8540448bdc48ba344d60e9602ae25a15a5cf8066 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 5 Feb 2023 11:40:26 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BD=D1=83=20=D0=B4=D0=B0,=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kstarbound/StarboundJsonAdapters.kt | 2 ++ .../defs/animation/AnimationDefinition.kt | 7 ++++++ .../defs/animation/ParticleDefinition.kt | 16 ++++++------ .../kstarbound/io/json/VectorJson.kt | 25 +++++++++++++++++++ 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/StarboundJsonAdapters.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/StarboundJsonAdapters.kt index 77ca8c92..f41979c1 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/StarboundJsonAdapters.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/StarboundJsonAdapters.kt @@ -31,6 +31,7 @@ import ru.dbotthepony.kstarbound.io.json.AABBiTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector2dTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector2fTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector2iTypeAdapter +import ru.dbotthepony.kstarbound.io.json.Vector4dTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector4iTypeAdapter import ru.dbotthepony.kstarbound.io.json.builder.EnumAdapter import ru.dbotthepony.kstarbound.math.PolyTypeAdapter @@ -51,6 +52,7 @@ fun addStarboundJsonAdapters(builder: GsonBuilder) { registerTypeAdapter(Vector2fTypeAdapter) registerTypeAdapter(Vector2iTypeAdapter) registerTypeAdapter(Vector4iTypeAdapter) + registerTypeAdapter(Vector4dTypeAdapter) registerTypeAdapter(PolyTypeAdapter) // Снаряды diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/AnimationDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/AnimationDefinition.kt index 2355523c..06a8035e 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/AnimationDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/AnimationDefinition.kt @@ -5,12 +5,14 @@ import com.google.common.collect.ImmutableMap import ru.dbotthepony.kstarbound.defs.image.SpriteReference import ru.dbotthepony.kstarbound.io.json.builder.JsonFactory import ru.dbotthepony.kvector.vector.ndouble.Vector2d +import ru.dbotthepony.kvector.vector.ndouble.Vector4d @JsonFactory data class AnimationDefinition( val animatedParts: AnimatedParts? = null, val sounds: ImmutableMap = ImmutableMap.of(), val transformationGroups: ImmutableMap = ImmutableMap.of(), + val particleEmitters: ImmutableMap = ImmutableMap.of(), ) { @JsonFactory data class TransformConfig( @@ -25,6 +27,11 @@ data class AnimationDefinition( @JsonFactory data class ParticleEmitter( + val enabled: Boolean = true, + val emissionRate: Double = 1.0, + val count: Int = 1, + val offset: Vector2d? = null, + val offsetRegion: Vector4d? = null, val transformationGroups: ImmutableList = ImmutableList.of(), val particles: ImmutableList ) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/ParticleDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/ParticleDefinition.kt index 7f439998..2570e195 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/ParticleDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/animation/ParticleDefinition.kt @@ -1,6 +1,6 @@ package ru.dbotthepony.kstarbound.defs.animation -import com.google.common.collect.ImmutableList +import ru.dbotthepony.kstarbound.defs.AssetReference import ru.dbotthepony.kstarbound.defs.image.SpriteReference import ru.dbotthepony.kstarbound.io.json.builder.JsonFactory import ru.dbotthepony.kvector.vector.ndouble.Vector2d @@ -9,14 +9,14 @@ import ru.dbotthepony.kvector.vector.ndouble.Vector4d @JsonFactory data class ParticleDefinition( val count: Int = 1, - val offset: Vector2d = Vector2d.ZERO, - val offsetRegion: Vector4d = Vector4d.ZERO, - val particles: ImmutableList, + val offset: Vector2d? = null, + val offsetRegion: Vector4d? = null, + val particle: Config, ) { @JsonFactory data class Config( val type: ParticleType, - val animation: AnimationDefinition? = null, + val animation: AssetReference? = null, val image: SpriteReference? = null, val position: Vector2d = Vector2d.ZERO, val offsetRegion: Vector4d = Vector4d.ZERO, @@ -24,11 +24,11 @@ data class ParticleDefinition( val finalVelocity: Vector2d = Vector2d.ZERO, val approach: Vector2d = Vector2d.ZERO, val angularVelocity: Double = 0.0, - val destructionAction: DestructionAction, - val destructionTime: Double, + val destructionAction: DestructionAction? = null, + val destructionTime: Double? = null, val fade: Double = 0.0, val size: Double = 1.0, - val layer: ParticleLayer, + val layer: ParticleLayer? = null, val timeToLive: Double = 1.0, val variance: Variance = Variance.EMPTY ) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/VectorJson.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/VectorJson.kt index cd526183..1f0b7007 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/VectorJson.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/VectorJson.kt @@ -4,6 +4,7 @@ import com.google.gson.TypeAdapter import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonWriter import ru.dbotthepony.kvector.vector.ndouble.Vector2d +import ru.dbotthepony.kvector.vector.ndouble.Vector4d import ru.dbotthepony.kvector.vector.nfloat.Vector2f import ru.dbotthepony.kvector.vector.nint.Vector2i import ru.dbotthepony.kvector.vector.nint.Vector4i @@ -32,6 +33,30 @@ object Vector4iTypeAdapter : TypeAdapter() { } } +object Vector4dTypeAdapter : TypeAdapter() { + override fun write(out: JsonWriter, value: Vector4d) { + `out`.beginArray() + `out`.value(value.x) + `out`.value(value.y) + `out`.value(value.z) + `out`.value(value.w) + `out`.endArray() + } + + override fun read(`in`: JsonReader): Vector4d { + `in`.beginArray() + + val x = `in`.nextDouble() + val y = `in`.nextDouble() + val z = `in`.nextDouble() + val w = `in`.nextDouble() + + `in`.endArray() + + return Vector4d(x, y, z, w) + } +} + object Vector2iTypeAdapter : TypeAdapter() { override fun write(out: JsonWriter, value: Vector2i) { `out`.beginArray()