Skip to content

Commit c939d28

Browse files
authored
Support auto-recording, map seed in save path, and choosable file formats (#70)
* add auto record option * add map seed-subfolder option * fix main camera naming * add ability to choose file format
1 parent 71a54fd commit c939d28

File tree

6 files changed

+74
-5
lines changed

6 files changed

+74
-5
lines changed

changelog.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
---------------------------------------------------------------------------------------------------
2+
Version: 2.1.0
3+
Date: 19-02-2025
4+
Features:
5+
- Add (per player) setting to automatically activate recording with main camera on new game
6+
- Add (per player) setting to save screenshots in map seed named subdirectories
7+
- Add (per player) setting to change screenshot format (png/jpg)
8+
Bugfixes:
9+
- Fix main camera producing screenshot files with wrong camera name
10+
---------------------------------------------------------------------------------------------------
211
Version: 2.0.4
312
Date: 07-11-2024
413
Bugfixes:

control.lua

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ local function init_new_player(index, player)
2121
TLBE.GUI.initialize(player, storage.playerSettings[index])
2222

2323
player.print({ "mod-loaded" }, { r = 1, g = 0.5, b = 0 })
24-
player.print({ "mod-loaded2" })
24+
25+
local playerSettings = storage.playerSettings[index]
26+
if not playerSettings.autoRecord then
27+
player.print({ "mod-loaded2" })
28+
end
2529
end
2630

2731
local function on_init()
@@ -71,7 +75,10 @@ local function on_player_created(event)
7175
TLBE.Config.reload(event)
7276

7377
local player = game.players[event.player_index]
74-
player.print({ "mod-loaded2" }, { r = 1, g = 0.5, b = 0 })
78+
local playerSettings = storage.playerSettings[event.player_index]
79+
if not playerSettings.autoRecord then
80+
player.print({ "mod-loaded2" }, { r = 1, g = 0.5, b = 0 })
81+
end
7582

7683
TLBE.GUI.initialize(player, storage.playerSettings[event.player_index])
7784
end

locale/en/locale.cfg

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,18 @@ tlbe-save-folder=Save location
101101
tlbe-sequential-names=Sequential names
102102
tlbe-show-stats=Show camera status
103103
tlbe-use-interval=Use interval as speed setting
104+
tlbe-auto-record=Automatic recording
105+
tlbe-seed-subfolder=Map seed subfolder
106+
tlbe-save-format=Image format
104107

105108
[mod-setting-description]
106109
tlbe-save-folder=Relative from 'User Data Directory'
107110
tlbe-sequential-names=Use sequential numbering per camera for the screenshot numbers. When disabled, game ticks are used for screenshot numbering.
108111
tlbe-show-stats=This requires the Stats GUI mod to be loaded.
109112
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.
113+
tlbe-auto-record=Start recording automatically with main camera on new game
114+
tlbe-seed-subfolder=Generate a subfolder for each map seed to store screenshots in
115+
tlbe-save-format=Format of screenshot files
110116

111117
[shortcut]
112118
tlbe=Time Lapse Base Edition

scripts/config.lua

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ function Config.reload(event)
3434
local playerSettings = storage.playerSettings[event.player_index]
3535
if playerSettings == nil then
3636
playerSettings = Config.newPlayerSettings(player)
37+
playerSettings.cameras[playerSettings.guiPersist.selectedCamera].enabled = guiSettings["tlbe-auto-record"].value
3738
storage.playerSettings[event.player_index] = playerSettings
3839
end
3940

@@ -42,6 +43,9 @@ function Config.reload(event)
4243
playerSettings.sequentialNames = guiSettings["tlbe-sequential-names"].value
4344
playerSettings.showCameraStatus = guiSettings["tlbe-show-stats"].value
4445
playerSettings.useInterval = guiSettings["tlbe-use-interval"].value
46+
playerSettings.autoRecord = guiSettings["tlbe-auto-record"].value
47+
playerSettings.seedSubfolder = guiSettings["tlbe-seed-subfolder"].value
48+
playerSettings.saveFormat = guiSettings["tlbe-save-format"].value
4549
---@diagnostic enable: assign-type-mismatch
4650
end
4751

@@ -55,7 +59,7 @@ function Config.newPlayerSettings(player)
5559
}
5660

5761
local camera = Camera.newCamera(player, {})
58-
camera.name = "main"
62+
Camera.setName(camera, "main")
5963
camera.trackers = { trackers[1], trackers[2], trackers[3] }
6064

6165
return {

scripts/main.lua

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,35 @@ function Main.takeScreenshot(player, playerSettings, camera, activeTracker, forc
165165
alwaysDay = nil
166166
end
167167

168+
local savePath
169+
if playerSettings.seedSubfolder then
170+
savePath = string.format(
171+
"%s/%s/%d/%010d-%s.%s",
172+
playerSettings.saveFolder,
173+
camera.saveFolder,
174+
game.default_map_gen_settings.seed,
175+
screenshotNumber,
176+
camera.saveName,
177+
playerSettings.saveFormat
178+
)
179+
else
180+
savePath = string.format(
181+
"%s/%s/%010d-%s.%s",
182+
playerSettings.saveFolder,
183+
camera.saveFolder,
184+
screenshotNumber,
185+
camera.saveName,
186+
playerSettings.saveFormat
187+
)
188+
end
189+
168190
game.take_screenshot {
169191
by_player = player,
170192
surface = camera.surfaceName or game.surfaces[1],
171193
position = camera.centerPos,
172194
resolution = { camera.width, camera.height },
173195
zoom = camera.zoom,
174-
path = string.format("%s/%s/%010d-%s.png", playerSettings.saveFolder, camera.saveFolder, screenshotNumber
175-
, camera.saveName),
196+
path = savePath,
176197
show_entity_info = camera.entityInfo,
177198
show_gui = camera.showGUI,
178199
allow_in_replay = true,

settings.lua

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,28 @@ data:extend(
2727
setting_type = "runtime-per-user",
2828
default_value = false,
2929
order = "9"
30+
},
31+
{
32+
type = "bool-setting",
33+
name = "tlbe-auto-record",
34+
setting_type = "runtime-per-user",
35+
default_value = false,
36+
order = "13"
37+
},
38+
{
39+
type = "bool-setting",
40+
name = "tlbe-seed-subfolder",
41+
setting_type = "runtime-per-user",
42+
default_value = false,
43+
order = "4"
44+
},
45+
{
46+
type = "string-setting",
47+
name = "tlbe-save-format",
48+
setting_type = "runtime-per-user",
49+
default_value = "png",
50+
allowed_values = { "png", "jpg" },
51+
order = "2"
3052
}
3153
}
3254
)

0 commit comments

Comments
 (0)