fix bugs (mostly tstl limitations) and improve schema structure a bit
This commit is contained in:
parent
f97b0a6562
commit
56fa2cbf00
8 changed files with 23 additions and 25 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue