diff --git a/api.lua b/api.lua index 3513177..1008843 100644 --- a/api.lua +++ b/api.lua @@ -57,38 +57,3 @@ function microexpansion.register_item(itemstring, def) register_recipe(BASENAME..":"..itemstring, def.recipe) end end - --- [function] register cell -function microexpansion.register_cell(itemstring, def) - if not def.inventory_image then - def.inventory_image = itemstring - end - - -- register craftitem - minetest.register_craftitem(BASENAME..":"..itemstring, { - description = def.description, - inventory_image = BASENAME.."_"..def.inventory_image..".png", - groups = {microexpansion_cell = 1}, - microexpansion = { - drive = { - capacity = def.capacity or 5000, - }, - }, - }) - - -- if recipe, register recipe - if def.recipe then - -- if recipe, register recipe - if def.recipe then - register_recipe(BASENAME..":"..itemstring, def.recipe) - end - end -end - --- [function] Get cell size -function microexpansion.get_cell_size(name) - local item = minetest.registered_craftitems[name] - if item then - return item.microexpansion.drive.capacity - end -end diff --git a/modules/storage/api.lua b/modules/storage/api.lua new file mode 100644 index 0000000..b158583 --- /dev/null +++ b/modules/storage/api.lua @@ -0,0 +1,48 @@ +-- storage/api.lua + +local BASENAME = "microexpansion" + +-- [function] register cell +function microexpansion.register_cell(itemstring, def) + if not def.inventory_image then + def.inventory_image = itemstring + end + + -- register craftitem + minetest.register_craftitem(BASENAME..":"..itemstring, { + description = def.description, + inventory_image = BASENAME.."_"..def.inventory_image..".png", + groups = {microexpansion_cell = 1}, + microexpansion = { + drive = { + capacity = def.capacity or 5000, + }, + }, + }) + + -- if recipe, register recipe + if def.recipe then + -- if recipe, register recipe + if def.recipe then + register_recipe(BASENAME..":"..itemstring, def.recipe) + end + end +end + +-- [function] Get cell size +function microexpansion.get_cell_size(name) + local item = minetest.registered_craftitems[name] + if item then + return item.microexpansion.drive.capacity + end +end + +-- [function] Calculate max stacks +function microexpansion.int_to_stacks(int) + return math.floor(int / 99) +end + +-- [function] Calculate number of pages +function microexpansion.int_to_pagenum(int) + return math.floor(microexpansion.int_to_stacks(int) / 32) +end diff --git a/modules/storage/init.lua b/modules/storage/init.lua index c43490b..58f5052 100644 --- a/modules/storage/init.lua +++ b/modules/storage/init.lua @@ -2,6 +2,9 @@ local module_path = microexpansion.get_module_path("storage") +-- Load API +dofile(module_path.."/api.lua") + -- Load storage devices dofile(module_path.."/storage.lua") diff --git a/modules/storage/machines.lua b/modules/storage/machines.lua index 1ce3646..34a9af1 100644 --- a/modules/storage/machines.lua +++ b/modules/storage/machines.lua @@ -1,5 +1,7 @@ -- microexpansion/machines.lua +local me = microexpansion + -- [me chest] Get formspec local function chest_formspec(start_id, listname, page_max, query) local list @@ -14,24 +16,28 @@ local function chest_formspec(start_id, listname, page_max, query) page_number = "label[6.05,4.5;" .. math.floor((start_id / 32)) + 1 .. "/" .. page_max .."]" end - return "size[9,10]" .. - microexpansion.gui_bg .. - microexpansion.gui_slots .. - list .. - "list[current_name;cells;8,1.8;1,1;]" .. - "list[current_player;main;0,5.5;8,1;]" .. - "list[current_player;main;0,6.73;8,3;8]" .. - "button[5.4,4.35;0.8,0.9;prev;<]" .. - "button[7.25,4.35;0.8,0.9;next;>]" .. - "field[0.3,4.6;2.2,1;filter;;" .. query .. "]" .. - "button[2.1,4.5;0.8,0.5;search;?]" .. - "button[2.75,4.5;0.8,0.5;clear;X]" .. - "tooltip[search;Search]" .. - "tooltip[clear;Reset]" .. - "listring[current_name;main]" .. - "listring[current_player;main]" .. - "field_close_on_enter[filter;false]" .. - page_number + return [[ + size[9,10] + ]].. + microexpansion.gui_bg .. + microexpansion.gui_slots .. + list .. + [[ + list[current_name;cells;8,1.8;1,1;] + list[current_player;main;0,5.5;8,1;] + list[current_player;main;0,6.73;8,3;8] + button[5.4,4.35;0.8,0.9;prev;<] + button[7.25,4.35;0.8,0.9;next;>] + field[0.3,4.6;2.2,1;filter;;]]..query..[[] + button[2.1,4.5;0.8,0.5;search;?] + button[2.75,4.5;0.8,0.5;clear;X] + tooltip[search;Search] + tooltip[clear;Reset] + listring[current_name;main] + listring[current_player;main] + field_close_on_enter[filter;false] + ]].. + page_number end -- [me chest] Register node @@ -85,9 +91,9 @@ minetest.register_node("microexpansion:chest", { local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local items = minetest.deserialize(stack:get_meta():get_string("items")) - local size = microexpansion.get_cell_size(stack:get_name()) - local page_max = math.floor(size / 32) + 1 - inv:set_size("main", size) + local size = me.get_cell_size(stack:get_name()) + local page_max = me.int_to_pagenum(size) + 1 + inv:set_size("main", me.int_to_stacks(size)) if items then inv:set_list("main", items) end