fix 'prototype key' in MapTileDictionary
This commit is contained in:
parent
648cb31de8
commit
bb54f6666b
2 changed files with 13 additions and 20 deletions
|
|
@ -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 ??= <MapTileDictionary>{
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue