diff --git a/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/ColourHexTest.kt b/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/ColourHexTest.kt index e0c02e5..522989f 100644 --- a/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/ColourHexTest.kt +++ b/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/ColourHexTest.kt @@ -79,9 +79,7 @@ class ColourHexTest : BehaviorSpec({ val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson) val colourHex = colour.toHex() colourHex shouldBe ColourHex(r, g, b, a) - } - } } }) diff --git a/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/PrototypesTest.kt b/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/PrototypesTest.kt index 974af26..8746f64 100644 --- a/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/PrototypesTest.kt +++ b/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/PrototypesTest.kt @@ -1,7 +1,14 @@ package dev.adamko.kafkatorio.events.schema +import dev.adamko.kafkatorio.schema.common.Colour +import dev.adamko.kafkatorio.schema.common.PrototypeName +import dev.adamko.kafkatorio.schema.jsonMapperKafkatorio +import dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2 +import dev.adamko.kafkatorio.schema2.KafkatorioPacket2 +import dev.adamko.kafkatorio.schema2.PrototypesUpdate import io.kotest.core.spec.style.BehaviorSpec -import io.kotest.matchers.collections.shouldContain +import io.kotest.inspectors.forOne +import io.kotest.matchers.shouldBe import io.kotest.matchers.types.shouldBeInstanceOf import kotlinx.serialization.decodeFromString @@ -9,33 +16,33 @@ class PrototypesTest : BehaviorSpec({ Given("Prototypes Json") { // language=JSON val raw = """ +{ + "modVersion": "0.2.4", + "tick": 534, + "data": { + "type": "dev.adamko.kafkatorio.schema2.PrototypesUpdate", + "prototypes": [ { - "modVersion":"0.2.4", - "packetType":"PROTOTYPES", - "tick": 534, - "prototypes":[ - { - "prototypeObjectName":"LuaTilePrototype", - "name":"tile-unknown", - "order":"z-a", - "layer":0, - "collisionMasks":{ - - }, - "mapColour":{ - "red":0, - "green":0, - "blue":0, - "alpha":255 - }, - "canBeMined":false - } - ] + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "name": "tile-unknown", + "order": "z-a", + "layer": 0, + "collisionMasks": {}, + "mapColour": { + "red": 0, + "green": 0, + "blue": 0, + "alpha": 255 + }, + "canBeMined": false } + ] + } +} """.trimIndent() Then("expect can be parsed") { - val data = jsonMapperKafkatorio.decodeFromString(raw) + val data = jsonMapperKafkatorio.decodeFromString(raw) println(data) } @@ -45,896 +52,895 @@ class PrototypesTest : BehaviorSpec({ // language=JSON val raw = """ { - "modVersion":"0.3.2", - "packetType":"PROTOTYPES", - "tick": 534, - "prototypes":[ + "modVersion": "0.3.2", + "tick": 534, + "data": { + "type": "dev.adamko.kafkatorio.schema2.PrototypesUpdate", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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 + "type": "dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2.MapTile", + "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) + val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(raw) +// println(packet) - data.shouldBeInstanceOf() - - 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, - ) - ) + packet.data.shouldBeInstanceOf() + .prototypes + .forOne { + it.shouldBeInstanceOf() + it.name shouldBe PrototypeName("tutorial-grid") + it.order shouldBe "z[other]-c[tutorial]-a[tutorial-grid]" + it.layer shouldBe 55u + it.collisionMasks shouldBe listOf("ground-tile") + it.mapColour shouldBe Colour(122f, 122f, 122f, 255f) + it.canBeMined shouldBe false + } } - } }) diff --git a/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/UpdatePacketsTest.kt b/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/UpdatePacketsTest.kt index 638ceea..2d1d4df 100644 --- a/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/UpdatePacketsTest.kt +++ b/modules/events-schema/src/commonTest/kotlin/dev/adamko/kafkatorio/events/schema/UpdatePacketsTest.kt @@ -1,5 +1,18 @@ package dev.adamko.kafkatorio.events.schema +import dev.adamko.kafkatorio.schema.common.Colour +import dev.adamko.kafkatorio.schema.common.EntityIdentifiersData +import dev.adamko.kafkatorio.schema.common.ForceIndex +import dev.adamko.kafkatorio.schema.common.MapEntityPosition +import dev.adamko.kafkatorio.schema.common.PlayerIndex +import dev.adamko.kafkatorio.schema.common.SurfaceIndex +import dev.adamko.kafkatorio.schema.common.Tick +import dev.adamko.kafkatorio.schema.common.UnitNumber +import dev.adamko.kafkatorio.schema.jsonMapperKafkatorio +import dev.adamko.kafkatorio.schema2.KafkatorioPacket2 +import dev.adamko.kafkatorio.schema2.PlayerUpdate +import dev.adamko.kafkatorio.schema2.PlayerUpdateKey +import dev.adamko.kafkatorio.schema2.SurfaceUpdate import io.kotest.core.spec.style.FunSpec import io.kotest.matchers.shouldBe import kotlinx.serialization.decodeFromString @@ -13,8 +26,9 @@ class UpdatePacketsTest : FunSpec({ { "tick": 66, "modVersion": "0.3.2", - "packetType": "UPDATE", - "update": { + "data": { + "type": "dev.adamko.kafkatorio.schema2.PlayerUpdate", + "key": {"index": 1}, "afkTime": 0, "chatColour": { "red": 1, @@ -33,7 +47,6 @@ class UpdatePacketsTest : FunSpec({ "on_player_joined_game": 1 }, "forceIndex": 1, - "index": 1, "isAdmin": true, "isConnected": true, "isShowOnMap": true, @@ -41,23 +54,20 @@ class UpdatePacketsTest : FunSpec({ "lastOnline": 0, "name": "fredthedeadhead", "onlineTime": 0, - "position": { - "y": 13, - "x": -58 - }, - "tag": "", - "updateType": "PLAYER" + "position": [-58, 13], + "tag": "" } } """.trimIndent() test("decode") { - val packet: FactorioEventUpdatePacket = jsonMapperKafkatorio.decodeFromString(json) + val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(json) - packet shouldBe FactorioEventUpdatePacket( + packet shouldBe KafkatorioPacket2( modVersion = "0.3.2", tick = Tick(66u), - update = PlayerUpdate( + data = PlayerUpdate( + key = PlayerUpdateKey(PlayerIndex(1u)), afkTime = Tick(0u), bannedReason = null, characterUnitNumber = null, @@ -67,7 +77,6 @@ class UpdatePacketsTest : FunSpec({ disconnectReason = null, eventCounts = mapOf("on_player_changed_position" to 7u, "on_player_joined_game" to 1u), forceIndex = ForceIndex(1u), - index = PlayerIndex(1u), isAdmin = true, isConnected = true, isRemoved = null, @@ -86,11 +95,11 @@ class UpdatePacketsTest : FunSpec({ } test("encode") { - val v = FactorioEventUpdatePacket( + val v = KafkatorioPacket2( modVersion = "0.3.2", tick = Tick(66u), - update = PlayerUpdate( - index = PlayerIndex(1u), + data = PlayerUpdate( + key = PlayerUpdateKey(PlayerIndex(1u)), characterUnitNumber = null, chatColour = null, colour = null, @@ -121,21 +130,22 @@ class UpdatePacketsTest : FunSpec({ { "modVersion": "0.3.2", "tick": 66, - "update": { - "index": 1, + "data": { + "type": "dev.adamko.kafkatorio.schema2.PlayerUpdate", + "key": { + "index": 1 + }, "name": "fredthedeadhead", "afkTime": 0, "isShowOnMap": true, "isSpectator": false, "lastOnline": 0, "onlineTime": 0, - "position": { - "x": -58.0, - "y": 13.0 - }, - "updateType": "PLAYER" - }, - "packetType": "UPDATE" + "position": [ + -58.0, + 13.0 + ] + } } """.trimIndent() } @@ -147,10 +157,11 @@ class UpdatePacketsTest : FunSpec({ { "tick": 227934, "modVersion": "0.3.2", - "packetType": "UPDATE", - "update": { - "index": 1, - "updateType": "PLAYER", + "data": { + "type": "dev.adamko.kafkatorio.schema2.PlayerUpdate", + "key": { + "index": 1 + }, "lastOnline": 227932, "onlineTime": 227888, "afkTime": 324, @@ -158,7 +169,7 @@ class UpdatePacketsTest : FunSpec({ "diedCause": { "unitNumber": 66, "name": "small-biter", - "type": "unit" + "protoType": "unit" }, "eventCounts": { "on_player_died": 2 @@ -168,12 +179,12 @@ class UpdatePacketsTest : FunSpec({ """.trimIndent() test("decode") { - val packet: FactorioEventUpdatePacket = jsonMapperKafkatorio.decodeFromString(json) + val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(json) - packet shouldBe FactorioEventUpdatePacket( + packet shouldBe KafkatorioPacket2( modVersion = "0.3.2", tick = Tick(227934u), - update = PlayerUpdate( + data = PlayerUpdate( afkTime = Tick(324u), bannedReason = null, characterUnitNumber = null, @@ -182,12 +193,12 @@ class UpdatePacketsTest : FunSpec({ diedCause = EntityIdentifiersData( unitNumber = UnitNumber(66u), name = "small-biter", - type = "unit", + protoType = "unit", ), disconnectReason = null, eventCounts = mapOf("on_player_died" to 2u), forceIndex = null, - index = PlayerIndex(1u), + key = PlayerUpdateKey(PlayerIndex(1u)), isAdmin = null, isConnected = true, isRemoved = null, @@ -204,7 +215,38 @@ class UpdatePacketsTest : FunSpec({ ) ) } - } + context("surface update") { + //language=json + val json = """ + { + "data": { + "type": "dev.adamko.kafkatorio.schema2.SurfaceUpdate", + "name": "nauvis", + "index": 1, + "daytime": 0.73 + }, + "modVersion": "0.3.2", + "tick": 176000 + } + """.trimIndent() + + val expected = KafkatorioPacket2( + tick = Tick(176000u), + modVersion = "0.3.2", + data = SurfaceUpdate( + name = "nauvis", + index = SurfaceIndex(1u), + daytime = 0.73, + ) + ) + + println(jsonMapperKafkatorio.encodeToString(expected)) + + test("decode") { + val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(json) + packet shouldBe expected + } + } }) diff --git a/modules/events-server/src/test/kotlin/dev/adamko/kafkatorio/processor/topology/GroupMapChunksTest.kt b/modules/events-server/src/test/kotlin/dev/adamko/kafkatorio/processor/topology/GroupMapChunksTest.kt index 2edf2ee..79bc5a0 100644 --- a/modules/events-server/src/test/kotlin/dev/adamko/kafkatorio/processor/topology/GroupMapChunksTest.kt +++ b/modules/events-server/src/test/kotlin/dev/adamko/kafkatorio/processor/topology/GroupMapChunksTest.kt @@ -1,12 +1,19 @@ package dev.adamko.kafkatorio.processor.topology -import dev.adamko.kafkatorio.processor.KafkatorioTopology import dev.adamko.kafkatorio.processor.admin.TOPIC_GROUPED_MAP_CHUNKS_STATE import dev.adamko.kafkatorio.processor.serdes.jsonMapper import dev.adamko.kafkatorio.processor.serdes.kxsBinary -import dev.adamko.kafkatorio.schema.common.* +import dev.adamko.kafkatorio.schema.common.Colour +import dev.adamko.kafkatorio.schema.common.ColourHex +import dev.adamko.kafkatorio.schema.common.MapChunkPosition +import dev.adamko.kafkatorio.schema.common.MapTileDictionary import dev.adamko.kafkatorio.schema.common.MapTileDictionary.PrototypeKey +import dev.adamko.kafkatorio.schema.common.MapTilePosition +import dev.adamko.kafkatorio.schema.common.PrototypeName +import dev.adamko.kafkatorio.schema.common.SurfaceIndex +import dev.adamko.kafkatorio.schema.common.Tick import dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2 +import dev.adamko.kafkatorio.schema2.KafkatorioPacket2 import dev.adamko.kafkatorio.schema2.MapChunkUpdate import dev.adamko.kafkatorio.schema2.MapChunkUpdateKey import dev.adamko.kafkatorio.schema2.PrototypesUpdate @@ -28,57 +35,65 @@ class GroupMapChunksTest : FunSpec({ test("basic test") { val streamsBuilder = StreamsBuilder() - val prototypesTopicName = "prototypes-topic" - val mapChunkUpdatesTopicName = "map-chunk-updates-topic" + val prototypesTopicName = "kafkatorio.packet.prototypes" + val mapChunkUpdatesTopicName = "kafkatorio.packet.map-chunk" val topology = groupMapChunks(streamsBuilder) val testDriver = TopologyTestDriver(topology) - val prototypesTestInputTopic: TestInputTopic = + val prototypesTestInputTopic: TestInputTopic = testDriver.createInputTopic( prototypesTopicName, jsonMapper.serde().serializer(), - jsonMapper.serde().serializer(), + jsonMapper.serde().serializer(), ) val serverId = FactorioServerId("test-server-id") prototypesTestInputTopic.pipeInput( serverId, - PrototypesUpdate( - listOf( - FactorioPrototype2.MapTile( - PrototypeName("fake-proto"), - layer = 1u, - mapColour = Colour(0.3f, 0.2f, 0.1f, 1.0f), - collisionMasks = listOf("fake-mask"), - order = "fake-order", - canBeMined = false, + KafkatorioPacket2( + modVersion = "1.2.3", + tick = Tick(22u), + PrototypesUpdate( + listOf( + FactorioPrototype2.MapTile( + PrototypeName("fake-proto"), + layer = 1u, + mapColour = Colour(0.3f, 0.2f, 0.1f, 1.0f), + collisionMasks = listOf("fake-mask"), + order = "fake-order", + canBeMined = false, + ) ) ) ) ) - val mapChunkUpdatesInputTopic: TestInputTopic = + val mapChunkUpdatesInputTopic: TestInputTopic = testDriver.createInputTopic( mapChunkUpdatesTopicName, jsonMapper.serde().serializer(), - jsonMapper.serde().serializer(), + jsonMapper.serde().serializer(), ) mapChunkUpdatesInputTopic.pipeInput( serverId, - MapChunkUpdate( - key = MapChunkUpdateKey( - MapChunkPosition(11, 22), - SurfaceIndex(1u), - ), - tileDictionary = MapTileDictionary( - tilesXY = mapOf( - "1" to mapOf("2" to PrototypeKey(33)) + KafkatorioPacket2( + modVersion = "1.2.3", + tick = Tick(44u), + MapChunkUpdate( + key = MapChunkUpdateKey( + MapChunkPosition(11, 22), + SurfaceIndex(1u), ), - protos = mapOf(PrototypeName("fake-proto") to PrototypeKey(33)) + tileDictionary = MapTileDictionary( + tilesXY = mapOf( + "1" to mapOf("2" to PrototypeKey(33)) + ), + protos = mapOf(PrototypeName("fake-proto") to PrototypeKey(33)) + ) ) ) ) @@ -114,5 +129,4 @@ class GroupMapChunksTest : FunSpec({ } } } - })