diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt index 6da45c7..282415e 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt @@ -40,12 +40,3 @@ data class Colour( fun isPercentage(): Boolean = !isDecimal() } - -//@Serializable -//@SerialName("FactorioTiles") -//data class FactorioTiles( -// val tiles: List, -//) : FactorioObjectData() { -// @Transient -// override val objectName: String = "FactorioTiles" -//} diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioConfiguration.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioConfiguration.kt index 28787fa..8fd0333 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioConfiguration.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioConfiguration.kt @@ -8,15 +8,12 @@ import kotlinx.serialization.Transient @Serializable -//@SerialName("CONFIG") data class FactorioConfigurationUpdate( override val modVersion: String, val factorioData: FactorioGameDataUpdate, val allMods: List, val prototypes: List, ) : KafkatorioPacket() { -// @Transient - @EncodeDefault override val packetType = PacketType.CONFIG } diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt index 0228337..9477af1 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt @@ -2,11 +2,9 @@ package dev.adamko.kafkatorio.events.schema import kotlinx.serialization.EncodeDefault -import kotlinx.serialization.Required import kotlinx.serialization.Serializable @Serializable -//@SerialName("EVENT") data class FactorioEvent( override val modVersion: String, /** the initial Factorio event (`defines.events`) trigger */ @@ -15,42 +13,6 @@ data class FactorioEvent( val tick: UInt, val data: FactorioObjectData, ) : KafkatorioPacket() { - // @Transient @EncodeDefault override val packetType: PacketType = PacketType.EVENT - -// companion object { -// val kxsModule = SerializersModule { -// contextual(FactorioEvent::class) { types -> serializer(types[0]) } -// } -// } - } - - -//object FactorioEventSerializer : JsonContentPolymorphicSerializer>( -// FactorioEvent::class -//) { -// -// override fun selectDeserializer(element: JsonElement): DeserializationStrategy> { -// -// val objectName: ObjectName? = element -// .jsonObject[FactorioEvent<*>::data.name] -// ?.jsonObject -// ?.get(FactorioObjectData.discriminatorKey) -// ?.jsonPrimitive -// ?.contentOrNull -// ?.let(ObjectName::valueOf) -// -// val sub = when (objectName) { -// ObjectName.LuaPlayer -> PlayerData.serializer() -// ObjectName.LuaEntity -> EntityData.serializer() -// ObjectName.LuaSurface -> SurfaceData.serializer() -// ObjectName.MapChunk -> MapChunk.serializer() -// ObjectName.LuaTile -> MapTile.serializer() -// ObjectName.ConsoleChatMessage -> ConsoleChatMessage.serializer() -// null -> throw IllegalStateException("unknown type $objectName") -// } -// return FactorioEvent.serializer(sub) -// } -//} diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioLuaObjects.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioLuaObjects.kt index d2df5b9..dcdce76 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioLuaObjects.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioLuaObjects.kt @@ -3,16 +3,13 @@ package dev.adamko.kafkatorio.events.schema import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.EncodeDefault import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonClassDiscriminator import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.contentOrNull import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive -//@Serializable @Serializable(with = FactorioObjectDataSerializer::class) -//@JsonClassDiscriminator(FactorioObjectData.discriminatorKey) sealed class FactorioObjectData { /** @see FactorioObjectData.discriminatorKey */ @@ -44,19 +41,12 @@ sealed class FactorioObjectData { LuaTile, ConsoleChatMessage, } - - companion object { - /** The [JsonClassDiscriminator] for [FactorioEvent] */ - const val discriminatorKey: String = "objectName" - } } object FactorioObjectDataSerializer : JsonContentPolymorphicSerializer( FactorioObjectData::class ) { - private val key = - FactorioObjectData::objectName.name -// "objectName" + private val key = FactorioObjectData::objectName.name override fun selectDeserializer(element: JsonElement): DeserializationStrategy { @@ -83,7 +73,6 @@ object FactorioObjectDataSerializer : JsonContentPolymorphicSerializer, @@ -99,7 +88,6 @@ data class PlayerData( } @Serializable -//@SerialName("LuaEntity") data class EntityData( val active: Boolean, val health: Double?, @@ -116,7 +104,6 @@ data class EntityData( } @Serializable -//@SerialName("LuaSurface") data class SurfaceData( val daytime: Double, val index: UInt, @@ -128,7 +115,6 @@ data class SurfaceData( /** Quasi-object. This isn't a Factorio Lua type, but a helpful collection of [MapTile]s */ @Serializable -//@SerialName("MapChunk") data class MapChunk( val tiles: List, ) : FactorioObjectData() { @@ -137,7 +123,6 @@ data class MapChunk( } @Serializable -//@SerialName("LuaTile") data class MapTile( val prototypeName: String, val position: PositionData, @@ -148,7 +133,6 @@ data class MapTile( } @Serializable -//@SerialName("ConsoleChatMessage") data class ConsoleChatMessage( val authorPlayerIndex: UInt?, val content: String, diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/kafkatorioPacket.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/kafkatorioPacket.kt index c99b231..9248fb7 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/kafkatorioPacket.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/kafkatorioPacket.kt @@ -2,7 +2,6 @@ package dev.adamko.kafkatorio.events.schema; import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.EncodeDefault -import kotlinx.serialization.Required import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement @@ -10,9 +9,8 @@ import kotlinx.serialization.json.contentOrNull import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive -//@Serializable + @Serializable(with = KafkatorioPacketSerializer::class) -//@JsonClassDiscriminator("packetType") sealed class KafkatorioPacket { /** Schema versioning */ abstract val modVersion: String @@ -23,21 +21,12 @@ sealed class KafkatorioPacket { EVENT, CONFIG, } - - companion object { -// val kxsModule = SerializersModule { -// polym -// } - } - } object KafkatorioPacketSerializer : JsonContentPolymorphicSerializer( KafkatorioPacket::class ) { - private val key = - KafkatorioPacket::packetType.name -// "packetType" + private val key = KafkatorioPacket::packetType.name override fun selectDeserializer(element: JsonElement): DeserializationStrategy {