Added SetVFXPresetEvent.

This commit is contained in:
2026-03-23 00:24:24 +08:00
parent 546fa84a85
commit a0133a1745
3 changed files with 951 additions and 1 deletions
@@ -9,6 +9,7 @@ import cn.rdlevel.rdkt.core.serialization.TransformSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.builtins.serializer
import kotlin.jvm.JvmField
import kotlin.jvm.JvmName
import kotlin.jvm.JvmOverloads
import kotlin.jvm.JvmStatic
@@ -111,6 +112,28 @@ public sealed interface Color : ColorOrPalette {
*/
public fun toHex(): String
/**
* Creates a new [Color] instance with the same green and blue components but a different red component.
*/
public fun withRed(red: Int): Color = of(red, green, blue)
/**
* Creates a new [Color] instance with the same red and blue components but a different green component.
*/
public fun withGreen(green: Int): Color = of(red, green, blue)
/**
* Creates a new [Color] instance with the same red and green components but a different blue component.
*/
public fun withBlue(blue: Int): Color = of(red, green, blue)
/**
* Creates a new [ColorWithAlpha] instance with the same red, green, and blue components but a specified alpha component.
* The alpha component is optional and defaults to 255 (fully opaque) if not provided.
*/
@JvmOverloads
public fun withAlpha(alpha: Int = 255): ColorWithAlpha = ColorWithAlpha.of(red, green, blue, alpha)
public object Serializer : PolymorphicDelegatedSerializer<Color, ColorOrPalette>(ColorOrPalette.serializer())
public companion object {
@@ -151,6 +174,26 @@ public sealed interface ColorWithAlpha : Color, ColorWithAlphaOrPalette {
public override fun toHex(): String
/**
* Creates a new [ColorWithAlpha] instance with a different red component.
*/
public override fun withRed(red: Int): ColorWithAlpha = of(red, green, blue, alpha)
/**
* Creates a new [ColorWithAlpha] instance with a different green component.
*/
public override fun withGreen(green: Int): ColorWithAlpha = of(red, green, blue, alpha)
/**
* Creates a new [ColorWithAlpha] instance with a different blue component.
*/
public override fun withBlue(blue: Int): ColorWithAlpha = of(red, green, blue, alpha)
/**
* Creates a new [ColorWithAlpha] instance with a different alpha component.
*/
public override fun withAlpha(alpha: Int): ColorWithAlpha = of(red, green, blue, alpha)
public object Serializer :
PolymorphicDelegatedSerializer<ColorWithAlpha, ColorWithAlphaOrPalette>(ColorWithAlphaOrPalette.serializer())
@@ -290,4 +333,10 @@ public fun colorOf(r: Int, g: Int, b: Int): Color = Color.of(r, g, b)
* Creates a [ColorWithAlpha] instance with the specified RGBA components. The alpha component is optional and defaults to 255 (fully opaque) if not provided.
*/
@JvmName("ofColor")
public fun colorOf(r: Int, g: Int, b: Int, a: Int = 255): ColorWithAlpha = ColorWithAlpha.of(r, g, b, a)
public fun colorOf(r: Int, g: Int, b: Int, a: Int = 255): ColorWithAlpha = ColorWithAlpha.of(r, g, b, a)
@JvmField
public val WHITE: ColorWithAlpha = colorOf(255, 255, 255, 255)
@JvmField
public val BLACK: ColorWithAlpha = colorOf(0, 0, 0, 255)
@@ -0,0 +1,877 @@
@file:OptIn(ExperimentalSerializationApi::class)
package cn.rdlevel.rdkt.core.data.action
import cn.rdlevel.rdkt.core.annotations.RDDeprecated
import cn.rdlevel.rdkt.core.data.*
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonClassDiscriminator
import kotlin.jvm.JvmField
@Serializable
@JsonClassDiscriminator("preset")
public sealed interface VFXPreset {
public val rooms: RoomsOrTopLayer
@Serializable
@SerialName("Vignette")
public class Vignette(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("VignetteFlicker")
public class VignetteFlicker(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("CutsceneMode")
public class CutsceneMode(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("WavyRows")
public class WavyRows(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, SpeedSpecificVFXPreset,
DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var speedPerc: Double? = 100.0
set(value) {
checkSpeed(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("LightStripVert")
public class LightStripVert(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("SilhouettesOnHBeat")
public class SilhouettesOnHBeat(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ColourfulShockwaves")
public class ColourfulShockwaves(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("BassDropOnHit")
public class BassDropOnHit(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ShakeOnHeartBeat")
public class ShakeOnHeartBeat(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ShakeOnHit")
public class ShakeOnHit(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("NumbersAbovePulses")
public class NumbersAbovePulses(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("FallingPetals")
public class FallingPetals(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("FallingPetalsInstant")
public class FallingPetalsInstant(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("FallingPetalsSnow")
public class FallingPetalsSnow(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("FallingLeaves")
public class FallingLeaves(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Rain")
public class Rain(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Snow")
public class Snow(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Blizzard")
public class Blizzard(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Embers")
public class Embers(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, ColorSpecificVFXPreset,
DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = colorOf(208, 73, 73, 255)
}
}
@Serializable
@SerialName("Matrix")
public class Matrix(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Diamonds")
public class Diamonds(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, ColorSpecificVFXPreset,
DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = WHITE
}
}
@Serializable
@SerialName("Confetti")
public class Confetti(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ConfettiBurst")
public class ConfettiBurst(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Balloons")
public class Balloons(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("VHS")
public class VHS(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("VHSRewind")
public class VHSRewind(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Scanlines")
public class Scanlines(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Aberration")
public class Aberration(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("JPEG")
public class JPEG(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Grain")
public class Grain(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Blur")
public class Blur(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Blur")
public class RadialBlur(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, Vector2AmountSpecificVFXPreset,
DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var amount: Vector2 = Vector2.ONE
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Fisheye")
public class Fisheye(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("HallOfMirrors")
public class HallOfMirrors(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("TileN")
public class TileN(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, Vector2AmountSpecificVFXPreset,
DurationSpecificVFXPreset {
override var amount: Vector2 = Vector2.ONE
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("CustomScreenScroll")
public class CustomScreenScroll(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, Vector2SpeedSpecificVFXPreset,
DurationSpecificVFXPreset {
override var xySpeed: Vector2 = Vector2.ZERO
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("ScreenWaves")
public class ScreenWaves(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("HeatDistortion")
public class HeatDistortion(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Pixelate")
public class Pixelate(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, Vector2AmountSpecificVFXPreset, DurationSpecificVFXPreset {
override var amount: Vector2 = Vector2.ONE
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Mosaic")
public class Mosaic(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("GlassShatter")
public class GlassShatter(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("GlitchObstruction")
public class GlitchObstruction(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Noise")
public class Noise(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("HueShift")
public class HueShift(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Brightness")
public class Brightness(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Contrast")
public class Contrast(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("Saturation")
public class Saturation(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("BlackAndWhite")
public class BlackAndWhite(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Sepia")
public class Sepia(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Bloom")
public class Bloom(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, ThresholdSpecificVFXPreset, IntensitySpecificVFXPreset,
ColorSpecificVFXPreset, DurationSpecificVFXPreset {
override var threshold: Double? = 0.3
override var intensity: Double? = 5.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = WHITE
}
}
@Serializable
@SerialName("OrangeBloom")
public class OrangeBloom(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("BlueBloom")
public class BlueBloom(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Funk")
public class Funk(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Drawing")
public class Drawing(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, ColorSpecificVFXPreset,
SpeedSpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var speedPerc: Double? = 100.0
set(value) {
checkSpeed(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = BLACK
}
}
@Serializable
@SerialName("Dots")
public class Dots(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
}
@Serializable
@SerialName("EyesBig")
public class EyesBig(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, ColorSpecificVFXPreset,
Vector2SpeedSpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var xySpeed: Vector2 = Vector2.ZERO
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = WHITE
}
}
@Serializable
@SerialName("EyesSmall")
public class EyesSmall(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, ColorSpecificVFXPreset,
Vector2SpeedSpecificVFXPreset, DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var xySpeed: Vector2 = Vector2.ZERO
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = WHITE
}
}
@Serializable
@SerialName("Tutorial")
public class Tutorial(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset, IntensitySpecificVFXPreset, ColorSpecificVFXPreset,
DurationSpecificVFXPreset {
override var intensity: Double? = 100.0
set(value) {
checkIntensity(value)
field = value
}
override var color: ColorOrPalette? = DEFAULT_COLOR
override var duration: Double = 0.0
override var ease: Easing = Easing.LINEAR
public companion object {
@JvmField
public val DEFAULT_COLOR: ColorWithAlpha = WHITE
}
}
@Serializable
@SerialName("Tile2")
@RDDeprecated
public class Tile2(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Tile3")
@RDDeprecated
public class Tile3(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Tile4")
@RDDeprecated
public class Tile4(
override var enable: Boolean,
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ScreenScrollX")
@RDDeprecated
public class ScreenScrollX(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ScreenScroll")
@RDDeprecated
public class ScreenScroll(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ScreenScrollSansVHS")
@RDDeprecated
public class ScreenScrollSansVHS(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("ScreenScrollXSansVHS")
@RDDeprecated
public class ScreenScrollXSansVHS(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("RowGlowWhite")
@RDDeprecated
public class RowGlowWhite(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("RowOutline")
@RDDeprecated
public class RowOutline(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("RowShadow")
@RDDeprecated
public class RowShadow(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("RowAllWhite")
@RDDeprecated
public class RowAllWhite(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("RowSilhouetteGlow")
@RDDeprecated
public class RowSilhouetteGlow(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("RowPlain")
@RDDeprecated
public class RowPlain(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("Blackout")
@RDDeprecated
public class Blackout(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("MiawMiaw")
@RDDeprecated
public class MiawMiaw(
override var enable: Boolean,
override var rooms: Rooms,
) : RoomsSpecificVFXPreset, ToggleableVFXPreset
@Serializable
@SerialName("DisableAll")
public class DisableAll(
override var rooms: RoomsOrTopLayer,
) : RoomsOrTopLayerSpecificVFXPreset
}
public sealed interface RoomsOrTopLayerSpecificVFXPreset : VFXPreset {
override var rooms: RoomsOrTopLayer
}
public sealed interface RoomsSpecificVFXPreset : VFXPreset {
override var rooms: Rooms
}
public sealed interface ToggleableVFXPreset : VFXPreset {
public var enable: Boolean
}
public sealed interface ThresholdSpecificVFXPreset : VFXPreset {
public var threshold: Double?
}
public sealed interface IntensitySpecificVFXPreset : VFXPreset {
public var intensity: Double?
}
private fun IntensitySpecificVFXPreset.checkIntensity(value: Double? = intensity) {
require(value == null || value in -9999.0..9999.0) { "Intensity must be between -9999 and 9999, but was $value." }
}
public sealed interface ColorSpecificVFXPreset : VFXPreset {
public var color: ColorOrPalette?
}
public sealed interface Vector2AmountSpecificVFXPreset : VFXPreset {
public var amount: Vector2
}
public sealed interface SpeedSpecificVFXPreset : VFXPreset {
public var speedPerc: Double?
}
private fun SpeedSpecificVFXPreset.checkSpeed(value: Double? = speedPerc) {
require(value == null || value in -9999.0..9999.0) { "Speed must be between -9999 and 9999, but was $value." }
}
public sealed interface Vector2SpeedSpecificVFXPreset : VFXPreset {
public var xySpeed: Vector2
}
public sealed interface DurationSpecificVFXPreset : VFXPreset {
public var duration: Double
public var ease: Easing
}
@@ -0,0 +1,24 @@
@file:OptIn(RDKTInternalAPI::class)
package cn.rdlevel.rdkt.core.events
import cn.rdlevel.rdkt.core.annotations.RDKTInternalAPI
import cn.rdlevel.rdkt.core.data.RoomsOrTopLayer
import cn.rdlevel.rdkt.core.data.action.VFXPreset
import cn.rdlevel.rdkt.core.serialization.Flatten
import cn.rdlevel.rdkt.core.serialization.flatten
import kotlinx.serialization.*
@OptIn(ExperimentalSerializationApi::class)
@Serializable(SetVFXPresetEvent.Serializer::class)
@KeepGeneratedSerializer
@SerialName("SetVFXPreset")
public data class SetVFXPresetEvent(
@Flatten
var vfxPreset: VFXPreset
) : ActionEvent(), RoomsOrTopLayerSpecificEvent {
override val rooms: RoomsOrTopLayer
get() = vfxPreset.rooms
public object Serializer : KSerializer<SetVFXPresetEvent> by generatedSerializer().flatten()
}