40 lines
1.6 KiB
Kotlin
40 lines
1.6 KiB
Kotlin
package ru.dbotthepony.kstarbound.defs.particle
|
|
|
|
import com.google.common.collect.ImmutableList
|
|
import ru.dbotthepony.kommons.vector.Vector2d
|
|
import ru.dbotthepony.kstarbound.defs.animation.DestructionAction
|
|
import ru.dbotthepony.kstarbound.json.builder.JsonImplementation
|
|
import ru.dbotthepony.kstarbound.util.VirtualProperty
|
|
import ru.dbotthepony.kstarbound.util.SBPattern
|
|
|
|
@JsonImplementation(ParticleConfig::class)
|
|
interface IParticleConfig : IParticleVariance {
|
|
val finalVelocity: Vector2d?
|
|
val destructionAction: DestructionAction?
|
|
val destructionTime: Double?
|
|
val fade: Double?
|
|
val layer: ParticleLayer?
|
|
val timeToLive: Double?
|
|
val variance: IParticleVariance?
|
|
val text: SBPattern?
|
|
|
|
companion object {
|
|
fun chain(vararg particles: IParticleConfig): IParticleConfig {
|
|
val chain = IParticleVariance.chain(*particles)
|
|
@Suppress("name_shadowing")
|
|
val particles = ImmutableList.copyOf(particles)
|
|
|
|
return object : IParticleConfig, IParticleVariance by chain {
|
|
override val finalVelocity by VirtualProperty(IParticleConfig::finalVelocity, particles)
|
|
override val destructionAction by VirtualProperty(IParticleConfig::destructionAction, particles)
|
|
override val destructionTime by VirtualProperty(IParticleConfig::destructionTime, particles)
|
|
override val fade by VirtualProperty(IParticleConfig::fade, particles)
|
|
override val layer by VirtualProperty(IParticleConfig::layer, particles)
|
|
override val timeToLive by VirtualProperty(IParticleConfig::timeToLive, particles)
|
|
override val variance by VirtualProperty(IParticleConfig::variance, particles)
|
|
override val text by VirtualProperty(IParticleConfig::text, particles)
|
|
}
|
|
}
|
|
}
|
|
}
|