Fix compile errors surfaced by actually building against Factorio 2.0.77
typed-factorio 2.0.0+ stopped declaring types as ambient globals - they
now live in virtual modules ("factorio:runtime", "factorio:common",
"factorio:settings") and must be explicitly imported. Adds those imports
throughout events-mod. Also:
- Bumps typescript-to-lua 1.11.1 -> 1.25.2 and typescript 4.9 -> 5.4.2,
since tstl pins an exact peer TypeScript version and typed-factorio
3.x needs a newer one than 4.9 supports (a real compiler bug in
TS 4.9 against the generated defines.segmented_unit_ai_state enum).
- Bumps the pinned isolated Node (14.19.1 -> 24.21.0), since
typescript-to-lua 1.25.2 requires Node >=16.10.0.
- Renames bare uint/int -> uint32/int32 (import aliases), since the
unsized aliases no longer exist.
- Drops OnEntityDestroyedEvent from an unused documentation-only union
type - that event no longer exists in the 2.0 API.
- LuaEntityPrototype.max_health is now get_max_health() (quality-aware).
- Fixes a branded-type mismatch between our generated schema's
ForceIndex and typed-factorio's own ForceIndex.
Verified by actually running tstl end-to-end (clean compile, Lua
emitted) after installing a real JDK and Node toolchain.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
072d1a2845
commit
e296a9aa90
26 changed files with 285 additions and 79 deletions
|
|
@ -1,5 +1,7 @@
|
|||
// Generated by kxs-ts-gen - do not edit this file manually
|
||||
|
||||
import {double, float, int32 as int, int8, PlayerIndex, SurfaceIndex, uint32 as uint, uint8, UnitNumber} from "factorio:runtime"
|
||||
|
||||
export interface KafkatorioPacket {
|
||||
modVersion: string;
|
||||
tick: Tick;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import {initGlobal} from "../global-init";
|
||||
import {emitPrototypes} from "../events/prototypeUpdates";
|
||||
import EventDataQueue from "../emitting/EventDataQueue";
|
||||
import {ChunkPosition, CustomCommandData, OnChunkGeneratedEvent} from "factorio:runtime"
|
||||
|
||||
|
||||
commands.add_command(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import KafkatorioSettings from "../settings/KafkatorioSettings";
|
||||
import {KafkatorioKeyedPacketData} from "../types";
|
||||
import PacketEmitter from "./PacketEmitter";
|
||||
import {uint32 as uint} from "factorio:runtime"
|
||||
|
||||
|
||||
declare const storage: {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
import {EventData, int32 as int, uint32 as uint} from "factorio:runtime"
|
||||
|
||||
|
||||
export class EventDataQueueManager {
|
||||
|
||||
static init(force?: boolean) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema";
|
||||
import {int32 as int} from "factorio:runtime"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import {initGlobal} from "../global-init";
|
||||
import {emitPrototypes} from "./prototypeUpdates";
|
||||
import ConfigurationUpdates from "./handlers/ConfigurationUpdateHandler";
|
||||
import {ConfigurationChangedData} from "factorio:runtime"
|
||||
|
||||
|
||||
script.on_configuration_changed((data: ConfigurationChangedData) => {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema";
|
||||
import KafkatorioPacketQueue from "../emitting/KafkatorioPacketQueue";
|
||||
import {OnConsoleChatEvent, OnConsoleCommandEvent} from "factorio:runtime"
|
||||
|
||||
|
||||
script.on_event(defines.events.on_console_chat, (event: OnConsoleChatEvent) => {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,21 @@ import {
|
|||
MinedProduct,
|
||||
PrototypeId,
|
||||
} from "../../generated/kafkatorio-schema";
|
||||
import {
|
||||
BoundingBox,
|
||||
ChunkPosition,
|
||||
CollisionMask,
|
||||
Color,
|
||||
LuaEntity,
|
||||
LuaEntityPrototype,
|
||||
LuaPlayer,
|
||||
LuaSurface,
|
||||
LuaTilePrototype,
|
||||
MapPosition,
|
||||
OldTileAndPosition,
|
||||
Tile,
|
||||
TilePosition,
|
||||
} from "factorio:runtime"
|
||||
|
||||
|
||||
export namespace Converters {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import EntityUpdates from "./handlers/EntityUpdateHandler";
|
||||
import {OnBuiltEntityEvent, OnPlayerMinedEntityEvent, OnRobotBuiltEntityEvent, OnRobotMinedEntityEvent} from "factorio:runtime"
|
||||
|
||||
script.on_event(defines.events.on_built_entity, (e: OnBuiltEntityEvent) => {
|
||||
log(`on_built_entity ${e.tick}`)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import {CustomInputEvent, EventData, EventId} from "factorio:runtime"
|
||||
|
||||
|
||||
export function isEventType<ED extends EventData | CustomInputEvent>(
|
||||
eventData: EventData,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {
|
|||
import PacketEmitter from "../../emitting/PacketEmitter";
|
||||
import ConfigurationUpdate = KafkatorioPacketData.ConfigurationUpdate;
|
||||
import KafkatorioPacketQueue from "../../emitting/KafkatorioPacketQueue";
|
||||
import {ConfigurationChangedData} from "factorio:runtime"
|
||||
|
||||
|
||||
export class ConfigurationUpdateHandler {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,34 @@ import {
|
|||
} from "../../../generated/kafkatorio-schema";
|
||||
import {Converters} from "../converters";
|
||||
import EventDataCache from "../../emitting/EventDataCache";
|
||||
import {
|
||||
BoundingBox,
|
||||
LuaEntity,
|
||||
LuaSurface,
|
||||
MapPosition,
|
||||
OldTileAndPosition,
|
||||
OnBuiltEntityEvent,
|
||||
OnChunkGeneratedEvent,
|
||||
OnEntityClonedEvent,
|
||||
OnEntityDamagedEvent,
|
||||
OnEntityDiedEvent,
|
||||
OnEntityLogisticSlotChangedEvent,
|
||||
OnEntityRenamedEvent,
|
||||
OnEntitySettingsPastedEvent,
|
||||
OnEntitySpawnedEvent,
|
||||
OnPlayerMinedEntityEvent,
|
||||
OnPlayerMinedTileEvent,
|
||||
OnPlayerRepairedEntityEvent,
|
||||
OnPlayerRotatedEntityEvent,
|
||||
OnPostEntityDiedEvent,
|
||||
OnPreEntitySettingsPastedEvent,
|
||||
OnRobotBuiltEntityEvent,
|
||||
OnRobotMinedEntityEvent,
|
||||
OnRobotMinedTileEvent,
|
||||
OnSelectedEntityChangedEvent,
|
||||
OnTriggerCreatedEntityEvent,
|
||||
SurfaceIndex,
|
||||
} from "factorio:runtime"
|
||||
|
||||
|
||||
export class EntityUpdatesHandler {
|
||||
|
|
@ -211,7 +239,6 @@ type EntityUpdateEvent =
|
|||
|
||||
| OnEntityClonedEvent
|
||||
| OnEntityDamagedEvent
|
||||
| OnEntityDestroyedEvent
|
||||
| OnEntityDiedEvent
|
||||
| OnEntityLogisticSlotChangedEvent
|
||||
| OnEntityRenamedEvent
|
||||
|
|
|
|||
|
|
@ -7,6 +7,18 @@ import {
|
|||
} from "../../../generated/kafkatorio-schema";
|
||||
import EventUpdates, {PacketKey} from "../../emitting/EventDataCache";
|
||||
import {MapChunkUpdateEvent, MapTileChangeEvent} from "../mapChunkUpdates";
|
||||
import {
|
||||
LuaSurface,
|
||||
OnChunkGeneratedEvent,
|
||||
OnPlayerBuiltTileEvent,
|
||||
OnPlayerMinedTileEvent,
|
||||
OnPreChunkDeletedEvent,
|
||||
OnRobotBuiltTileEvent,
|
||||
OnRobotMinedTileEvent,
|
||||
ScriptRaisedSetTilesEvent,
|
||||
Tile,
|
||||
uint32 as uint,
|
||||
} from "factorio:runtime"
|
||||
|
||||
|
||||
type MapChunkTileUpdater = (data: KafkatorioPacketData.MapChunkTileUpdate) => void
|
||||
|
|
|
|||
|
|
@ -1,6 +1,19 @@
|
|||
import {KafkatorioPacketData} from "../../../generated/kafkatorio-schema";
|
||||
import {Converters} from "../converters";
|
||||
import EventUpdates from "../../emitting/EventDataCache";
|
||||
import {
|
||||
LuaPlayer,
|
||||
OnPlayerBannedEvent,
|
||||
OnPlayerChangedPositionEvent,
|
||||
OnPlayerChangedSurfaceEvent,
|
||||
OnPlayerDiedEvent,
|
||||
OnPlayerJoinedGameEvent,
|
||||
OnPlayerKickedEvent,
|
||||
OnPlayerRemovedEvent,
|
||||
OnPlayerUnbannedEvent,
|
||||
OnPrePlayerLeftGameEvent,
|
||||
uint32 as uint,
|
||||
} from "factorio:runtime"
|
||||
|
||||
|
||||
export type PlayerUpdater = (player: LuaPlayer, data: KafkatorioPacketData.PlayerUpdate) => void
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
import EntityUpdates from "./handlers/EntityUpdateHandler";
|
||||
import MapChunkUpdate from "./handlers/MapChunkUpdateHandler";
|
||||
import {
|
||||
OnChunkChartedEvent,
|
||||
OnChunkDeletedEvent,
|
||||
OnChunkGeneratedEvent,
|
||||
OnPlayerBuiltTileEvent,
|
||||
OnPlayerMinedTileEvent,
|
||||
OnPreChunkDeletedEvent,
|
||||
OnRobotBuiltTileEvent,
|
||||
OnRobotMinedTileEvent,
|
||||
ScriptRaisedSetTilesEvent,
|
||||
} from "factorio:runtime"
|
||||
|
||||
|
||||
export type MapTileChangeEvent =
|
||||
|
|
|
|||
|
|
@ -2,6 +2,16 @@ import {Converters} from "./converters";
|
|||
import {ForceIndex, KafkatorioPacketData, PlayerUpdateKey} from "../../generated/kafkatorio-schema";
|
||||
import packetEmitter from "../emitting/PacketEmitter";
|
||||
import PlayerUpdates from "./handlers/PlayerUpdateHandler";
|
||||
import {
|
||||
OnPlayerBannedEvent,
|
||||
OnPlayerChangedPositionEvent,
|
||||
OnPlayerChangedSurfaceEvent,
|
||||
OnPlayerDiedEvent,
|
||||
OnPlayerJoinedGameEvent,
|
||||
OnPlayerKickedEvent,
|
||||
OnPlayerRemovedEvent,
|
||||
OnPrePlayerLeftGameEvent,
|
||||
} from "factorio:runtime"
|
||||
|
||||
|
||||
// function playerUpdateDebounce(playerIndex: uint, mutate: PlayerUpdater) {
|
||||
|
|
@ -23,7 +33,7 @@ script.on_event(defines.events.on_player_joined_game, (e: OnPlayerJoinedGameEven
|
|||
data.characterUnitNumber = player.character?.unit_number ?? null
|
||||
data.chatColour = Converters.mapColour(player.chat_color)
|
||||
data.colour = Converters.mapColour(player.color)
|
||||
data.forceIndex = player.force.index as ForceIndex
|
||||
data.forceIndex = player.force.index as unknown as ForceIndex
|
||||
data.name = player.name
|
||||
data.isShowOnMap = player.show_on_map
|
||||
data.isSpectator = player.spectator
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import {
|
|||
} from "../../generated/kafkatorio-schema";
|
||||
import {Converters} from "./converters";
|
||||
import KafkatorioPacketQueue from "../emitting/KafkatorioPacketQueue";
|
||||
import {LuaGroup} from "factorio:runtime"
|
||||
|
||||
|
||||
type PrototypesByType<T extends FactorioPrototype> = Record<string, T[]>
|
||||
|
|
@ -70,7 +71,7 @@ function getEntityPrototypes(): PrototypesByType<FactorioPrototype.Entity> {
|
|||
isBuilding: entity.is_building,
|
||||
isEntityWithOwner: entity.is_entity_with_owner,
|
||||
isMilitaryTarget: entity.is_military_target,
|
||||
maxHealth: entity.max_health,
|
||||
maxHealth: entity.get_max_health(),
|
||||
collisionBox: Converters.collisionBox(entity.collision_box),
|
||||
|
||||
tileWidth: entity.tile_width,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import KafkatorioPacketQueue from "../emitting/KafkatorioPacketQueue";
|
|||
import PacketEmitter from "../emitting/PacketEmitter";
|
||||
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema";
|
||||
import EventDataQueue from "../emitting/EventDataQueue";
|
||||
import {EventData, OnTickEvent} from "factorio:runtime"
|
||||
|
||||
|
||||
script.on_event(defines.events.on_tick, (event: OnTickEvent) => {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
import {OnRuntimeModSettingChangedEvent} from "factorio:runtime"
|
||||
|
||||
|
||||
script.on_event(defines.events.on_runtime_mod_setting_changed, (e: OnRuntimeModSettingChangedEvent) => {
|
||||
print(`Settings changed ${e.setting_type}, ${e.player_index}, ${e.setting}`)
|
||||
// KafkatorioSettings.loadSettings()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import PacketEmitter from "../emitting/PacketEmitter";
|
||||
import {KafkatorioPacketData} from "../../generated/kafkatorio-schema";
|
||||
import Type = KafkatorioPacketData.Type;
|
||||
import {LuaSurface, OnTickEvent} from "factorio:runtime"
|
||||
|
||||
|
||||
export function handleSurfaceUpdate(
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import {EventDataQueueManager} from "./emitting/EventDataQueue";
|
|||
export function initGlobal(force: boolean = false) {
|
||||
log(`Initialising Kafkatorio Global variables (force=${force})...`)
|
||||
|
||||
storage.MOD_VERSION = script.active_mods[script.mod_name]
|
||||
storage.FACTORIO_VERSION = script.active_mods["base"]
|
||||
storage.MOD_VERSION = script.active_mods[script.mod_name]!
|
||||
storage.FACTORIO_VERSION = script.active_mods["base"]!
|
||||
|
||||
EventDataQueueManager.init(true)
|
||||
EventUpdates.init(true)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import {SettingsData} from "factorio:common"
|
||||
import {DoubleSettingDefinition} from "factorio:settings"
|
||||
import {KafkatorioKeyedPacketData, KafkatorioKeyedPacketTypes} from "../types";
|
||||
import {double, uint32 as uint} from "factorio:runtime"
|
||||
|
||||
export class KafkatorioSettingsConfig {
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue