diff --git a/modules/events-mod/src/main/typescript/main/events/onMapChunkEventListeners.ts b/modules/events-mod/src/main/typescript/main/events/onMapChunkEventListeners.ts index 84fdad3..e30886d 100644 --- a/modules/events-mod/src/main/typescript/main/events/onMapChunkEventListeners.ts +++ b/modules/events-mod/src/main/typescript/main/events/onMapChunkEventListeners.ts @@ -3,8 +3,7 @@ import {Converters} from "./converters"; import EventUpdatesManager, {EventUpdates} from "../cache/EventDataCache"; import { KafkatorioPacketData, - MapChunkPosition, - MapTileDictionary + MapChunkPosition } from "../../generated/kafkatorio-schema/kafkatorio-schema"; import CacheKey = EventUpdates.PacketKey; import Type = KafkatorioPacketData.Type; @@ -13,18 +12,6 @@ import Type = KafkatorioPacketData.Type; type MapChunkUpdater = (data: KafkatorioPacketData.MapChunkUpdate) => void -const mapProtoNameToKey: { [key: string]: uint } = {} -let protoIndex: uint = 0 - - -function getProtoKey(protoName: string): uint { - if (mapProtoNameToKey[protoName] == undefined) { - mapProtoNameToKey[protoName] = protoIndex++ - } - return mapProtoNameToKey[protoName] -} - - function mapTilesUpdateDebounce( surface: LuaSurface | undefined, chunkPosition: MapChunkPosition, @@ -47,27 +34,31 @@ function mapTilesUpdateDebounce( key, Type.MapChunkUpdate, data => { - data.tileDictionary ??= { + + // tile dictionary update + data.tileDictionary ??= { tilesXY: {}, protos: {}, } + let protosCount: uint = 0 for (const tile of tiles) { + data.tileDictionary.protos[tile.name] ??= protosCount++ + const protoKey = data.tileDictionary.protos[tile.name] const xString = `${tile.position.x}` const yString = `${tile.position.y}` - const protoKey = getProtoKey(tile.name) - - data.tileDictionary.protos[tile.name] = protoIndex data.tileDictionary.tilesXY[xString] ??= {} data.tileDictionary.tilesXY[xString][yString] = protoKey } + // events count update data.eventCounts ??= {} data.eventCounts[eventName] ??= 0 data.eventCounts[eventName]++ + // apply mutator if (updater != undefined) { updater(data) } diff --git a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/schema/common/mapTile.kt b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/schema/common/mapTile.kt index 7073785..ef2ec02 100644 --- a/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/schema/common/mapTile.kt +++ b/modules/events-schema/src/commonMain/kotlin/dev/adamko/kafkatorio/schema/common/mapTile.kt @@ -50,15 +50,17 @@ data class MapTileDictionary( val protoName = protosIndexToName[protoIndex] if (x != null && y != null && protoName != null) { add(MapTile(x, y, protoName)) + } else if (protoName == null) { + println("warning: no prototype name found for index:$protoIndex. $protosIndexToName") } } } } - /** The collection-index of a prototype in [MapTileDictionary.protos] */ + /** An arbitrary ID for a prototype in [MapTileDictionary.protos]. */ @Serializable @JvmInline - value class PrototypeKey(val index: Int) + value class PrototypeKey(private val index: Int) companion object { fun MapTileDictionary?.isNullOrEmpty(): Boolean {