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

@ -23,7 +23,7 @@ interface EntityData extends FactorioObjectData, FactorioLuaControl {
active: boolean;
force: uint;
health: double | null;
healthRatio: double;
healthRatio: double | null;
name: string;
objectName: ObjectName;
playerIndex: uint | null;

View file

@ -6,12 +6,6 @@ interface FactorioPrototype {
prototypeObjectName: PrototypeObjectName;
}
interface FactorioPrototypes extends KafkatorioPacket {
modVersion: string;
packetType: PacketType;
prototypes: FactorioPrototype[];
}
interface MapTilePrototype extends FactorioPrototype {
canBeMined: boolean;
collisionMasks: string[];
@ -21,3 +15,9 @@ interface MapTilePrototype extends FactorioPrototype {
order: string;
prototypeObjectName: PrototypeObjectName;
}
interface FactorioPrototypes extends KafkatorioPacket {
modVersion: string;
packetType: PacketType;
prototypes: FactorioPrototype[];
}

View file

@ -7,14 +7,6 @@ interface KafkatorioPacket {
packetType: PacketType;
}
interface FactorioEvent extends KafkatorioPacket {
data: FactorioObjectData;
eventType: string;
modVersion: string;
packetType: PacketType;
tick: uint;
}
interface MapEntityPosition {
x: double;
y: double;
@ -54,6 +46,14 @@ interface MapTile {
y: int;
}
interface FactorioEvent extends KafkatorioPacket {
data: FactorioObjectData;
eventType: string;
modVersion: string;
packetType: PacketType;
tick: uint;
}
interface EntityIdentifiers {
name: string;
type: string;

View file

@ -3,7 +3,6 @@ import {emitPacket} from "../emitKafkatorioPacket";
/** Every 0.1 seconds */
script.on_nth_tick(6, (nthTick: NthTickEventData) => {
const cachedEvents: Array<FactorioEventUpdate> = EventDataCache.extractExpired()
if (cachedEvents.length > 0) {

View file

@ -40,8 +40,8 @@ commands.add_command(
let chunkYMin = chunkPosition.y - radius
let chunkYMax = chunkPosition.y + radius
for (let [, surface] of game.surfaces) {
for (let chunk of surface.get_chunks()) {
for (const [, surface] of game.surfaces) {
for (const chunk of surface.get_chunks()) {
if (
(chunk.x >= chunkXMin && chunk.x <= chunkXMax)
&&

View file

@ -41,7 +41,7 @@ export namespace Converters {
type: entity.type,
active: entity.active,
health: entity.health ?? null,
healthRatio: entity.get_health_ratio(),
healthRatio: entity.get_health_ratio() ?? null,
surface: entity.surface.index,
unitNumber: entity.unit_number ?? null,
position: mapEntityPosition(entity.position),

View file

@ -31,19 +31,21 @@ function mapTilesUpdateDebounce(
return
}
EventDataCache.debounce<"MAP_CHUNK">(
{
const key: CacheKey<"MAP_CHUNK"> = {
surfaceIndex: surface.index,
chunkPosition: chunkPosition,
updateType: "MAP_CHUNK",
},
}
EventDataCache.debounce<"MAP_CHUNK">(
key,
data => {
data.tileDictionary ??= <MapTileDictionary>{
tilesXY: {},
protos: {},
}
for (let tile of tiles) {
for (const tile of tiles) {
const xString = `${tile.position.x}`
const yString = `${tile.position.y}`

View file

@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"enhanced-resolve": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz",
"integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==",
"version": "5.9.2",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz",
"integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==",
"requires": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@ -50,11 +50,11 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"resolve": {
"version": "1.21.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.1.tgz",
"integrity": "sha512-lfEImVbnolPuaSZuLQ52cAxPBHeI77sPwCOWRdy12UG/CNa8an7oBHH1R+Fp1/mUqSJi4c8TIP6FOIPSZAUrEQ==",
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
"requires": {
"is-core-module": "^2.8.0",
"is-core-module": "^2.8.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@ -75,9 +75,9 @@
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
},
"typed-factorio": {
"version": "0.18.1",
"resolved": "https://registry.npmjs.org/typed-factorio/-/typed-factorio-0.18.1.tgz",
"integrity": "sha512-osjGO4V809tlDnDI7lXTIOPCcDBwBfKfW6o8zFR04S0/uBAzP4eY3X3GXTPzWK/P3HJ9GXDUHV2Nai2ZRicbkA=="
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/typed-factorio/-/typed-factorio-0.19.1.tgz",
"integrity": "sha512-/iLa916Cw33vC6wgmCb4cPLjmvUA2zVviTx/vy80iEvpOHjoNkuHkGSsmvss1aItwUKUlHaLi3k0fK5OPiw1iA=="
},
"typescript": {
"version": "4.5.5",
@ -85,9 +85,9 @@
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA=="
},
"typescript-to-lua": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/typescript-to-lua/-/typescript-to-lua-1.3.3.tgz",
"integrity": "sha512-Fkt0+dLufN5CK0G/qpINY7Sb0+SNmWpov+PHhO/dq0HFoNBzR47M1SJd+hQbG92vTVFLBO4f+Np29LuVvoemMA==",
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/typescript-to-lua/-/typescript-to-lua-1.3.4.tgz",
"integrity": "sha512-9NkUOSUd9tufvwCGiWJ6Z1edizYcECUfjdZJZfDRKTEXKIddbAdV3IFR6u5gxvYYRfXhfNV6IKvqHS2HxHFs6w==",
"requires": {
"enhanced-resolve": "^5.8.2",
"resolve": "^1.15.1",

View file

@ -13,8 +13,8 @@
},
"dependencies": {
"lua-types": "^2.11.0",
"typescript-to-lua": "1.3.3",
"typed-factorio": "0.18.1",
"typescript-to-lua": "1.3.4",
"typed-factorio": "0.19.1",
"typescript": "4.5.5"
},
"// @types/node": "^12.0.8",

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,12 +1,13 @@
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(
{
class PrototypesTest : BehaviorSpec({
Given("Prototypes Json") {
//Language=JSON
// language=JSON
val raw = """
{
"modVersion":"0.2.4",
@ -30,7 +31,7 @@ class PrototypesTest : BehaviorSpec(
}
]
}
""".trimIndent()
""".trimIndent()
Then("expect can be parsed") {
val data = jsonMapperKafkatorio.decodeFromString<KafkatorioPacket>(raw)
@ -38,8 +39,900 @@ class PrototypesTest : BehaviorSpec(
}
}
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
}
) {
companion object {
]
}
}
""".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)

View file

@ -109,7 +109,6 @@ internal class KafkatorioTopology(
)
)
val topology = builder.build()
launchTopology("groupTilesMapChunks", topology)
}
@ -117,7 +116,7 @@ internal class KafkatorioTopology(
private fun saveTiles() {
val builder = StreamsBuilder()
val groupedMapChunkTiles: KTable<ServerMapChunkId, ServerMapChunkTiles<ColourHex>> =
val groupedMapChunkTiles: KTable<ServerMapChunkId?, ServerMapChunkTiles<ColourHex>?> =
builder.table(
TOPIC_GROUPED_MAP_CHUNKS,
consumedAs("consume.grouped-map-chunks", kxsBinary.serde(), kxsBinary.serde())

View file

@ -47,7 +47,7 @@ private val serverMapChunkHandler = ServerMapChunkHandler()
fun saveMapTiles(
serverMapTable: KTable<ServerMapChunkId, ServerMapChunkTiles<ColourHex>>
serverMapTable: KTable<ServerMapChunkId?, ServerMapChunkTiles<ColourHex>?>
) {
serverMapTable