From e0b9ef9788b3a1e2ca819b050ec31c52477fa148 Mon Sep 17 00:00:00 2001 From: Adam <897017+aSemy@users.noreply.github.com> Date: Sun, 20 Feb 2022 12:40:55 +0100 Subject: [PATCH] update event-type checker, plus some refactoring/updating --- .../main/events/registerHandlers.ts | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/modules/events-mod/src/main/typescript/main/events/registerHandlers.ts b/modules/events-mod/src/main/typescript/main/events/registerHandlers.ts index c1dc0a4..61e4f60 100644 --- a/modules/events-mod/src/main/typescript/main/events/registerHandlers.ts +++ b/modules/events-mod/src/main/typescript/main/events/registerHandlers.ts @@ -7,20 +7,19 @@ import { handleTilesUpdate } from "./handlers"; import {Queue} from "../queue/queue"; -import on_player_built_tile = defines.events.on_player_built_tile; -import on_robot_built_tile = defines.events.on_robot_built_tile; +import {EventName} from "../global"; -const mapEventIdToName = new LuaTable() +const mapEventIdToName = new LuaTable() for (const [eventName, eventId] of pairs(defines.events)) { mapEventIdToName.set(eventId, eventName) } -const mapEventIdToDefinedType = new LuaTable, EventId>() -for (const [eventName, eventId] of pairs(defines.events)) { - let definedType = defines.events[eventName] - mapEventIdToDefinedType.set(eventId, definedType) -} +// const mapEventIdToDefinedType = new LuaTable, EventId>() +// for (const [eventName, eventId] of pairs(defines.events)) { +// let definedType = defines.events[eventName] +// mapEventIdToDefinedType.set(eventId, definedType) +// } // script.on_event( // [defines.events.on_pre_build, defines.events.on_player_dropped_item], @@ -41,9 +40,6 @@ script.on_event( script.on_event( defines.events.on_player_joined_game, (e: OnPlayerJoinedGameEvent) => { - - Queue.init() // TODO make Queue initialisation more stable, not dependent on events - handlePlayerUpdate(e.tick, mapEventIdToName.get(e.name), e.player_index) } ) @@ -59,7 +55,7 @@ script.on_event( defines.events.on_tick, (e: OnTickEvent) => { if (e.tick % 1000 == 0) { - for (const [, surface] of pairs(game.surfaces)) { + for (const [, surface] of game.surfaces) { handleSurfaceUpdate(e.tick, mapEventIdToName.get(e.name), surface) } @@ -76,8 +72,7 @@ script.on_event( log(`[${e.tick}] dequed ${events.length} events, current size: ${Queue.size()}`) for (const event of events) { - - if (isEventType(event)) { + if (isEventType(event, defines.events.on_chunk_generated)) { let eName = mapEventIdToName.get(event.name) log(`[${e.tick}] dequed event ${eName}`) @@ -104,7 +99,10 @@ script.on_event( ) script.on_event( - [on_player_built_tile, on_robot_built_tile], + [ + defines.events.on_player_built_tile, + defines.events.on_robot_built_tile, + ], (builtTilesEvent) => { handleTilesUpdate( builtTilesEvent.tick, @@ -117,12 +115,10 @@ script.on_event( ) -function isEventType(e: EventData): e is E { - let id: EventId | string = e.name - if (typeof id === "string") { - return false - } else { - let name = mapEventIdToDefinedType.get(id) - return e.name == name - } +function isEventType( + eventData: EventData, + type: ED extends CustomInputEvent ? string : EventId +): eventData is ED { + let id: EventId | string = eventData.name + return id == type }