refactor typescript files (mostly moving&renaming for consistency)

This commit is contained in:
Adam 2022-06-27 22:57:57 +02:00
parent 5f1187f9a8
commit 1d0b2b8eaa
19 changed files with 91 additions and 126 deletions

View file

@ -9,7 +9,8 @@
"engines": {
"node": "~14.19.1"
},
"devDependencies": {},
"devDependencies": {
},
"dependencies": {
"lua-types": "^2.11.0",
"typescript-to-lua": "1.6.0",
@ -17,7 +18,10 @@
"typescript": "4.7.4"
},
"license": "UNLICENSED",
"peerDependencies": {},
"optionalDependencies": {},
"bundledDependencies": []
"peerDependencies": {
},
"optionalDependencies": {
},
"bundledDependencies": [
]
}

View file

@ -1,23 +1,11 @@
import {emitConfigurationUpdate} from "./main/config-update/handleConfigurationUpdate";
import {emitPrototypes} from "./main/config-update/prototypes";
import {initGlobal} from "./main/global-init";
import KafkatorioSettings from "./main/settings/KafkatorioSettings";
import {emitPrototypes} from "./main/events/prototypeUpdates";
require("./main/events/registerHandlers")
require("./main/events/onMapChunkEventListeners")
require("./main/events/onPlayerEventListeners")
require("./main/events/EntityEvents")
require("./main/events/mapChunkUpdates")
require("./main/events/playerUpdates")
require("./main/events/entityUpdates")
require("./main/commands/kafkatorioCommands")
require("./main/cache/cacheChecker")
script.on_configuration_changed((data: ConfigurationChangedData) => {
// runs whenever the version of the base game, or a mod, changes
initGlobal(true)
// KafkatorioSettings.loadSettings()
emitConfigurationUpdate(data)
emitPrototypes()
})
script.on_init(() => {

View file

@ -13,6 +13,7 @@ export type KafkatorioPacketData =
| KafkatorioPacketData.ConsoleChatUpdate
| KafkatorioPacketData.ConsoleCommandUpdate
| KafkatorioPacketData.EntityUpdate
| KafkatorioPacketData.Error
| KafkatorioPacketData.MapChunkUpdate
| KafkatorioPacketData.PlayerUpdate
| KafkatorioPacketData.PrototypesUpdate
@ -28,6 +29,7 @@ export namespace KafkatorioPacketData {
EntityUpdate = "kafkatorio.packet.keyed.EntityUpdate",
MapChunkUpdate = "kafkatorio.packet.keyed.MapChunkUpdate",
PlayerUpdate = "kafkatorio.packet.keyed.PlayerUpdate",
Error = "kafkatorio.packet.KafkatorioPacketData.Error",
}
export interface ConfigurationUpdate {
@ -115,6 +117,12 @@ export namespace KafkatorioPacketData {
disconnectReason?: string | null;
isRemoved?: boolean | null;
}
export interface Error {
type: KafkatorioPacketData.Type.Error;
message?: string | null;
rawValue?: string | null;
}
}
export type UInt = uint;

View file

@ -1,9 +1,10 @@
import {
KafkatorioPacket,
KafkatorioPacketData
} from "../generated/kafkatorio-schema/kafkatorio-schema";
} from "../generated/kafkatorio-schema";
import {KafkatorioKeyedPacketData} from "./types";
export class KafkatorioPacketEmitter {
emitInstantPacket<DATA extends KafkatorioPacketData>(

View file

@ -1,10 +0,0 @@
import EventCacheService from "./EventDataCache";
/** Every 0.1 seconds */
script.on_nth_tick(6, (nthTick: NthTickEventData) => {
const emittedCount = EventCacheService.extractAndEmitExpiredPackets()
if (emittedCount > 0) {
log(`[on_nth_tick:${nthTick.tick}] emitted ${emittedCount} events`)
}
})

View file

@ -1,7 +1,6 @@
import {emitPrototypes} from "../config-update/prototypes";
import {initGlobal} from "../global-init";
import floor = math.floor;
import {Queue} from "../queue/queue";
import {emitPrototypes} from "../events/prototypeUpdates";
commands.add_command(
@ -32,8 +31,8 @@ commands.add_command(
let player = game.players[e.player_index]
const chunkPosition: ChunkPosition = {
x: floor(player.position.x / 32),
y: floor(player.position.y / 32),
x: math.floor(player.position.x / 32),
y: math.floor(player.position.y / 32),
}
const chunkXMin = chunkPosition.x - radius
@ -56,7 +55,7 @@ commands.add_command(
position: {x: chunk.x, y: chunk.y},
area: chunk.area,
surface: surface,
tick: e.tick
tick: e.tick,
}
Queue.enqueue(

View file

@ -3,11 +3,23 @@ import {
ConfigurationUpdateGameData,
ConfigurationUpdateModData,
KafkatorioPacketData
} from "../../generated/kafkatorio-schema/kafkatorio-schema";
} from "../../generated/kafkatorio-schema";
import {initGlobal} from "../global-init";
import {emitPrototypes} from "./prototypeUpdates";
import Type = KafkatorioPacketData.Type;
import ConfigurationUpdate = KafkatorioPacketData.ConfigurationUpdate;
export function emitConfigurationUpdate(changeData: ConfigurationChangedData) {
script.on_configuration_changed((data: ConfigurationChangedData) => {
// runs whenever the version of the base game, or a mod, changes
initGlobal(true)
// KafkatorioSettings.loadSettings()
emitConfigurationUpdate(data)
emitPrototypes()
})
function emitConfigurationUpdate(changeData: ConfigurationChangedData) {
const configUpdateData: ConfigurationUpdate = {
type: Type.ConfigurationUpdate,
@ -20,6 +32,7 @@ export function emitConfigurationUpdate(changeData: ConfigurationChangedData) {
PacketEmitter.emitInstantPacket(configUpdateData)
}
function factorioData(changeData: ConfigurationChangedData): ConfigurationUpdateGameData {
return {
oldVersion: changeData.old_version ?? null,
@ -27,6 +40,7 @@ function factorioData(changeData: ConfigurationChangedData): ConfigurationUpdate
}
}
function allMods(e: ConfigurationChangedData): ConfigurationUpdateModData[] {
let namesOfChangedMods: string[] = Object.keys(e.mod_changes)

View file

@ -1,7 +1,8 @@
import PacketEmitter from "../PacketEmitter";
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema/kafkatorio-schema";
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema";
import Type = KafkatorioPacketData.Type;
script.on_event(
defines.events.on_console_chat,
(event: OnConsoleChatEvent) => {
@ -15,6 +16,7 @@ script.on_event(
}
)
script.on_event(
defines.events.on_console_command,
(event: OnConsoleCommandEvent) => {

View file

@ -1,5 +1,5 @@
import {EventName} from "../types";
import {Colour, MapChunkPosition} from "../../generated/kafkatorio-schema/kafkatorio-schema";
import {Colour, MapChunkPosition} from "../../generated/kafkatorio-schema";
export namespace Converters {
@ -57,4 +57,13 @@ export namespace Converters {
return [position.x, position.y]
}
export function convertCollisionMaskToNames(cm: CollisionMask): string[] {
let masks: string[] = []
for (let [name] of pairs(cm)) {
masks.push(name)
}
return masks
}
}

View file

@ -3,7 +3,7 @@ import EventDataCache from "../cache/EventDataCache";
import {
EntityUpdateKey,
KafkatorioPacketData
} from "../../generated/kafkatorio-schema/kafkatorio-schema";
} from "../../generated/kafkatorio-schema";
script.on_event(defines.events.on_built_entity, (e: OnBuiltEntityEvent) => {

View file

@ -4,7 +4,7 @@ import EventUpdatesManager, {EventUpdates} from "../cache/EventDataCache";
import {
KafkatorioPacketData,
MapChunkPosition
} from "../../generated/kafkatorio-schema/kafkatorio-schema";
} from "../../generated/kafkatorio-schema";
import CacheKey = EventUpdates.PacketKey;
import Type = KafkatorioPacketData.Type;

View file

@ -3,7 +3,7 @@ import EventUpdatesManager from "../cache/EventDataCache";
import {
KafkatorioPacketData,
PlayerUpdateKey
} from "../../generated/kafkatorio-schema/kafkatorio-schema";
} from "../../generated/kafkatorio-schema";
import Type = KafkatorioPacketData.Type;
import packetEmitter from "../PacketEmitter";

View file

@ -1,24 +1,21 @@
import {Converters} from "../events/converters";
import PacketEmitter from "../PacketEmitter";
import {
FactorioPrototype,
KafkatorioPacketData
} from "../../generated/kafkatorio-schema/kafkatorio-schema";
import Type = KafkatorioPacketData.Type;
import {FactorioPrototype, KafkatorioPacketData} from "../../generated/kafkatorio-schema";
import {Converters} from "./converters";
import PrototypesUpdate = KafkatorioPacketData.PrototypesUpdate;
export function emitPrototypes() {
const data: PrototypesUpdate = {
prototypes: prototypes(),
type: Type.PrototypesUpdate,
prototypes: prototypeUpdates(),
type: KafkatorioPacketData.Type.PrototypesUpdate,
}
PacketEmitter.emitInstantPacket(data)
}
function prototypes(): FactorioPrototype[] {
function prototypeUpdates(): FactorioPrototype[] {
let prototypes: FactorioPrototype[] = []
prototypes.push(...getMapTilePrototypes())
@ -26,6 +23,7 @@ function prototypes(): FactorioPrototype[] {
return prototypes
}
function getMapTilePrototypes(): FactorioPrototype.MapTile[] {
let tiles: FactorioPrototype.MapTile[] = []
for (let [, tile] of game.tile_prototypes) {
@ -35,7 +33,7 @@ function getMapTilePrototypes(): FactorioPrototype.MapTile[] {
name: tile.name,
order: tile.order,
layer: tile.layer,
collisionMasks: convertCollisionMaskToNames(tile.collision_mask),
collisionMasks: Converters.convertCollisionMaskToNames(tile.collision_mask),
mapColour: Converters.mapColour(tile.map_color),
canBeMined: tile.mineable_properties.minable,
})
@ -60,11 +58,3 @@ function getMapTilePrototypes(): FactorioPrototype.MapTile[] {
// }
// return tiles
// }
function convertCollisionMaskToNames(cm: CollisionMask): string[] {
let masks: string[] = []
for (let [name] of pairs(cm)) {
masks.push(name)
}
return masks
}

View file

@ -1,34 +1,11 @@
import {Queue} from "../queue/queue";
import {isEventType} from "./eventTypeCheck";
import {Converters} from "./converters";
import KafkatorioSettings from "../settings/KafkatorioSettings";
import {handleChunkGeneratedEvent} from "./onMapChunkEventListeners";
import {handleSurfaceUpdate} from "./handlers";
import {handleChunkGeneratedEvent} from "./mapChunkUpdates";
import {handleSurfaceUpdate} from "./surfaceUpdates";
import EventCacheService from "../cache/EventDataCache";
// script.on_event(
// defines.events.on_player_mined_entity,
// (e: OnPlayerMinedEntityEvent) => {
// let eventName = Converters.eventNameString(e.name)
// // handlePlayerUpdate(e.tick, eventName, e.player_index)
// handleEntityUpdate(e.tick, eventName, e.entity)
// }
// )
// script.on_event(
// defines.events.on_player_joined_game,
// (e: OnPlayerJoinedGameEvent) => {
// handlePlayerUpdate(e.tick, mapEventIdToName.get(e.name), e.player_index)
// }
// )
// script.on_event(
// defines.events.on_player_changed_position,
// (e: OnPlayerChangedPositionEvent) => {
// handlePlayerUpdate(e.tick, mapEventIdToName.get(e.name), e.player_index)
// }
// )
script.on_event(
defines.events.on_tick,
(event: OnTickEvent) => {
@ -38,18 +15,26 @@ script.on_event(
}
}
if (event.tick % 6 == 0) {
// Every 0.1 seconds
const emittedCount = EventCacheService.extractAndEmitExpiredPackets()
if (emittedCount > 0) {
log(`[on_tick:${event.tick}] emitted ${emittedCount} events`)
}
}
if (event.tick % 7 == 0) {
const events: EventData[] = Queue.dequeueValues(1)
if (events.length > 0) {
log(`[${event.tick}] dequed ${events.length} events, current size: ${Queue.size()}`)
log(`[on_tick:${event.tick}] dequeued ${events.length} events, current size: ${Queue.size()}`)
let i = 1
for (const event of events) {
if (isEventType(event, defines.events.on_chunk_generated)) {
let eName = Converters.eventNameString(event.name)
log(`[${event.tick}] dequed event ${eName}, delay ${i}`)
log(`[on_tick:${event.tick}] dequed event ${eName}, delay ${i}`)
handleChunkGeneratedEvent(event, i)
i += 1
}
@ -58,12 +43,3 @@ script.on_event(
}
}
)
script.on_event(
defines.events.on_runtime_mod_setting_changed,
(e: OnRuntimeModSettingChangedEvent) => {
print(`Settings changed ${e.setting_type}, ${e.player_index}, ${e.setting}, ${e.mod_name}`)
// KafkatorioSettings.loadSettings()
}
)

View file

@ -0,0 +1,7 @@
script.on_event(
defines.events.on_runtime_mod_setting_changed,
(e: OnRuntimeModSettingChangedEvent) => {
print(`Settings changed ${e.setting_type}, ${e.player_index}, ${e.setting}, ${e.mod_name}`)
// KafkatorioSettings.loadSettings()
}
)

View file

@ -1,5 +1,5 @@
import PacketEmitter from "../PacketEmitter";
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema/kafkatorio-schema";
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema";
import Type = KafkatorioPacketData.Type;

View file

@ -11,35 +11,12 @@ export class KafkatorioSettingsConfig {
}
// private eventCacheExpirationTicks: Record<KafkatorioKeyedPacketTypes, double> = {
// "kafkatorio.packet.keyed.PlayerUpdate":
// KafkatorioSettingsConfig.eventCacheExpirationDefaultSeconds[KafkatorioPacketData.Type.PlayerUpdate],
// "kafkatorio.packet.keyed.MapChunkUpdate":
// KafkatorioSettingsConfig.eventCacheExpirationDefaultSeconds[KafkatorioPacketData.Type.MapChunkUpdate],
// "kafkatorio.packet.keyed.EntityUpdate":
// KafkatorioSettingsConfig.eventCacheExpirationDefaultSeconds[KafkatorioPacketData.Type.EntityUpdate],
// }
public getEventCacheExpirationTicks(packet: KafkatorioKeyedPacketData): uint {
const settingName = KafkatorioSettingsConfig.cacheDurationSettingName(packet.type)
const seconds: double = settings.global[settingName].value as double
return seconds * 60 // convert ticks to seconds
}
// private static types: KafkatorioKeyedPacketTypes[] = [
// KafkatorioPacketData.Type.PlayerUpdate,
// KafkatorioPacketData.Type.MapChunkUpdate,
// KafkatorioPacketData.Type.EntityUpdate,
// ]
// public loadSettings(): void {
// for (const type of KafkatorioSettingsConfig.types) {
// const settingName = KafkatorioSettingsConfig.cacheDurationSettingName(type)
// const seconds: double = settings.global[settingName].value as double
// this.eventCacheExpirationTicks[type] = seconds * 60 // convert ticks to seconds
// }
// }
public initialiseSettings(data: Data): void {
for (const [type,] of pairs(KafkatorioSettingsConfig.eventCacheExpirationDefaultSeconds)) {

View file

@ -1,4 +1,4 @@
import {KafkatorioPacketData} from "../generated/kafkatorio-schema/kafkatorio-schema";
import {KafkatorioPacketData} from "../generated/kafkatorio-schema";
export type EventName = keyof typeof defines.events

View file

@ -20,10 +20,10 @@ services:
KAFKA_HOST: "kafka:29092"
volumes:
# Windows (requires privileged/root)
# - "//var/run/docker.sock:/var/run/docker.sock"
- "//var/run/docker.sock:/var/run/docker.sock"
# Rootless:
- "/run/user/1000/docker.sock:/var/run/docker.sock"
# - "/run/user/1000/docker.sock:/var/run/docker.sock"
# Unix?
# - "/var/run/docker.sock:/var/run/docker.sock"