Ok, nevermind. I think I basically got it:
local sprite = app.activeSprite
-- Check constraints
if sprite == nil then
app.alert("No Sprite...")
return
end
local function tablelength(T)
local count = 0
for _ in ipairs(T) do count = count + 1 end
return count
end
local function exportData()
io.write("{\n")
local layerCount = tablelength(sprite.layers)
local frameCount = tablelength(sprite.frames)
local userData = ""
for col = 1,frameCount,1 do
io.write(" {\n")
io.write(" \"frames\": [")
userData = ""
for row = layerCount,1,-1 do
local cel = sprite.layers[row]:cel(col)
if cel then
io.write(col .. ",")
if cel.data ~= "" then
userData = userData .. cel.data .. ","
else
userData = userData .. "-1,"
end
else
userData = userData .. "-1,"
io.write("-1,")
end
end
io.write("],\n")
io.write(" \"userData\": [" .. userData .. "]\n")
io.write(" }\n")
end
io.write("}\n")
end
local dlg = Dialog()
dlg:file{ id="exportFile",
label="File",
title="Export Index",
open=false,
save=true,
filetypes={"json"}}
dlg:button{ id="ok", text="OK" }
dlg:button{ id="cancel", text="Cancel" }
dlg:show()
local data = dlg.data
if data.ok then
local f = io.open(data.exportFile, "w")
io.output(f)
exportData()
io.close(f)
end