From 0cf536b2ba3854d4ee58c06227c1266870829b6c Mon Sep 17 00:00:00 2001 From: ne_mene Date: Tue, 31 Mar 2026 23:02:40 +0200 Subject: speck editor: file buttons --- src/scenes/speck_editor.lua | 22 ++++++++++++++++++++-- src/specks.lua | 4 ++++ src/utils.lua | 7 ++++++- 3 files changed, 30 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/scenes/speck_editor.lua b/src/scenes/speck_editor.lua index 96176d0..355bcd1 100644 --- a/src/scenes/speck_editor.lua +++ b/src/scenes/speck_editor.lua @@ -68,10 +68,28 @@ local function speck_editor_ui_sys(editor) im.text("File:") -- TODO: implement these guys im.button("New") - im.button("Open") + + if im.button("Open") then + editor.filepath = lw.showFileDialog("savefile", function (files, _, _) + if not files[1] or files[1] == "" then + return + end + + editor.filepath = trunc_filename_to_res(files[1]) + editor.speck_sys = load_speck_sys_non_cached(editor.filepath) + + end, {defaultname = "res/speck/"}) + end if im.button("Save as") then - save(editor) + editor.filepath = lw.showFileDialog("savefile", function (files, _, _) + if not files[1] or files[1] == "" then + return + end + + editor.filepath = trunc_filename_to_res(files[1]) + save(editor) + end, {defaultname = "res/speck/"}) end if im.button("Save") then save(editor) diff --git a/src/specks.lua b/src/specks.lua index 318bfdd..7c0ef11 100644 --- a/src/specks.lua +++ b/src/specks.lua @@ -285,3 +285,7 @@ function load_speck_sys(filename) return sys end +function load_speck_sys_non_cached(filename) + speck_bank[filename] = lf.load(filename)() + return load_speck_sys(filename) +end diff --git a/src/utils.lua b/src/utils.lua index 5b8258c..e20c88a 100644 --- a/src/utils.lua +++ b/src/utils.lua @@ -120,7 +120,7 @@ end function table.deep_copy(datatable) local tblRes={} if type(datatable)=="table" then - for k,v in pairs(datatable) do + for k,v in pairs(datatable) do tblRes[table.deep_copy(k)] = table.deep_copy(v) end else @@ -129,6 +129,11 @@ function table.deep_copy(datatable) return tblRes end +function trunc_filename_to_res(filename) + local index = filename:find("res/", 1, true) + return filename:sub(index) +end + EASING_FUNCTIONS = { Lerp = lerp } -- cgit v1.3-2-g0d8e