From: Ben Sherratt Date: Sat, 20 Dec 2025 11:06:27 +0000 (+0000) Subject: Added support for specific frame export X-Git-Url: https://git.bts.cx/aseprite-tools.git/commitdiff_plain/refs/heads/main?hp=14c3f1ea993c163f0524a373af47ae802825fba5 Added support for specific frame export * Additional fixes --- diff --git a/export-puzzlescript.lua b/export-puzzlescript.lua index 31ef326..3b8abeb 100644 --- a/export-puzzlescript.lua +++ b/export-puzzlescript.lua @@ -93,7 +93,7 @@ function PuzzleScriptObjectItem:set_color(color) if color.alpha == 255 then self.colors = { hexColor(color) } else - self.colors = { "transparent" } + self.colors = {} end self.pixels = nil end @@ -112,16 +112,20 @@ function PuzzleScriptObjectItem:export(script_file) script_file:write(self.id) script_file:write("\n") - script_file:write(table.concat(self.colors, " ")) - script_file:write("\n") + if #self.colors > 0 then + script_file:write(table.concat(self.colors, " ")) + script_file:write("\n") - if self.pixels then - for y = 0, 4 do - for x = 0, 4 do - script_file:write(self.pixels[y * 5 + x + 1]) + if self.pixels then + for y = 0, 4 do + for x = 0, 4 do + script_file:write(self.pixels[y * 5 + x + 1]) + end + script_file:write("\n") end - script_file:write("\n") end + else + script_file:write("transparent\n") end end @@ -394,6 +398,7 @@ function main() local previous_export_filename = sprite.properties(plugin_key).previous_export_filename local previous_merge_filename = sprite.properties(plugin_key).previous_merge_filename + local previous_export_selected_only = sprite.properties(plugin_key).previous_export_selected_only local previous_export_lofi = sprite.properties(plugin_key).previous_export_lofi if previous_export_filename == nil then @@ -405,6 +410,7 @@ function main() local dlg = Dialog() dlg:file{ id="script_filename", label="Output:", filename=previous_export_filename, filetypes=".txt", save=true } dlg:file{ id="merge_filename", label="Merge script (optional):", filename=previous_merge_filename, filetypes=".txt" } + dlg:check{ id="selected_only", label="Export selected level(s) only", selected=previous_export_selected_only } dlg:check{ id="lofi", label="Prototype export (layer colours)", selected=previous_export_lofi } dlg:button{ id="confirm", text="Confirm" } dlg:button{ id="cancel", text="Cancel" } @@ -491,7 +497,17 @@ function main() local tiles_w = math.floor(sprite.width / 5) local tiles_h = math.floor(sprite.height / 5) - for _, frame in ipairs(sprite.frames) do + local exported_frames = sprite.frames + + if data.selected_only then + if app.range.isEmpty == false then + exported_frames = app.range.frames + else + exported_frames = { app.frame } + end + end + + for _, frame in ipairs(exported_frames) do local level_item = PuzzleScriptLevelItem:new() levels_section:add_item(level_item) level_item.width = tiles_w @@ -542,9 +558,6 @@ function main() level:map_to_legend(legend_section, legend_icons) end - - - local layers_section = pz_file:get_section("COLLISIONLAYERS") for _, layer in ipairs(sprite.layers) do local layer_item = PuzzleScriptLayerItem:new() @@ -572,33 +585,6 @@ function main() end end --- for _, objects in pairs(layer_objects) do --- for _, object in pairs(objects) do --- local layer_item = PuzzleScriptLayerItem:new() --- layers_section:add_item(layer_item) --- layer_item.id = object.layer.name --- end --- end - - --- for _, layer in ipairs(layers) do --- if layer.isVisible and layer.parent == sprite then - - - ---PuzzleScriptLegendMapping:new() - --- local layer_item = PuzzleScriptLayerItem:new() --- layers_section:add_item(layer_item) --- layer_item.id = layer.name --- end --- end - - ---legend stuff again after... - - - -- Merge after making everything else pz_file:read(data.merge_filename) @@ -606,11 +592,13 @@ function main() local export_filename_changed = sprite.properties(plugin_key).previous_export_filename ~= data.script_filename local merge_filename_changed = sprite.properties(plugin_key).previous_merge_filename ~= data.merge_filename + local selected_only_changed = sprite.properties(plugin_key).previous_export_selected_only ~= data.selected_only local lofi_changed = sprite.properties(plugin_key).previous_export_lofi ~= data.lofi - if export_filename_changed or merge_filename_changed or lofi_changed then + if export_filename_changed or merge_filename_changed or selected_only_changed or lofi_changed then sprite.properties(plugin_key).previous_export_filename = data.script_filename sprite.properties(plugin_key).previous_merge_filename = data.merge_filename + sprite.properties(plugin_key).previous_export_selected_only = data.selected_only sprite.properties(plugin_key).previous_export_lofi = data.lofi end end