diff --git a/.luarc.json b/.luarc.json index 47d59ba..bde783a 100644 --- a/.luarc.json +++ b/.luarc.json @@ -6,11 +6,6 @@ ], "hint.enable": false, "diagnostics.globals": [ - "settings", - "script", - "defines", - "game", - "global", "os" ] } \ No newline at end of file diff --git a/control.lua b/control.lua index 4e258d7..cfdbc1e 100644 --- a/control.lua +++ b/control.lua @@ -77,7 +77,7 @@ script.on_event(defines.events.on_surface_created, TLBE.GUI.onSurfacesUpdated) script.on_event(defines.events.on_surface_imported, TLBE.GUI.onSurfacesUpdated) script.on_event(defines.events.on_surface_renamed, TLBE.GUI.onSurfaceChanged) script.on_event(defines.events.on_built_entity, TLBE.Main.entity_built, - { { filter = "vehicle", invert = true } }) + { { filter = "vehicle", invert = true } --[[@as LuaPlayerBuiltEntityEventFilter]] }) script.on_event(defines.events.on_rocket_launch_ordered, TLBE.Main.rocket_launch) script.on_event(defines.events.on_rocket_launched, TLBE.Main.rocket_launched) diff --git a/migrations/tlbe.1.4.5.lua b/migrations/tlbe.1.4.5.lua index 38754bc..920c455 100644 --- a/migrations/tlbe.1.4.5.lua +++ b/migrations/tlbe.1.4.5.lua @@ -54,9 +54,11 @@ for player_index, player in pairs(game.players) do camera.transitionSpeedGain = camera.speedGain Camera.updateConfig(camera) + ---@diagnostic disable: inject-field Clear old fields camera.zoomPeriod = nil camera.zoomTicks = nil camera.zoomTicksRealtime = nil + ---@diagnostic enable: inject-field camera.chartTags = {} camera.showGUI = false end @@ -64,6 +66,7 @@ for player_index, player in pairs(game.players) do for _, tracker in pairs(playerSettings.trackers) do tracker.changeId = 0 + ---@diagnostic disable-next-line: inject-field tracker.lastChange = nil end diff --git a/scripts/camera.lua b/scripts/camera.lua index 5907277..019f331 100644 --- a/scripts/camera.lua +++ b/scripts/camera.lua @@ -25,8 +25,8 @@ local Camera = {} --- @field alwaysDay boolean Render screenshot in daylight --- @field frameRate number --- @field height number ---- @field lastKnownActiveTracker Tracker.tracker ---- @field changeId integer Last known change ID of the tracker +--- @field lastKnownActiveTracker Tracker.tracker|nil +--- @field changeId integer|nil Last known change ID of the tracker --- @field name string --- @field saveFolder string --- @field saveName string @@ -69,6 +69,7 @@ function Camera.newCamera(player, cameraList) end --- @type Camera.camera + --- @diagnostic disable-next-line: missing-fields The missing fields are set in updateConfig() and setName() local camera = { enabled = false, surfaceName = game.surfaces[1].name, diff --git a/scripts/tracker.lua b/scripts/tracker.lua index 9550848..a608725 100644 --- a/scripts/tracker.lua +++ b/scripts/tracker.lua @@ -11,10 +11,10 @@ local Tracker = {} --- @field type string --- @field untilBuild boolean --- @field userCanEnable boolean When true, the user can enabled/disable the tracker, otherwise the tracker is controlled by TBLE ---- @field moveToNextTracker boolean Disables the tracker after the cameras are processed (end of game tick) +--- @field moveToNextTracker boolean|nil Disables the tracker after the cameras are processed (end of game tick) --- @field changeId integer Incremented on each position/size change of the tracker ---- @field centerPos MapPosition.0 Center position of the tracker area (Calculated from minPos and maxPos) ---- @field size MapPosition.0 Size of the tracker area (Calculated from minPos and maxPos) +--- @field centerPos MapPosition.0|nil Center position of the tracker area (Calculated from minPos and maxPos) +--- @field size MapPosition.0|nil Size of the tracker area (Calculated from minPos and maxPos) --- @field minPos MapPosition.0 Bottom/Left of tracker area --- @field maxPos MapPosition.0 TopRight of tracker area --- @field cityBlock Tracker.cityBlock? City block vital statistics, used when type="cityblock" @@ -28,11 +28,11 @@ Tracker.cityBlock = {} ---@return Tracker.cityBlock function Tracker.cityBlock:new() - local cityBlock = {} + local cityBlock = {} - cityBlock.blockSize = { x=32, y=32 } - cityBlock.blockOffset = { x=0, y=0 } - cityBlock.currentBlock = { x=0, y=0 } + cityBlock.blockSize = { x = 32, y = 32 } + cityBlock.blockOffset = { x = 0, y = 0 } + cityBlock.currentBlock = { x = 0, y = 0 } cityBlock.blockScale = 1.5 return cityBlock end @@ -56,15 +56,17 @@ function Tracker.newTracker(trackerType, trackerList) surfaceName = game.surfaces[1].name, userCanEnable = true, enabled = true, + realtimeCamera = false, smooth = true, untilBuild = false, - changeId = 0 + changeId = 0, + -- Set some sensible dafaults but will be most likely overwritten by the tracker specific implementations + minPos = { x = -5, y = -5 }, + maxPos = { x = 5, y = 5 } } -- Add tracker specific details if trackerType == "area" then - newTracker.minPos = { x = -5, y = -5 } - newTracker.maxPos = { x = 5, y = 5 } Tracker.updateCenterAndSize(newTracker) elseif trackerType == "player" then newTracker.size = { x = 1, y = 1 } @@ -106,7 +108,7 @@ function Tracker.recalculateCityBlock(tracker) if tracker.type ~= "cityblock" then return end - + local cityBlock = tracker.cityBlock if cityBlock == nil then return @@ -137,17 +139,16 @@ function Tracker.recalculateCityBlock(tracker) x = minPosX, y = minPosY } - + tracker.maxPos = { x = tracker.centerPos.x + widthRad, y = tracker.centerPos.y + heightRad } - + Tracker.changed(tracker) end end - -- Update tracker state (if needed) --- @param tracker Tracker.tracker --- @param player LuaPlayer diff --git a/tests/camera_follow-tracker.lua b/tests/camera_follow-tracker.lua index 0b79597..30d7fd0 100644 --- a/tests/camera_follow-tracker.lua +++ b/tests/camera_follow-tracker.lua @@ -1,3 +1,4 @@ +---@diagnostic disable: missing-fields When mocking a game state we don't care about unused/missing fields package.path = package.path .. ";../?.lua" local TLBE = { Camera = require("scripts.camera") } diff --git a/tests/run-tests.sh b/tests/run-tests.sh new file mode 100755 index 0000000..fed721e --- /dev/null +++ b/tests/run-tests.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +lua5.2 test-suite.lua diff --git a/tests/tracker-player.lua b/tests/tracker-player.lua index c0d0d87..677d8d1 100644 --- a/tests/tracker-player.lua +++ b/tests/tracker-player.lua @@ -1,3 +1,4 @@ +---@diagnostic disable: missing-fields When mocking a game state we don't care about unused/missing fields package.path = package.path .. ";../?.lua" local TLBE = { Config = require("scripts.config"),