From 6245d614aab39701674c31a796d23e4fe4ef4109 Mon Sep 17 00:00:00 2001 From: Adam <897017+asemy@users.noreply.github.com> Date: Sat, 23 Oct 2021 22:47:19 +0200 Subject: [PATCH] add mod version to messages, util method to get event name from event obj --- modules/mod/src/main/typescript/events.ts | 17 +++++--------- .../mod/src/main/typescript/model/model.ts | 22 +++++++++++++++++-- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/modules/mod/src/main/typescript/events.ts b/modules/mod/src/main/typescript/events.ts index 98eb668..223112c 100644 --- a/modules/mod/src/main/typescript/events.ts +++ b/modules/mod/src/main/typescript/events.ts @@ -11,16 +11,10 @@ import {Serdes} from "./serdes/serdes" import {FactorioEvent, JsonTable} from "./model/model"; - -const FactorioEvent = ((tick: uint, objectName: string, eventType: string, data: JsonTable) => { - return { - tick: tick, - object_name: objectName, - event_type: eventType, - data: data, - } as FactorioEvent - } -) +const mapEventIdToName = new LuaTable() +for (const [k, v] of pairs(defines.events)) { + mapEventIdToName.set(v, k) +} // function createFactorioEvent(tick: uint, object_name: string, eventType: string, data: // JsonTable): FactorioEvent { return { tick, object_name, eventType, data, } } @@ -105,7 +99,8 @@ script.on_event( for (const [index,] of pairs(game.surfaces)) { let surface = game.surfaces[index] - surfaceEvent(e.tick, surface, "on_tick") + surfaceEvent(e.tick, surface, mapEventIdToName.get(e.name)) + // surfaceEvent(e.tick, surface, "on_tick") } // let filename: string = table.concat([entity.unit_number, eventType, tick], "_") diff --git a/modules/mod/src/main/typescript/model/model.ts b/modules/mod/src/main/typescript/model/model.ts index b8e4152..dcd2615 100644 --- a/modules/mod/src/main/typescript/model/model.ts +++ b/modules/mod/src/main/typescript/model/model.ts @@ -13,9 +13,27 @@ export interface JsonTable { [key: string]: JsonTableValueType } +const MOD_VERSION = script.active_mods["factorio_web_map"] + export interface FactorioEvent extends JsonTable { - tick: uint - object_name: string, + /** Schema versioning */ + mod_version: string, + /** game time */ + tick: uint, + /** the initial Factorio event ({defines.events}) trigger */ event_type: string, + /** Defines the structure of {FactorioEvent.data} */ + object_name: string, data: JsonTable, } + +export const FactorioEvent = ((tick: uint, objectName: string, eventType: string, data: JsonTable) => { + return { + mod_version: MOD_VERSION, + tick: tick, + object_name: objectName, + event_type: eventType, + data: data, + } as FactorioEvent + } +)