diff --git a/changelog.txt b/changelog.txt index 537d9c6..cb21451 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,13 @@ --------------------------------------------------------------------------------------------------- +Version: 2.1.0 +Date: 19-02-2025 + Features: + - Add (per player) setting to automatically activate recording with main camera on new game + - Add (per player) setting to save screenshots in map seed named subdirectories + - Add (per player) setting to change screenshot format (png/jpg) + Bugfixes: + - Fix main camera producing screenshot files with wrong camera name +--------------------------------------------------------------------------------------------------- Version: 2.0.4 Date: 07-11-2024 Bugfixes: diff --git a/control.lua b/control.lua index 4936743..1ca4898 100644 --- a/control.lua +++ b/control.lua @@ -21,7 +21,11 @@ local function init_new_player(index, player) TLBE.GUI.initialize(player, storage.playerSettings[index]) player.print({ "mod-loaded" }, { r = 1, g = 0.5, b = 0 }) - player.print({ "mod-loaded2" }) + + local playerSettings = storage.playerSettings[index] + if not playerSettings.autoRecord then + player.print({ "mod-loaded2" }) + end end local function on_init() @@ -71,7 +75,10 @@ local function on_player_created(event) TLBE.Config.reload(event) local player = game.players[event.player_index] - player.print({ "mod-loaded2" }, { r = 1, g = 0.5, b = 0 }) + local playerSettings = storage.playerSettings[event.player_index] + if not playerSettings.autoRecord then + player.print({ "mod-loaded2" }, { r = 1, g = 0.5, b = 0 }) + end TLBE.GUI.initialize(player, storage.playerSettings[event.player_index]) end diff --git a/locale/en/locale.cfg b/locale/en/locale.cfg index 265c3fb..1e838e2 100644 --- a/locale/en/locale.cfg +++ b/locale/en/locale.cfg @@ -101,12 +101,18 @@ tlbe-save-folder=Save location tlbe-sequential-names=Sequential names tlbe-show-stats=Show camera status tlbe-use-interval=Use interval as speed setting +tlbe-auto-record=Automatic recording +tlbe-seed-subfolder=Map seed subfolder +tlbe-save-format=Image format [mod-setting-description] tlbe-save-folder=Relative from 'User Data Directory' tlbe-sequential-names=Use sequential numbering per camera for the screenshot numbers. When disabled, game ticks are used for screenshot numbering. tlbe-show-stats=This requires the Stats GUI mod to be loaded. tlbe-use-interval=Use intervals (between frames) instead of speed gain in the camera settings. When this setting is changed, reopen camera settings to update the UI. +tlbe-auto-record=Start recording automatically with main camera on new game +tlbe-seed-subfolder=Generate a subfolder for each map seed to store screenshots in +tlbe-save-format=Format of screenshot files [shortcut] tlbe=Time Lapse Base Edition diff --git a/scripts/config.lua b/scripts/config.lua index 4b1053a..f9c6b9f 100644 --- a/scripts/config.lua +++ b/scripts/config.lua @@ -34,6 +34,7 @@ function Config.reload(event) local playerSettings = storage.playerSettings[event.player_index] if playerSettings == nil then playerSettings = Config.newPlayerSettings(player) + playerSettings.cameras[playerSettings.guiPersist.selectedCamera].enabled = guiSettings["tlbe-auto-record"].value storage.playerSettings[event.player_index] = playerSettings end @@ -42,6 +43,9 @@ function Config.reload(event) playerSettings.sequentialNames = guiSettings["tlbe-sequential-names"].value playerSettings.showCameraStatus = guiSettings["tlbe-show-stats"].value playerSettings.useInterval = guiSettings["tlbe-use-interval"].value + playerSettings.autoRecord = guiSettings["tlbe-auto-record"].value + playerSettings.seedSubfolder = guiSettings["tlbe-seed-subfolder"].value + playerSettings.saveFormat = guiSettings["tlbe-save-format"].value ---@diagnostic enable: assign-type-mismatch end @@ -55,7 +59,7 @@ function Config.newPlayerSettings(player) } local camera = Camera.newCamera(player, {}) - camera.name = "main" + Camera.setName(camera, "main") camera.trackers = { trackers[1], trackers[2], trackers[3] } return { diff --git a/scripts/main.lua b/scripts/main.lua index e99dfec..9392395 100644 --- a/scripts/main.lua +++ b/scripts/main.lua @@ -165,14 +165,35 @@ function Main.takeScreenshot(player, playerSettings, camera, activeTracker, forc alwaysDay = nil end + local savePath + if playerSettings.seedSubfolder then + savePath = string.format( + "%s/%s/%d/%010d-%s.%s", + playerSettings.saveFolder, + camera.saveFolder, + game.default_map_gen_settings.seed, + screenshotNumber, + camera.saveName, + playerSettings.saveFormat + ) + else + savePath = string.format( + "%s/%s/%010d-%s.%s", + playerSettings.saveFolder, + camera.saveFolder, + screenshotNumber, + camera.saveName, + playerSettings.saveFormat + ) + end + game.take_screenshot { by_player = player, surface = camera.surfaceName or game.surfaces[1], position = camera.centerPos, resolution = { camera.width, camera.height }, zoom = camera.zoom, - path = string.format("%s/%s/%010d-%s.png", playerSettings.saveFolder, camera.saveFolder, screenshotNumber - , camera.saveName), + path = savePath, show_entity_info = camera.entityInfo, show_gui = camera.showGUI, allow_in_replay = true, diff --git a/settings.lua b/settings.lua index 93540ac..9c2920d 100644 --- a/settings.lua +++ b/settings.lua @@ -27,6 +27,28 @@ data:extend( setting_type = "runtime-per-user", default_value = false, order = "9" + }, + { + type = "bool-setting", + name = "tlbe-auto-record", + setting_type = "runtime-per-user", + default_value = false, + order = "13" + }, + { + type = "bool-setting", + name = "tlbe-seed-subfolder", + setting_type = "runtime-per-user", + default_value = false, + order = "4" + }, + { + type = "string-setting", + name = "tlbe-save-format", + setting_type = "runtime-per-user", + default_value = "png", + allowed_values = { "png", "jpg" }, + order = "2" } } )