From e5cb5a5689238ad2e85277751398a1b1494614be Mon Sep 17 00:00:00 2001 From: Xertis Date: Thu, 2 Jan 2025 23:16:53 +0300 Subject: [PATCH 01/12] redesign content --- res/layouts/pages/content.xml | 39 ++++++++++--- res/layouts/pages/content.xml.lua | 95 +++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 9 deletions(-) diff --git a/res/layouts/pages/content.xml b/res/layouts/pages/content.xml index c4ff39e2..d0353a45 100644 --- a/res/layouts/pages/content.xml +++ b/res/layouts/pages/content.xml @@ -1,13 +1,34 @@ - - - + + + + + + + - - - - - + + + + + + + + + + + + + + + + diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index d03c6e80..e480b490 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -8,6 +8,21 @@ end add_packs = {} rem_packs = {} +packs_included = {} +packs_excluded = {} + +packs_info = {} + +local function include(id, is_include) + if is_include then + table.insert(packs_included, id) + table.remove_value(packs_excluded, id) + else + table.insert(packs_excluded, id) + table.remove_value(packs_included, id) + end +end + function apply() core.reconfig_packs(add_packs, rem_packs) if mode ~= "world" then @@ -15,8 +30,37 @@ function apply() end end +function refresh_search() + local search_text = document.search_textbox.text:lower() + local interval = 2 + local step = -1 + + for _, packs in ipairs({packs_excluded, packs_included}) do + local visible = 0 + + for i, v in ipairs(packs) do + local info = packs_info[v] + + local id = info[1] + local title = info[2] + + local content = document["pack_" .. id] + local pos = content.pos + local size = content.size + + if title:lower():find(search_text) or search_text == '' then + content.pos = {pos[1], visible * (size[2] + interval) - step} + visible = visible + 1 + else + content.pos = {pos[1], (visible + #packs - i) * (size[2] + interval) - step} + end + end + end +end + function refresh_changes() document.apply_btn.enabled = (#add_packs>0) or (#rem_packs>0) + refresh_search() end function move_pack(id) @@ -24,22 +68,60 @@ function move_pack(id) if table.has(add_packs, id) then document["pack_"..id]:moveInto(document.packs_add) table.remove_value(add_packs, id) + include(id, false) -- cancel pack removal elseif table.has(rem_packs, id) then document["pack_"..id]:moveInto(document.packs_cur) table.remove_value(rem_packs, id) + include(id, true) -- add pack elseif table.has(packs_installed, id) then document["pack_"..id]:moveInto(document.packs_add) table.insert(rem_packs, id) + include(id, false) -- remove pack else document["pack_"..id]:moveInto(document.packs_cur) table.insert(add_packs, id) + include(id, true) end refresh_changes() end +function move_left() + for _, id in pairs(table.copy(packs_excluded)) do + if not document["pack_"..id].enabled then goto continue end + + include(id, true) + table.insert(add_packs, id) + table.remove_value(rem_packs, id) + document["pack_"..id]:moveInto(document.packs_cur) + + ::continue:: + end + + refresh_changes() +end + +function move_right() + for _, id in pairs(table.copy(packs_included)) do + if not document["pack_"..id].enabled then goto continue end + + include(id, false) + + if table.has(packs_installed, id) then + table.insert(rem_packs, id) + end + + table.remove_value(add_packs, id) + document["pack_"..id]:moveInto(document.packs_add) + + ::continue:: + end + + refresh_changes() +end + function place_pack(panel, packinfo, callback) if packinfo.error then callback = nil @@ -115,12 +197,25 @@ function refresh() place_pack(packs_add, packinfo, callback) end + for _,id in ipairs(base_packs) do + local packinfo = pack.get_info(id) + packs_info[id] = {packinfo.id, packinfo.title} + end + + for _,id in ipairs(packs_all) do + local packinfo = pack.get_info(id) + packs_info[id] = {packinfo.id, packinfo.title} + end + for i,id in ipairs(packs_installed) do if table.has(required, id) then document["pack_"..id].enabled = false end end + if #packs_excluded == 0 then packs_excluded = table.copy(packs_available) end + if #packs_included == 0 then packs_included = table.copy(packs_installed) end + apply_movements(packs_cur, packs_add) refresh_changes() end From a1a4fc97fca8472a21d166d6de7b6063fc6763b0 Mon Sep 17 00:00:00 2001 From: Xertis Date: Thu, 2 Jan 2025 23:31:15 +0300 Subject: [PATCH 02/12] add icons --- res/preload.json | 5 ++++- res/textures/gui/left_arrow.png | Bin 0 -> 202 bytes res/textures/gui/loupe.png | Bin 0 -> 201 bytes res/textures/gui/right_arrow.png | Bin 0 -> 201 bytes 4 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 res/textures/gui/left_arrow.png create mode 100644 res/textures/gui/loupe.png create mode 100644 res/textures/gui/right_arrow.png diff --git a/res/preload.json b/res/preload.json index 5efe0162..ec256e0d 100644 --- a/res/preload.json +++ b/res/preload.json @@ -19,7 +19,10 @@ "gui/cross", "gui/refresh", "gui/folder_icon", - "gui/settings_icon" + "gui/settings_icon", + "gui/loupe", + "gui/left_arrow", + "gui/right_arrow" ], "fonts": [ { diff --git a/res/textures/gui/left_arrow.png b/res/textures/gui/left_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..0d719ff2bc27cf47a743fb18da1be82a8d5ee44e GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}E0G|-o|Ns93nW2X+*8wS}k|4j}{|ryJ8+ZYEoCO|{#S9F5hd`K7RKu$Q zC}{8L;uxY4+?-TKNtW2 literal 0 HcmV?d00001 diff --git a/res/textures/gui/loupe.png b/res/textures/gui/loupe.png new file mode 100644 index 0000000000000000000000000000000000000000..1b8a946b138acaed6b4696a2e723e6fc4f3df6d4 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}E0G|-o|Ns93nW2X+*8wS}k|4j}{|ryJ8+ZYEoCO|{#S9F5he4R}c>anM zprDNS%G}E0G|-o|Ns93nW2X+*8wS}k|4j}{|ryJ8+ZYEoCO|{#S9F5he4R}c>anM zprDbglh-C-t=Oc+w8KlW9t2k o|GC}1ReRNn&&xbn@P(b-zl&k=j3nppK$93eUHx3vIVCg!06tkhga7~l literal 0 HcmV?d00001 From a5aaddb379bdcab533af499dac458b76ae0e45b6 Mon Sep 17 00:00:00 2001 From: Xertis Date: Fri, 3 Jan 2025 18:07:01 +0300 Subject: [PATCH 03/12] add suggestive signs --- res/layouts/pages/content.xml | 67 ++++++++++++++++++-------------- res/preload.json | 2 +- res/textures/gui/check_mark.png | Bin 0 -> 560 bytes 3 files changed, 38 insertions(+), 31 deletions(-) create mode 100644 res/textures/gui/check_mark.png diff --git a/res/layouts/pages/content.xml b/res/layouts/pages/content.xml index d0353a45..e7482225 100644 --- a/res/layouts/pages/content.xml +++ b/res/layouts/pages/content.xml @@ -1,34 +1,41 @@ - - - + + + - - - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/preload.json b/res/preload.json index ec256e0d..558cbba0 100644 --- a/res/preload.json +++ b/res/preload.json @@ -20,7 +20,7 @@ "gui/refresh", "gui/folder_icon", "gui/settings_icon", - "gui/loupe", + "gui/check_mark", "gui/left_arrow", "gui/right_arrow" ], diff --git a/res/textures/gui/check_mark.png b/res/textures/gui/check_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..61e6171184e39316f0e733419fecb5819de51b76 GIT binary patch literal 560 zcmV-00?+-4P)4Tx04UFukv&MmKpe$iQ%gl!9PA+CkfAzR5ET(zY!!-7A=C=3I+$Gg1x*@~ z6c z;Ji;9VI^55J|`YC>4L?&Kfh)c3uQq_0Ptxmc zEqVm>Zvz+CZB5w&E_Z;zCqp)6SMt*m3I*W(jJ_!c4BP^JYhG`yeVjf38R{x^0~{Oz zqeaSI@AB^6&ffk!)9UXBrv`GoY$vfO00009a7bBm000XU000XU0RWnu7ytkOQb|NX zR5(xNkU0*3Fc1T0`Tw6yLl7)BL6k66c$gBnKuKca#bzPNc1w}0%vqm yW`Cr>%$o+CcH| Date: Fri, 3 Jan 2025 18:34:13 +0300 Subject: [PATCH 04/12] content.xml fixing + fixing old bug in new_world.lua --- res/layouts/pages/content.xml | 4 ++-- res/layouts/pages/new_world.xml.lua | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/res/layouts/pages/content.xml b/res/layouts/pages/content.xml index e7482225..37025c69 100644 --- a/res/layouts/pages/content.xml +++ b/res/layouts/pages/content.xml @@ -4,11 +4,11 @@ diff --git a/res/layouts/pages/new_world.xml.lua b/res/layouts/pages/new_world.xml.lua index 25e6f424..0dafa505 100644 --- a/res/layouts/pages/new_world.xml.lua +++ b/res/layouts/pages/new_world.xml.lua @@ -28,7 +28,8 @@ function on_open() document.content_btn.text = string.format( "%s [%s]", gui.str("Content", "menu"), #pack.get_installed() ) - if settings.generator == nil then + + if settings.generator == nil or generation.get_generators()[settings.generator] == nil then settings.generator = generation.get_default_generator() end document.generator_btn.text = string.format( From 866173207a90a70dcb3067c03d283eee27f301a8 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Fri, 3 Jan 2025 20:19:17 +0300 Subject: [PATCH 05/12] adding comments --- res/layouts/pages/content.xml.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index e480b490..73b7d54e 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -5,9 +5,13 @@ function on_open(params) refresh() end +-- add - packs to be added to the world (after apply) +-- rem - packs that should be removed from the world (after apply) add_packs = {} rem_packs = {} +-- included - connected packs to the world +-- excluded - packs that are not connected to the world packs_included = {} packs_excluded = {} From 6c3dd941ce97ed88649e16146f089a48e18419af Mon Sep 17 00:00:00 2001 From: Xertis Date: Sun, 19 Jan 2025 12:53:32 +0300 Subject: [PATCH 06/12] refact search --- doc/ru/scripting/extensions.md | 5 ++ res/layouts/pages/content.xml.lua | 99 ++++++++++++++++++++----------- res/layouts/templates/pack.xml | 2 +- res/scripts/stdmin.lua | 12 ++++ 4 files changed, 81 insertions(+), 37 deletions(-) diff --git a/doc/ru/scripting/extensions.md b/doc/ru/scripting/extensions.md index ca165b0c..b72b8b09 100644 --- a/doc/ru/scripting/extensions.md +++ b/doc/ru/scripting/extensions.md @@ -52,6 +52,11 @@ table.shuffle(t: table) -> table Перемешивает значения в таблице. +```lua +table.merge(t1: table, t2: table) -> table +``` + +Возвращает объединённую таблицу t1 с t2. ```lua table.tostring(t: table) -> string diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index 7270c542..29b8ff68 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -34,34 +34,60 @@ function apply() end end -function refresh_search() +function reposition_func(pack) + local INTERVAL = 2 + local STEP = -1 + local SIZE = 80 + + local tbl = packs_excluded + if table.has(packs_included, pack) then + tbl = packs_included + end + + local indx = table.index(tbl, pack) - 1 + local pos = {0, (SIZE + INTERVAL) * indx - STEP} + + return pos +end + + +function refresh_search() local search_text = document.search_textbox.text:lower() - local interval = 2 - local step = -1 - for _, packs in ipairs({packs_excluded, packs_included}) do - local visible = 0 + local new_included = table.copy(packs_included) + local new_excluded = table.copy(packs_excluded) - for i, v in ipairs(packs) do - local info = packs_info[v] + local function score(package_name) + if package_name:lower():find(search_text) then + return 1 + end + return 0 + end - local id = info[1] - local title = info[2] + local function sorting(a, b) + local score_a = score(packs_info[a][2]) + local score_b = score(packs_info[b][2]) - local content = document["pack_" .. id] - local pos = content.pos - local size = content.size - - if title:lower():find(search_text) or search_text == '' then - content.pos = {pos[1], visible * (size[2] + interval) - step} - visible = visible + 1 - else - content.pos = {pos[1], (visible + #packs - i) * (size[2] + interval) - step} - end + if score_a ~= score_b then + return score_a > score_b + else + return packs_info[a][2] < packs_info[b][2] end end + + table.sort(new_included, sorting) + table.sort(new_excluded, sorting) + + packs_included = new_included + packs_excluded = new_excluded + + for _, id in ipairs(table.merge(table.copy(packs_included), packs_excluded)) do + local content = document["pack_" .. id] + content:reposition() + end end + function refresh_changes() document.apply_btn.enabled = (#add_packs>0) or (#rem_packs>0) refresh_search() @@ -126,7 +152,7 @@ function move_right() refresh_changes() end -function place_pack(panel, packinfo, callback) +function place_pack(panel, packinfo, callback, position_func) if packinfo.error then callback = nil end @@ -136,6 +162,7 @@ function place_pack(panel, packinfo, callback) packinfo.id_verbose = packinfo.id end packinfo.callback = callback + packinfo.position_func = position_func or function () end panel:add(gui.template("pack", packinfo)) if not callback then document["pack_"..packinfo.id].enabled = false @@ -191,22 +218,6 @@ function refresh() end local packinfos = pack.get_info(packids) - for i,id in ipairs(packs_installed) do - local packinfo = packinfos[id] - packinfo.index = i - callback = not table.has(base_packs, id) and string.format('move_pack("%s")', id) or nil - packinfo.error = check_dependencies(packinfo) - place_pack(packs_cur, packinfo, callback) - end - - for i,id in ipairs(packs_available) do - local packinfo = packinfos[id] - packinfo.index = i - callback = string.format('move_pack("%s")', id) - packinfo.error = check_dependencies(packinfo) - place_pack(packs_add, packinfo, callback) - end - for _,id in ipairs(base_packs) do local packinfo = pack.get_info(id) packs_info[id] = {packinfo.id, packinfo.title} @@ -226,6 +237,22 @@ function refresh() if #packs_excluded == 0 then packs_excluded = table.copy(packs_available) end if #packs_included == 0 then packs_included = table.copy(packs_installed) end + for i,id in ipairs(packs_installed) do + local packinfo = packinfos[id] + packinfo.index = i + callback = not table.has(base_packs, id) and string.format('move_pack("%s")', id) or nil + packinfo.error = check_dependencies(packinfo) + place_pack(packs_cur, packinfo, callback, string.format('reposition_func("%s")[1],reposition_func("%s")[2]', packinfo.id, packinfo.id)) + end + + for i,id in ipairs(packs_available) do + local packinfo = packinfos[id] + packinfo.index = i + callback = string.format('move_pack("%s")', id) + packinfo.error = check_dependencies(packinfo) + place_pack(packs_add, packinfo, callback, string.format('reposition_func("%s")[1],reposition_func("%s")[2]', packinfo.id, packinfo.id)) + end + apply_movements(packs_cur, packs_add) refresh_changes() end diff --git a/res/layouts/templates/pack.xml b/res/layouts/templates/pack.xml index 5eb2f74c..55a52d61 100644 --- a/res/layouts/templates/pack.xml +++ b/res/layouts/templates/pack.xml @@ -1,4 +1,4 @@ - + diff --git a/res/scripts/stdmin.lua b/res/scripts/stdmin.lua index 5da1b347..c993af6a 100644 --- a/res/scripts/stdmin.lua +++ b/res/scripts/stdmin.lua @@ -113,6 +113,18 @@ function table.shuffle(t) return t end +function table.merge(t1, t2) + for i, v in pairs(t2) do + if type(i) == "number" then + t1[#t1 + 1] = v + elseif t1[i] == nil then + t1[i] = v + end + end + + return t1 +end + ---------------------------------------------- local pattern_escape_replacements = { From fde61647bd1010d77ed4206e0b669a41113f0ba4 Mon Sep 17 00:00:00 2001 From: Xertis Date: Sun, 19 Jan 2025 12:59:26 +0300 Subject: [PATCH 07/12] minor update --- res/layouts/pages/content.xml.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index 29b8ff68..5a8f9342 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -36,7 +36,7 @@ end function reposition_func(pack) local INTERVAL = 2 - local STEP = -1 + local STEP = 1 local SIZE = 80 local tbl = packs_excluded @@ -45,20 +45,20 @@ function reposition_func(pack) end local indx = table.index(tbl, pack) - 1 - local pos = {0, (SIZE + INTERVAL) * indx - STEP} + local pos = {0, (SIZE + INTERVAL) * indx + STEP} return pos end -function refresh_search() +function refresh_search() local search_text = document.search_textbox.text:lower() local new_included = table.copy(packs_included) local new_excluded = table.copy(packs_excluded) - local function score(package_name) - if package_name:lower():find(search_text) then + local function score(pack_name) + if pack_name:lower():find(search_text) then return 1 end return 0 From 3c0b64bc52badcaddf33f372ed3d50b0c9a660ed Mon Sep 17 00:00:00 2001 From: Xertis Date: Sun, 19 Jan 2025 13:42:16 +0300 Subject: [PATCH 08/12] minor update --- res/layouts/pages/content.xml.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index 5a8f9342..d588bd8e 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -47,7 +47,7 @@ function reposition_func(pack) local indx = table.index(tbl, pack) - 1 local pos = {0, (SIZE + INTERVAL) * indx + STEP} - return pos + return pos[1], pos[2] end @@ -242,7 +242,7 @@ function refresh() packinfo.index = i callback = not table.has(base_packs, id) and string.format('move_pack("%s")', id) or nil packinfo.error = check_dependencies(packinfo) - place_pack(packs_cur, packinfo, callback, string.format('reposition_func("%s")[1],reposition_func("%s")[2]', packinfo.id, packinfo.id)) + place_pack(packs_cur, packinfo, callback, string.format('reposition_func("%s")', packinfo.id)) end for i,id in ipairs(packs_available) do @@ -250,7 +250,7 @@ function refresh() packinfo.index = i callback = string.format('move_pack("%s")', id) packinfo.error = check_dependencies(packinfo) - place_pack(packs_add, packinfo, callback, string.format('reposition_func("%s")[1],reposition_func("%s")[2]', packinfo.id, packinfo.id)) + place_pack(packs_add, packinfo, callback, string.format('reposition_func("%s")', packinfo.id)) end apply_movements(packs_cur, packs_add) From d2ceb991b9c776f493a720b7936e39477df7f570 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Sat, 25 Jan 2025 22:09:09 +0300 Subject: [PATCH 09/12] bug fix --- res/layouts/templates/pack.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/layouts/templates/pack.xml b/res/layouts/templates/pack.xml index 55a52d61..3b24aa96 100644 --- a/res/layouts/templates/pack.xml +++ b/res/layouts/templates/pack.xml @@ -1,4 +1,4 @@ - + From 2c29e77f82b6484885b918d795d59c2f76993982 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Tue, 28 Jan 2025 20:23:41 +0300 Subject: [PATCH 10/12] refresh bug fix --- res/layouts/pages/content.xml.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index d588bd8e..50fbcc65 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -34,17 +34,22 @@ function apply() end end -function reposition_func(pack) +function reposition_func(_pack) local INTERVAL = 2 local STEP = 1 local SIZE = 80 - local tbl = packs_excluded - if table.has(packs_included, pack) then + local tbl = nil + if table.has(packs_included, _pack) then tbl = packs_included + elseif table.has(packs_excluded, _pack) then + tbl = packs_excluded + else + tbl = packs_excluded + table.insert(packs_excluded, pack.get_info(_pack)) end - local indx = table.index(tbl, pack) - 1 + local indx = table.index(tbl, _pack) - 1 local pos = {0, (SIZE + INTERVAL) * indx + STEP} return pos[1], pos[2] From e205182da6c9572f7f5d6c27eff8e840dcc8fe2e Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Tue, 28 Jan 2025 20:39:00 +0300 Subject: [PATCH 11/12] bug fix refresh bug fix --- res/layouts/pages/content.xml.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index 50fbcc65..6e013902 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -46,7 +46,9 @@ function reposition_func(_pack) tbl = packs_excluded else tbl = packs_excluded - table.insert(packs_excluded, pack.get_info(_pack)) + local packinfo = pack.get_info(_pack) + packinfo[packinfo.id] = {packinfo.id, packinfo.title} + table.insert(packs_excluded, packinfo.id) end local indx = table.index(tbl, _pack) - 1 From efdd0226f60a2bc3fdf1aef3a844c6cd8ddc4871 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Tue, 28 Jan 2025 23:59:24 +0300 Subject: [PATCH 12/12] improved menu stability --- res/layouts/pages/content.xml.lua | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index 6e013902..3f1903f3 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -196,15 +196,30 @@ function check_dependencies(packinfo) return end +function check_deleted() + for i = 1, math.max(#packs_included, #packs_excluded) do + local pack = packs_included[i] + if pack and not table.has(packs_all, pack) then + table.remove(packs_included, i) + table.insert(rem_packs, pack) + end + + pack = packs_excluded[i] + if pack and not table.has(packs_all, pack) then + table.remove(packs_excluded, i) + table.insert(rem_packs, pack) + end + end +end + function refresh() packs_installed = pack.get_installed() packs_available = pack.get_available() base_packs = pack.get_base_packs() packs_all = {unpack(packs_installed)} required = {} - for i,k in ipairs(packs_available) do - table.insert(packs_all, k) - end + + table.merge(packs_all, packs_available) local packs_cur = document.packs_cur local packs_add = document.packs_add @@ -260,6 +275,7 @@ function refresh() place_pack(packs_add, packinfo, callback, string.format('reposition_func("%s")', packinfo.id)) end + check_deleted() apply_movements(packs_cur, packs_add) refresh_changes() end