version bumps, schema tweaks, code tweaks,

This commit is contained in:
Adam 2022-03-04 23:54:45 +01:00
parent b055397d25
commit a9782a4d90
15 changed files with 954 additions and 59 deletions

View file

@ -114,7 +114,7 @@ data class EntityData(
override val surface: SurfaceIndex,
val active: Boolean,
val health: Double?,
val healthRatio: Double,
val healthRatio: Double?,
val name: String,
val playerIndex: PlayerIndex? = null,
val type: String,

View file

@ -38,7 +38,7 @@ object KafkatorioPacketJsonSerializer : JsonContentPolymorphicSerializer<Kafkato
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<out KafkatorioPacket> {
val type = element
val type: KafkatorioPacket.PacketType? = element
.jsonObject[key]
?.jsonPrimitive
?.contentOrNull

View file

@ -1,13 +1,14 @@
package dev.adamko.kafkatorio.events.schema
import io.kotest.core.spec.style.BehaviorSpec
import io.kotest.matchers.collections.shouldContain
import io.kotest.matchers.types.shouldBeInstanceOf
import kotlinx.serialization.decodeFromString
class PrototypesTest : BehaviorSpec(
{
Given("Prototypes Json") {
//Language=JSON
val raw = """
class PrototypesTest : BehaviorSpec({
Given("Prototypes Json") {
// language=JSON
val raw = """
{
"modVersion":"0.2.4",
"packetType":"PROTOTYPES",
@ -30,16 +31,908 @@ class PrototypesTest : BehaviorSpec(
}
]
}
""".trimIndent()
Then("expect can be parsed") {
val data = jsonMapperKafkatorio.decodeFromString<KafkatorioPacket>(raw)
println(data)
}
""".trimIndent()
Then("expect can be parsed") {
val data = jsonMapperKafkatorio.decodeFromString<KafkatorioPacket>(raw)
println(data)
}
}
) {
companion object {
Given("Big prototypes json") {
// language=JSON
val raw = """
{
"modVersion":"0.3.2",
"packetType":"PROTOTYPES",
"prototypes":[
{
"prototypeObjectName":"LuaTilePrototype",
"name":"stone-path",
"order":"a[artificial]-a[tier-1]-a[stone-path]",
"layer":60,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":86,
"green":82,
"blue":74,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"concrete",
"order":"a[artificial]-b[tier-2]-a[concrete]",
"layer":61,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":63,
"green":61,
"blue":59,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"hazard-concrete-left",
"order":"a[artificial]-b[tier-2]-b[hazard-concrete-left]",
"layer":62,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":176,
"green":142,
"blue":39,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"hazard-concrete-right",
"order":"a[artificial]-b[tier-2]-c[hazard-concrete-right]",
"layer":62,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":176,
"green":142,
"blue":39,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"refined-concrete",
"order":"a[artificial]-c[tier-3]-a[refined-concrete]",
"layer":64,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":49,
"green":48,
"blue":45,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"refined-hazard-concrete-left",
"order":"a[artificial]-c[tier-3]-b[refined-hazard-concrete-left]",
"layer":65,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":116,
"green":94,
"blue":26,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"refined-hazard-concrete-right",
"order":"a[artificial]-c[tier-3]-c[refined-hazard-concrete-right]",
"layer":65,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":116,
"green":94,
"blue":26,
"alpha":255
},
"canBeMined":true
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"landfill",
"order":"a[artificial]-d[utility]-a[landfill]",
"layer":57,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":57,
"green":39,
"blue":26,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"acid-refined-concrete",
"order":"a[artificial]-e[color-concrete]-acid",
"layer":97,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":142,
"green":194,
"blue":40,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"black-refined-concrete",
"order":"a[artificial]-e[color-concrete]-black",
"layer":88,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":25,
"green":25,
"blue":25,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"blue-refined-concrete",
"order":"a[artificial]-e[color-concrete]-blue",
"layer":73,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":39,
"green":137,
"blue":228,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"brown-refined-concrete",
"order":"a[artificial]-e[color-concrete]-brown",
"layer":91,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":76,
"green":29,
"blue":0,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"cyan-refined-concrete",
"order":"a[artificial]-e[color-concrete]-cyan",
"layer":94,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":70,
"green":192,
"blue":181,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"green-refined-concrete",
"order":"a[artificial]-e[color-concrete]-green",
"layer":70,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":23,
"green":195,
"blue":43,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"orange-refined-concrete",
"order":"a[artificial]-e[color-concrete]-orange",
"layer":76,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":221,
"green":127,
"blue":33,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"pink-refined-concrete",
"order":"a[artificial]-e[color-concrete]-pink",
"layer":82,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":236,
"green":98,
"blue":131,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"purple-refined-concrete",
"order":"a[artificial]-e[color-concrete]-purple",
"layer":85,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":123,
"green":28,
"blue":168,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"red-refined-concrete",
"order":"a[artificial]-e[color-concrete]-red",
"layer":67,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":207,
"green":6,
"blue":0,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"yellow-refined-concrete",
"order":"a[artificial]-e[color-concrete]-yellow",
"layer":79,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":212,
"green":169,
"blue":19,
"alpha":127
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"grass-1",
"order":"b[natural]-a[grass]-a[grass-1]",
"layer":26,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":55,
"green":53,
"blue":11,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"grass-2",
"order":"b[natural]-a[grass]-b[grass-2]",
"layer":28,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":66,
"green":57,
"blue":15,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"grass-3",
"order":"b[natural]-a[grass]-c[grass-3]",
"layer":29,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":65,
"green":52,
"blue":28,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"grass-4",
"order":"b[natural]-a[grass]-d[grass-4]",
"layer":30,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":59,
"green":40,
"blue":18,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dry-dirt",
"order":"b[natural]-b[dirt]-a[dry-dirt]",
"layer":18,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":94,
"green":66,
"blue":37,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-1",
"order":"b[natural]-b[dirt]-b[dirt-1]",
"layer":19,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":141,
"green":104,
"blue":60,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-2",
"order":"b[natural]-b[dirt]-c[dirt-2]",
"layer":20,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":136,
"green":96,
"blue":59,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-3",
"order":"b[natural]-b[dirt]-d[dirt-3]",
"layer":21,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":133,
"green":92,
"blue":53,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-4",
"order":"b[natural]-b[dirt]-e[dirt-4]",
"layer":22,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":103,
"green":72,
"blue":43,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-5",
"order":"b[natural]-b[dirt]-f[dirt-5]",
"layer":23,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":91,
"green":63,
"blue":38,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-6",
"order":"b[natural]-b[dirt]-g[dirt-6]",
"layer":24,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":80,
"green":55,
"blue":31,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"dirt-7",
"order":"b[natural]-b[dirt]-h[dirt-7]",
"layer":25,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":80,
"green":54,
"blue":28,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"sand-1",
"order":"b[natural]-c[sand]-a[sand-1]",
"layer":8,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":138,
"green":103,
"blue":58,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"sand-2",
"order":"b[natural]-c[sand]-b[sand-2]",
"layer":9,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":128,
"green":93,
"blue":52,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"sand-3",
"order":"b[natural]-c[sand]-c[sand-3]",
"layer":10,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":115,
"green":83,
"blue":47,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"red-desert-0",
"order":"b[natural]-d[red-desert]-a[red-desert-0]",
"layer":31,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":103,
"green":70,
"blue":32,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"red-desert-1",
"order":"b[natural]-d[red-desert]-b[red-desert-1]",
"layer":14,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":116,
"green":81,
"blue":39,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"red-desert-2",
"order":"b[natural]-d[red-desert]-c[red-desert-2]",
"layer":15,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":116,
"green":84,
"blue":43,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"red-desert-3",
"order":"b[natural]-d[red-desert]-d[red-desert-3]",
"layer":16,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":128,
"green":93,
"blue":52,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"water",
"order":"c[water]-a[water]",
"layer":3,
"collisionMasks":[
"doodad-layer",
"item-layer",
"player-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":51,
"green":83,
"blue":95,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"deepwater",
"order":"c[water]-b[deep-water]",
"layer":3,
"collisionMasks":[
"doodad-layer",
"item-layer",
"player-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":38,
"green":64,
"blue":73,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"water-green",
"order":"c[water]-c[water-green]",
"layer":3,
"collisionMasks":[
"doodad-layer",
"item-layer",
"player-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":31,
"green":48,
"blue":18,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"deepwater-green",
"order":"c[water]-d[deepwater-green]",
"layer":3,
"collisionMasks":[
"doodad-layer",
"item-layer",
"player-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":23,
"green":37,
"blue":16,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"water-shallow",
"order":"c[water]-e[water-shallow]",
"layer":6,
"collisionMasks":[
"item-layer",
"object-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":82,
"green":98,
"blue":92,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"water-mud",
"order":"c[water]-g[water-mud]",
"layer":7,
"collisionMasks":[
"item-layer",
"object-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":65,
"green":89,
"blue":90,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"nuclear-ground",
"order":"d[destruction]-a[nuclear]-a[nuclear-ground]",
"layer":33,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":48,
"green":40,
"blue":35,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"water-wube",
"order":"x[wube]-a[water-wube]",
"layer":2,
"collisionMasks":[
"doodad-layer",
"item-layer",
"player-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":0,
"green":0,
"blue":0,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"tile-unknown",
"order":"z-a",
"layer":0,
"collisionMasks":{
},
"mapColour":{
"red":0,
"green":0,
"blue":0,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"out-of-map",
"order":"z[other]-a[out-of-map]",
"layer":0,
"collisionMasks":[
"doodad-layer",
"floor-layer",
"ground-tile",
"item-layer",
"object-layer",
"player-layer",
"resource-layer",
"water-tile"
],
"mapColour":{
"red":0,
"green":0,
"blue":0,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"lab-dark-1",
"order":"z[other]-b[lab]-a[lab-dark-1]",
"layer":70,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":49,
"green":49,
"blue":49,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"lab-dark-2",
"order":"z[other]-b[lab]-b[lab-dark-2]",
"layer":70,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":0,
"green":0,
"blue":0,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"lab-white",
"order":"z[other]-b[lab]-c[lab-white]",
"layer":70,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":255,
"green":255,
"blue":255,
"alpha":255
},
"canBeMined":false
},
{
"prototypeObjectName":"LuaTilePrototype",
"name":"tutorial-grid",
"order":"z[other]-c[tutorial]-a[tutorial-grid]",
"layer":55,
"collisionMasks":[
"ground-tile"
],
"mapColour":{
"red":122,
"green":122,
"blue":122,
"alpha":255
},
"canBeMined":false
}
]
}
""".trimIndent()
Then("expect can be parsed") {
val data: KafkatorioPacket = jsonMapperKafkatorio.decodeFromString(raw)
println(data)
data.shouldBeInstanceOf<FactorioPrototypes>()
data.prototypes.shouldContain(
MapTilePrototype(
name = PrototypeName("tutorial-grid"),
order = "z[other]-c[tutorial]-a[tutorial-grid]",
layer = 55u,
collisionMasks = listOf("ground-tile"),
mapColour = Colour(122f, 122f, 122f, 255f),
canBeMined = false,
)
)
}
}
}
})

View file

@ -21,6 +21,8 @@ fun main(args: Array<String>) {
add(FactorioPrototypes::class)
add(FactorioConfigurationUpdate::class)
add(FactorioEvent::class)
add(FactorioEventUpdatePacket::class)
addAll(FactorioEventUpdate::class.sealedSubclasses)
addAll(FactorioEventUpdateKey::class.sealedSubclasses)