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";
require("./main/events")
require("./main/events/registerHandlers")
script.on_configuration_changed(handleConfigurationUpdate)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -15,7 +15,7 @@ INSTANCE_ID=$(cat /proc/sys/kernel/random/uuid)
while :; do
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"
echo "Error - retrying in 10 seconds"