fix bugs (mostly tstl limitations) and improve schema structure a bit

This commit is contained in:
Adam 2022-01-08 14:02:30 +01:00
parent f97b0a6562
commit 56fa2cbf00
8 changed files with 23 additions and 25 deletions

View file

@ -1,5 +1,5 @@
import {handleConfigurationUpdate} from "./main/config-update/handleConfigurationUpdate"; import {handleConfigurationUpdate} from "./main/config-update/handleConfigurationUpdate";
require("./main/events") require("./main/events/registerHandlers")
script.on_configuration_changed(handleConfigurationUpdate) script.on_configuration_changed(handleConfigurationUpdate)

View file

@ -42,16 +42,16 @@ interface SurfaceData extends FactorioObjectData {
objectName: string; objectName: string;
} }
interface FactorioTile extends FactorioObjectData { interface FactorioMapTile extends FactorioObjectData {
objectName: string; objectName: string;
position: PositionData; position: PositionData;
prototypeName: string; prototypeName: string;
surfaceIndex: int; surfaceIndex: int;
} }
interface FactorioTilesMap extends FactorioObjectData { interface FactorioMapChunk extends FactorioObjectData {
objectName: string; objectName: string;
tiles: Map<PositionData, FactorioTile>; tiles: FactorioMapTile[];
} }
interface ConsoleChatMessage extends FactorioObjectData { interface ConsoleChatMessage extends FactorioObjectData {

View file

@ -1,7 +1,7 @@
import {Converters} from "../events/converters"; import {Converters} from "../events/converters";
export function convertPrototypes (): FactorioPrototype[] { export function convertPrototypes(): FactorioPrototype[] {
let prototypes = new Array<FactorioPrototype>() let prototypes: FactorioPrototype[] = []
prototypes.push(...getMapTilePrototypes()) prototypes.push(...getMapTilePrototypes())

View file

@ -32,8 +32,8 @@ function allMods(e: ConfigurationChangedData): FactorioModInfo[] {
return modNames.map((modName) => { return modNames.map((modName) => {
let currentVer = script.active_mods[modName] ?? e.mod_changes[modName].new_version let currentVer = script.active_mods[modName] ?? e.mod_changes[modName].new_version ?? null
let previousVer = e.mod_changes[modName].old_version let previousVer = e.mod_changes[modName]?.old_version ?? null
return <FactorioModInfo>{ return <FactorioModInfo>{
modName: modName, modName: modName,

View file

@ -83,7 +83,7 @@ export namespace Converters {
} }
} }
export function convertTile(tile: LuaTile): FactorioTile { export function convertTile(tile: LuaTile): FactorioMapTile {
return { return {
objectName: tile.object_name, objectName: tile.object_name,

View file

@ -39,7 +39,6 @@ export function handleSurfaceUpdate(
emitEvent(table, tick, eventType) emitEvent(table, tick, eventType)
} }
export function handleConsoleChat( export function handleConsoleChat(
tick: uint, tick: uint,
playerIndex: uint | undefined, playerIndex: uint | undefined,
@ -64,21 +63,20 @@ export function handleChunkUpdate(
let x = (position as ChunkPositionTable).x * CHUNK_SIZE let x = (position as ChunkPositionTable).x * CHUNK_SIZE
let y = (position as ChunkPositionTable).y * CHUNK_SIZE let y = (position as ChunkPositionTable).y * CHUNK_SIZE
let tiles = surface?.find_tiles_filtered({ let tiles: LuaTile[] = surface?.find_tiles_filtered({
position: {x: x, y: y}, position: {x: x, y: y},
radius: CHUNK_SIZE, radius: CHUNK_SIZE,
collision_mask: ["ground-tile", "water-tile"] collision_mask: ["ground-tile", "water-tile"]
} }
) ?? [] ) ?? []
let tilePositionMap = new Map<PositionData, FactorioTile>(); let convertedTiles: FactorioMapTile[] = tiles.map((tile: LuaTile) => {
for (let tile of tiles) { return Converters.convertTile(tile)
let position = Converters.convertMapPosition(tile.position) })
tilePositionMap.set(position, Converters.convertTile(tile))
} let mapChunk: FactorioMapChunk = {
let mapChunk: FactorioTilesMap = {
objectName: "FactorioTilesMap", objectName: "FactorioTilesMap",
tiles: tilePositionMap, tiles: convertedTiles,
} }
emitEvent(mapChunk, tick, eventType) emitEvent(mapChunk, tick, eventType)

View file

@ -79,17 +79,17 @@ data class SurfaceData(
} }
@Serializable @Serializable
@SerialName("FactorioTilesMap") @SerialName("FactorioMapChunk")
data class FactorioTilesMap( data class FactorioMapChunk(
val tiles: Map<PositionData, FactorioTile>, val tiles: List<FactorioMapTile>,
) : FactorioObjectData() { ) : FactorioObjectData() {
@Transient @Transient
override val objectName: String = "FactorioTilesMap" override val objectName: String = "FactorioMapChunk"
} }
@Serializable @Serializable
@SerialName("LuaTile") @SerialName("LuaTile")
data class FactorioTile( data class FactorioMapTile(
val prototypeName: String, val prototypeName: String,
val position: PositionData, val position: PositionData,
val surfaceIndex: Int, val surfaceIndex: Int,
@ -102,7 +102,7 @@ data class FactorioTile(
data class ConsoleChatMessage( data class ConsoleChatMessage(
val authorPlayerIndex: UInt?, val authorPlayerIndex: UInt?,
val content: String, val content: String,
) : FactorioObjectData() { ) : FactorioObjectData() {
@Transient @Transient
override val objectName: String = "ConsoleChatMessage" override val objectName: String = "ConsoleChatMessage"
} }

View file

@ -15,7 +15,7 @@ INSTANCE_ID=$(cat /proc/sys/kernel/random/uuid)
while :; do while :; do
docker logs --tail 0 -f "$FACTORIO_SERVER_CONTAINER_NAME" | docker logs --tail 0 -f "$FACTORIO_SERVER_CONTAINER_NAME" |
sed -n -e 's/^FactorioEvent: //p' | sed -n -e 's/^KafkatorioPacket: //p' |
kcat -P -T -b "$KAFKA_HOST" -t factorio-server-log -k "$INSTANCE_ID" kcat -P -T -b "$KAFKA_HOST" -t factorio-server-log -k "$INSTANCE_ID"
echo "Error - retrying in 10 seconds" echo "Error - retrying in 10 seconds"