diff --git a/modules/events-mod/src/main/typescript/main/prototypes/emitPrototypes.ts b/modules/events-mod/src/main/typescript/main/config-update/convertPrototypes.ts similarity index 88% rename from modules/events-mod/src/main/typescript/main/prototypes/emitPrototypes.ts rename to modules/events-mod/src/main/typescript/main/config-update/convertPrototypes.ts index 2099e3e..b1e2c3f 100644 --- a/modules/events-mod/src/main/typescript/main/prototypes/emitPrototypes.ts +++ b/modules/events-mod/src/main/typescript/main/config-update/convertPrototypes.ts @@ -1,4 +1,4 @@ -import {Serdes} from "../events/serdes"; +import {Converters} from "../events/converters"; export function convertPrototypes (): FactorioPrototype[] { let prototypes = new Array() @@ -19,7 +19,7 @@ function getMapTilePrototypes(): FactorioMapTilePrototype[] { order: tile.order, layer: tile.layer, collisionMasks: convertCollisionMaskToNames(tile.collision_mask), - mapColor: Serdes.mapColour(tile.map_color), + mapColor: Converters.mapColour(tile.map_color), canBeMined: tile.mineable_properties.minable, } ) diff --git a/modules/events-mod/src/main/typescript/main/config-update/handleConfigurationUpdate.ts b/modules/events-mod/src/main/typescript/main/config-update/handleConfigurationUpdate.ts index 1ea1d0e..8ceb25b 100644 --- a/modules/events-mod/src/main/typescript/main/config-update/handleConfigurationUpdate.ts +++ b/modules/events-mod/src/main/typescript/main/config-update/handleConfigurationUpdate.ts @@ -1,7 +1,9 @@ import {emitPacket} from "../emitKafkatorioPacket"; -import {convertPrototypes} from "../../prototypes/emitPrototypes"; +import {convertPrototypes} from "./convertPrototypes"; +import {updateGlobal} from "./updateGlobal"; export function handleConfigurationUpdate(changeData: ConfigurationChangedData) { + updateGlobal() emitPacket({ modVersion: global.MOD_VERSION, diff --git a/modules/events-mod/src/main/typescript/main/events/serdes.ts b/modules/events-mod/src/main/typescript/main/events/converters.ts similarity index 95% rename from modules/events-mod/src/main/typescript/main/events/serdes.ts rename to modules/events-mod/src/main/typescript/main/events/converters.ts index 4eb7e42..b8eebdf 100644 --- a/modules/events-mod/src/main/typescript/main/events/serdes.ts +++ b/modules/events-mod/src/main/typescript/main/events/converters.ts @@ -1,4 +1,4 @@ -export namespace Serdes { +export namespace Converters { export function playerToTable(player: LuaPlayer): PlayerData { let charIds = entitiesToUnitNumbers(player.get_associated_characters()) @@ -37,7 +37,7 @@ export namespace Serdes { } } - export function entitiesToUnitNumbers(entities: LuaEntity[]): uint[] { + function entitiesToUnitNumbers(entities: LuaEntity[]): uint[] { let result: (uint) [] = [] for (let entity of entities) { if (entity.unit_number != null) { diff --git a/modules/events-mod/src/main/typescript/main/events/emitEvent.ts b/modules/events-mod/src/main/typescript/main/events/emitEvent.ts new file mode 100644 index 0000000..4aad9ee --- /dev/null +++ b/modules/events-mod/src/main/typescript/main/events/emitEvent.ts @@ -0,0 +1,14 @@ +// const SERVER_ID: uint = 0 +// const EVENT_FILE_DIR: string = "events" + +import {emitPacket} from "../emitKafkatorioPacket"; + +/** Emit a serialised event */ +export function emitEvent(eventData: T, tick: uint, eventType: string) { + emitPacket({ + data: eventData, + eventType: eventType, + modVersion: global.MOD_VERSION, + tick: tick + }) +} diff --git a/modules/events-mod/src/main/typescript/main/events/emitter.ts b/modules/events-mod/src/main/typescript/main/events/emitter.ts deleted file mode 100644 index 28a8f8e..0000000 --- a/modules/events-mod/src/main/typescript/main/events/emitter.ts +++ /dev/null @@ -1,20 +0,0 @@ -export const MOD_VERSION = script.active_mods["@mod.name@"] ?? "UNKNOWN" -export const FACTORIO_VERSION = script.active_mods["base"] ?? "UNKNOWN" - -// const SERVER_ID: uint = 0 -// const EVENT_FILE_DIR: string = "events" - -/** Emit a serialised event */ -export function emitEvent(eventData: T, tick: uint, eventType: string) { - - let event: FactorioEvent = { - data: eventData, - eventType: eventType, - modVersion: MOD_VERSION, - tick: tick - } - - let data = game.table_to_json(event) - - localised_print(`FactorioEvent: ${data}`) -} diff --git a/modules/events-mod/src/main/typescript/main/events/handlers.ts b/modules/events-mod/src/main/typescript/main/events/handlers.ts index 0bcf505..036080a 100644 --- a/modules/events-mod/src/main/typescript/main/events/handlers.ts +++ b/modules/events-mod/src/main/typescript/main/events/handlers.ts @@ -1,9 +1,11 @@ -import {Serdes} from "./serdes" -import {emitEvent} from "./emitter"; +import {Converters} from "./converters" +import {emitEvent} from "./emitEvent"; export function handlePlayerUpdate(tick: uint, playerIndex: uint, eventType: string) { let player: LuaPlayer = game.players[playerIndex] - let table = Serdes.playerToTable(player) + let table = Converters.playerToTable(player) + + emitEvent(table, tick, eventType) handleCharactersEvent(tick, playerIndex, eventType) @@ -24,7 +26,7 @@ export function handleCharactersEvent(tick: uint, playerIndex: uint, eventType: } export function handleEntityUpdate(tick: uint, entity: LuaEntity, eventType: string) { - let table = Serdes.entityToTable(entity) + let table = Converters.entityToTable(entity) emitEvent(table, tick, eventType) } @@ -33,7 +35,7 @@ export function handleSurfaceUpdate( surface: LuaSurface, eventType: string ) { - let table = Serdes.surfaceToTable(surface) + let table = Converters.surfaceToTable(surface) emitEvent(table, tick, eventType) } @@ -44,7 +46,7 @@ export function handleConsoleChat( message: string, eventType: string, ) { - let table = Serdes.consoleChat(message, playerIndex) + let table = Converters.consoleChat(message, playerIndex) emitEvent(table, tick, eventType) } @@ -71,8 +73,8 @@ export function handleChunkUpdate( let tilePositionMap = new Map(); for (let tile of tiles) { - let position = Serdes.convertMapPosition(tile.position) - tilePositionMap.set(position, Serdes.convertTile(tile)) + let position = Converters.convertMapPosition(tile.position) + tilePositionMap.set(position, Converters.convertTile(tile)) } let mapChunk: FactorioTilesMap = { objectName: "FactorioTilesMap", diff --git a/modules/events-mod/src/main/typescript/main/events.ts b/modules/events-mod/src/main/typescript/main/events/registerHandlers.ts similarity index 98% rename from modules/events-mod/src/main/typescript/main/events.ts rename to modules/events-mod/src/main/typescript/main/events/registerHandlers.ts index fd5d7d3..969d90d 100644 --- a/modules/events-mod/src/main/typescript/main/events.ts +++ b/modules/events-mod/src/main/typescript/main/events/registerHandlers.ts @@ -4,7 +4,7 @@ import { handleEntityUpdate, handlePlayerUpdate, handleSurfaceUpdate -} from "./events/handlers"; +} from "./handlers"; const mapEventIdToName = new LuaTable() for (const [k, v] of pairs(defines.events)) { diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt index 191e215..6da45c7 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioCommonData.kt @@ -27,6 +27,7 @@ data class Colour( val blue: Float = 0f, val alpha: Float = 1f, ) { + /** True if any value is greater than 1, so the values are hexadecimal. */ fun isDecimal(): Boolean { return red > 1f diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt index 15eef33..12b0994 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Serializable data class FactorioEvent( override val modVersion: String, - /** the initial Factorio event ({defines.events}) trigger */ + /** the initial Factorio event (`defines.events`) trigger */ val eventType: String, /** game time */ val tick: UInt,