Fixed serialName in TransformSerializer.

This commit is contained in:
2026-03-08 02:58:02 +08:00
parent f5413f92ff
commit 9463ee0dfa
7 changed files with 30 additions and 13 deletions
@@ -123,7 +123,7 @@ public class RowPattern {
}
@OptIn(RDKTInternalAPI::class)
public object Serializer : TransformSerializer<RowPattern, String>(String.serializer()) {
public object Serializer : TransformSerializer<RowPattern, String>("RowPattern", String.serializer()) {
override fun toData(value: RowPattern): String {
return value.pattern
}
@@ -79,7 +79,10 @@ public sealed interface SelectedRoomsAndTopLayer {
}
public object Serializer :
TransformSerializer<SelectedRoomsAndTopLayer, Set<Int>>(kotlinx.serialization.serializer()) {
TransformSerializer<SelectedRoomsAndTopLayer, Set<Int>>(
"SelectedRoomsAndTopLayer",
kotlinx.serialization.serializer()
) {
override fun toData(value: SelectedRoomsAndTopLayer): Set<Int> {
return value.rooms
}
@@ -128,7 +131,10 @@ private sealed class AbstractSelectedRoomsAndTopLayer : SelectedRoomsAndTopLayer
@Serializable(SelectedRoomsOrTopLayer.Serializer::class)
public sealed interface SelectedRoomsOrTopLayer : SelectedRoomsAndTopLayer {
public object Serializer :
TransformSerializer<SelectedRoomsOrTopLayer, Set<Int>>(SetSerializer(Int.serializer())) {
TransformSerializer<SelectedRoomsOrTopLayer, Set<Int>>(
"SelectedRoomsOrTopLayer",
SetSerializer(Int.serializer())
) {
override fun toData(value: SelectedRoomsOrTopLayer): Set<Int> {
return value.rooms
}
@@ -161,7 +167,10 @@ public sealed interface SingleSelectedRoomOrTopLayer : SelectedRoomsOrTopLayer {
}
public object Serializer :
TransformSerializer<SingleSelectedRoomOrTopLayer, Set<Int>>(SetSerializer(Int.serializer())) {
TransformSerializer<SingleSelectedRoomOrTopLayer, Set<Int>>(
"SingleSelectedRoomOrTopLayer",
SetSerializer(Int.serializer())
) {
override fun toData(value: SingleSelectedRoomOrTopLayer): Set<Int> {
return value.rooms
}
@@ -214,7 +223,7 @@ public sealed interface SelectedRooms : SelectedRoomsOrTopLayer {
}
public object Serializer :
TransformSerializer<SelectedRooms, Set<Int>>(SetSerializer(Int.serializer())) {
TransformSerializer<SelectedRooms, Set<Int>>("SelectedRooms", SetSerializer(Int.serializer())) {
override fun toData(value: SelectedRooms): Set<Int> {
return value.rooms
}
@@ -248,7 +257,7 @@ public sealed interface SelectedTopLayer : SingleSelectedRoomOrTopLayer {
}
public object Serializer :
TransformSerializer<SelectedTopLayer, Set<Int>>(SetSerializer(Int.serializer())) {
TransformSerializer<SelectedTopLayer, Set<Int>>("SelectedTopLayer", SetSerializer(Int.serializer())) {
override fun toData(value: SelectedTopLayer): Set<Int> {
return value.rooms
}
@@ -285,7 +294,7 @@ public sealed interface SingleSelectedRoom : SingleSelectedRoomOrTopLayer, Selec
}
public object Serializer :
TransformSerializer<SingleSelectedRoom, Set<Int>>(SetSerializer(Int.serializer())) {
TransformSerializer<SingleSelectedRoom, Set<Int>>("SingleSelectedRoom", SetSerializer(Int.serializer())) {
override fun toData(value: SingleSelectedRoom): Set<Int> {
return value.rooms
}
@@ -84,7 +84,7 @@ public abstract class AudioGroup(
* @param soundType The type of sound group.
*/
public abstract class BaseSerializer<T : AudioGroup>(protected val soundType: String) :
TransformSerializer<T, List<RawSubGroupAudioData>>(kotlinx.serialization.serializer()) {
TransformSerializer<T, List<RawSubGroupAudioData>>(soundType, kotlinx.serialization.serializer()) {
/**
* Creates an instance of [T] from a map of subtype identifiers to [SubGroupAudioData].
*/
@@ -58,7 +58,8 @@ public data class PulseFreeTimeBeatEvent @JvmOverloads constructor(
public object Remove : Action("Remove")
}
public object Serializer : TransformSerializer<PulseFreeTimeBeatEvent, Serializer.Data>(Data.serializer()) {
public object Serializer :
TransformSerializer<PulseFreeTimeBeatEvent, Serializer.Data>("PulseFreeTimeBeat", Data.serializer()) {
override fun toData(value: PulseFreeTimeBeatEvent): Data {
return Data.fromBase(value).apply {
action = value.action.action
@@ -66,7 +66,10 @@ public data class SetGameSoundEvent private constructor(
public object Serializer : JsonTransformingSerializer<SetGameSoundEvent>(DataSerializer) {
@OptIn(RDKTInternalAPI::class)
private object DataSerializer :
TransformSerializer<SetGameSoundEvent, SetGameSoundEvent>(generatedSerializer()) {
TransformSerializer<SetGameSoundEvent, SetGameSoundEvent>(
generatedSerializer().descriptor.serialName,
generatedSerializer()
) {
override fun toData(value: SetGameSoundEvent) = value
override fun fromData(data: SetGameSoundEvent): SetGameSoundEvent {
@@ -140,7 +140,7 @@ public data class SetRowXsEvent(
}
}
public object Serializer : TransformSerializer<SetRowXsEvent, Serializer.Data>(Data.serializer()) {
public object Serializer : TransformSerializer<SetRowXsEvent, Serializer.Data>("SetRowXs", Data.serializer()) {
override fun toData(value: SetRowXsEvent): Data {
return Data.fromBase(value).apply {
pattern = value.pattern
@@ -18,10 +18,14 @@ import kotlinx.serialization.encoding.Encoder
@RDKTInternalAPI
@SubclassOptInRequired(RDKTInternalAPI::class)
public abstract class TransformSerializer<T, Data>(
serialName: String,
private val dataSerializer: KSerializer<Data>
) : KSerializer<T> {
override val descriptor: SerialDescriptor
get() = dataSerializer.descriptor
override val descriptor: SerialDescriptor = if (dataSerializer.descriptor.serialName == serialName) {
dataSerializer.descriptor
} else {
SerialDescriptor(serialName, dataSerializer.descriptor)
}
override fun serialize(encoder: Encoder, value: T) {
val data = toData(value)