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) @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 { override fun toData(value: RowPattern): String {
return value.pattern return value.pattern
} }
@@ -79,7 +79,10 @@ public sealed interface SelectedRoomsAndTopLayer {
} }
public object Serializer : 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> { override fun toData(value: SelectedRoomsAndTopLayer): Set<Int> {
return value.rooms return value.rooms
} }
@@ -128,7 +131,10 @@ private sealed class AbstractSelectedRoomsAndTopLayer : SelectedRoomsAndTopLayer
@Serializable(SelectedRoomsOrTopLayer.Serializer::class) @Serializable(SelectedRoomsOrTopLayer.Serializer::class)
public sealed interface SelectedRoomsOrTopLayer : SelectedRoomsAndTopLayer { public sealed interface SelectedRoomsOrTopLayer : SelectedRoomsAndTopLayer {
public object Serializer : 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> { override fun toData(value: SelectedRoomsOrTopLayer): Set<Int> {
return value.rooms return value.rooms
} }
@@ -161,7 +167,10 @@ public sealed interface SingleSelectedRoomOrTopLayer : SelectedRoomsOrTopLayer {
} }
public object Serializer : 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> { override fun toData(value: SingleSelectedRoomOrTopLayer): Set<Int> {
return value.rooms return value.rooms
} }
@@ -214,7 +223,7 @@ public sealed interface SelectedRooms : SelectedRoomsOrTopLayer {
} }
public object Serializer : 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> { override fun toData(value: SelectedRooms): Set<Int> {
return value.rooms return value.rooms
} }
@@ -248,7 +257,7 @@ public sealed interface SelectedTopLayer : SingleSelectedRoomOrTopLayer {
} }
public object Serializer : 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> { override fun toData(value: SelectedTopLayer): Set<Int> {
return value.rooms return value.rooms
} }
@@ -285,7 +294,7 @@ public sealed interface SingleSelectedRoom : SingleSelectedRoomOrTopLayer, Selec
} }
public object Serializer : 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> { override fun toData(value: SingleSelectedRoom): Set<Int> {
return value.rooms return value.rooms
} }
@@ -84,7 +84,7 @@ public abstract class AudioGroup(
* @param soundType The type of sound group. * @param soundType The type of sound group.
*/ */
public abstract class BaseSerializer<T : AudioGroup>(protected val soundType: String) : 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]. * 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 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 { override fun toData(value: PulseFreeTimeBeatEvent): Data {
return Data.fromBase(value).apply { return Data.fromBase(value).apply {
action = value.action.action action = value.action.action
@@ -66,7 +66,10 @@ public data class SetGameSoundEvent private constructor(
public object Serializer : JsonTransformingSerializer<SetGameSoundEvent>(DataSerializer) { public object Serializer : JsonTransformingSerializer<SetGameSoundEvent>(DataSerializer) {
@OptIn(RDKTInternalAPI::class) @OptIn(RDKTInternalAPI::class)
private object DataSerializer : private object DataSerializer :
TransformSerializer<SetGameSoundEvent, SetGameSoundEvent>(generatedSerializer()) { TransformSerializer<SetGameSoundEvent, SetGameSoundEvent>(
generatedSerializer().descriptor.serialName,
generatedSerializer()
) {
override fun toData(value: SetGameSoundEvent) = value override fun toData(value: SetGameSoundEvent) = value
override fun fromData(data: SetGameSoundEvent): SetGameSoundEvent { 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 { override fun toData(value: SetRowXsEvent): Data {
return Data.fromBase(value).apply { return Data.fromBase(value).apply {
pattern = value.pattern pattern = value.pattern
@@ -18,10 +18,14 @@ import kotlinx.serialization.encoding.Encoder
@RDKTInternalAPI @RDKTInternalAPI
@SubclassOptInRequired(RDKTInternalAPI::class) @SubclassOptInRequired(RDKTInternalAPI::class)
public abstract class TransformSerializer<T, Data>( public abstract class TransformSerializer<T, Data>(
serialName: String,
private val dataSerializer: KSerializer<Data> private val dataSerializer: KSerializer<Data>
) : KSerializer<T> { ) : KSerializer<T> {
override val descriptor: SerialDescriptor override val descriptor: SerialDescriptor = if (dataSerializer.descriptor.serialName == serialName) {
get() = dataSerializer.descriptor dataSerializer.descriptor
} else {
SerialDescriptor(serialName, dataSerializer.descriptor)
}
override fun serialize(encoder: Encoder, value: T) { override fun serialize(encoder: Encoder, value: T) {
val data = toData(value) val data = toData(value)