From ec328d8270796313e039d4f206d5791577e86475 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Wed, 2 Oct 2013 22:20:54 -0400 Subject: [PATCH] Change craft guide input slots to buttons --- callbacks.lua | 95 ++++++++++++++++++-------------------- internal.lua | 105 ++---------------------------------------- register.lua | 59 ++++++++++++++++++++---- textures/ui_group.png | Bin 0 -> 29697 bytes 4 files changed, 100 insertions(+), 159 deletions(-) create mode 100644 textures/ui_group.png diff --git a/callbacks.lua b/callbacks.lua index 32a096c..4f9913c 100644 --- a/callbacks.lua +++ b/callbacks.lua @@ -3,45 +3,46 @@ minetest.register_on_joinplayer(function(player) local player_name = player:get_player_name() unified_inventory.players[player_name] = {} unified_inventory.current_index[player_name] = 1 - unified_inventory.filtered_items_list[player_name] = unified_inventory.items_list + unified_inventory.filtered_items_list[player_name] = + unified_inventory.items_list unified_inventory.activefilter[player_name] = "" unified_inventory.apply_filter(player, "") unified_inventory.alternate[player_name] = 1 unified_inventory.current_item[player_name] = nil - unified_inventory.set_inventory_formspec(player, unified_inventory.default) + unified_inventory.set_inventory_formspec(player, + unified_inventory.default) -- Crafting guide inventories - local inv = minetest.create_detached_inventory(player:get_player_name().."craftrecipe", { + local inv = minetest.create_detached_inventory(player_name.."craftrecipe", { allow_put = function(inv, listname, index, stack, player) return 0 end, allow_take = function(inv, listname, index, stack, player) - if unified_inventory.is_creative(player:get_player_name()) then - return stack:get_count() - else - return 0 - end + return 0 end, - allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + allow_move = function(inv, from_list, from_index, to_list, + to_index, count, player) return 0 end, }) inv:set_size("output", 1) - inv:set_size("build", 3 * 3) -- Refill slot local refill = minetest.create_detached_inventory(player_name.."refill", { allow_put = function(inv, listname, index, stack, player) - if unified_inventory.is_creative(player:get_player_name()) then + local player_name = player:get_player_name() + if unified_inventory.is_creative(player_name) then return stack:get_count() else return 0 end end, on_put = function(inv, listname, index, stack, player) + local player_name = player:get_player_name() stack:set_count(stack:get_stack_max()) inv:set_stack(listname, index, stack) - minetest.sound_play("electricity", {to_player=player_name, gain = 1.0}) + minetest.sound_play("electricity", + {to_player=player_name, gain = 1.0}) end, }) refill:set_size("main", 1) @@ -60,9 +61,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- Inventory page controls - local start = math.floor(unified_inventory.current_index[player_name] / 80 + 1) + local start = math.floor( + unified_inventory.current_index[player_name] / 80 + 1) local start_i = start - local pagemax = math.floor((unified_inventory.filtered_items_list_size[player_name] - 1) / (80) + 1) + local pagemax = math.floor( + (#unified_inventory.filtered_items_list[player_name] - 1) + / (80) + 1) if fields.start_list then minetest.sound_play("paperflip1", @@ -106,44 +110,37 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) unified_inventory.current_page[player_name]) end - -- Item list buttons - local list_index = unified_inventory.current_index[player_name] - local page = unified_inventory.current_page[player_name] - for i = 0, 80 do - local button = "item_button"..list_index - if fields[button] then - minetest.sound_play("click", - {to_player=player_name, gain = 0.1}) - if not unified_inventory.is_creative(player_name) then - unified_inventory.set_inventory_formspec(player, "craftguide") - page = "craftguide" - end - if page == "craftguide" then - unified_inventory.current_item[player_name] = - unified_inventory.filtered_items_list - [player_name][list_index] - unified_inventory.alternate[player_name] = 1 - unified_inventory.update_recipe(player, - unified_inventory.filtered_items_list - [player_name][list_index], 1) - unified_inventory.set_inventory_formspec(player, - unified_inventory.current_page[player_name]) - else - if unified_inventory.is_creative(player_name) then - local inv = player:get_inventory() - dst_stack = {} - dst_stack.name = unified_inventory.filtered_items_list - [player_name][list_index] - dst_stack.count = 99 - if inv:room_for_item("main", dst_stack) then - inv:add_item("main", dst_stack) - end + local clicked_item = nil + for name, value in pairs(fields) do + if string.sub(name, 1, 12) == "item_button_" then + clicked_item = string.sub(name, 13) + break + end + end + if clicked_item then + minetest.sound_play("click", + {to_player=player_name, gain = 0.1}) + local page = unified_inventory.current_page[player_name] + if not unified_inventory.is_creative(player_name) then + page = "craftguide" + end + if page == "craftguide" then + unified_inventory.current_item[player_name] = clicked_item + unified_inventory.alternate[player_name] = 1 + unified_inventory.set_inventory_formspec(player, + "craftguide") + else + if unified_inventory.is_creative(player_name) then + local inv = player:get_inventory() + local stack = ItemStack(clicked_item) + stack:set_count(99) + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) end end end - list_index = list_index + 1 end - + if fields.searchbutton then unified_inventory.apply_filter(player, fields.searchbox) unified_inventory.set_inventory_formspec(player, @@ -170,8 +167,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) alternate = 1 end unified_inventory.alternate[player_name] = alternate - unified_inventory.update_recipe(player, - unified_inventory.current_item[player_name], alternate) unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) end diff --git a/internal.lua b/internal.lua index 6d22530..cbd134f 100644 --- a/internal.lua +++ b/internal.lua @@ -47,8 +47,9 @@ function unified_inventory.get_formspec(player, page) -- Items list local list_index = unified_inventory.current_index[player_name] local page = math.floor(list_index / (80) + 1) - local pagemax = math.floor((unified_inventory.filtered_items_list_size[player_name] - 1) / (80) + 1) - local image = nil + local pagemax = math.floor( + (#unified_inventory.filtered_items_list[player_name] - 1) + / (80) + 1) local item = {} for y = 0, 9 do for x = 0, 7 do @@ -57,8 +58,8 @@ function unified_inventory.get_formspec(player, page) formspec = formspec.."item_image_button[" ..(8.2 + x * 0.7).."," ..(1 + y * 0.7)..";.81,.81;" - ..name..";item_button" - ..list_index..";]" + ..name..";item_button_" + ..name..";]" list_index = list_index + 1 end end @@ -112,102 +113,6 @@ function unified_inventory.apply_filter(player, filter) unified_inventory.current_page[player_name]) end - --- update_recipe -function unified_inventory.update_recipe(player, stack_name, alternate) - local inv = minetest.get_inventory({ - type = "detached", - name = player:get_player_name().."craftrecipe" - }) - for i = 0, inv:get_size("build") do - inv:set_stack("build", i, nil) - end - inv:set_stack("output", 1, nil) - alternate = tonumber(alternate) or 1 - local crafts = unified_inventory.crafts_table[stack_name] - --print(dump(crafts)) - if next(crafts) == nil then -- No craft recipes - return - end - if alternate < 1 or alternate > #crafts then - alternate = 1 - end - local craft = crafts[alternate] - inv:set_stack("output", 1, craft.output) - local items = craft.items - - if craft.type == "cooking" or - craft.type == "fuel" or - craft.type == "grinding" or - craft.type == "extracting" or - craft.type == "compressing" then - def = unified_inventory.find_item_def(craft["items"][1]) - if def then - inv:set_stack("build", 1, def) - end - return - end - if craft.width == 0 then - for i = 1, 3 do - if craft.items[i] then - def = unified_inventory.find_item_def(craft.items[i]) - if def then - inv:set_stack("build", i, def) - end - end - end - end - if craft.width == 1 then - local build_table={1, 4, 7} - for i = 1, 3 do - if craft.items[i] then - def = unified_inventory.find_item_def(craft.items[i]) - if def then - inv:set_stack("build", build_table[i], def) - end - end - end - end - if craft.width == 2 then - local build_table = {1, 2, 4, 5, 7, 8} - for i=1, 6 do - if craft.items[i] then - def = unified_inventory.find_item_def(craft.items[i]) - if def then - inv:set_stack("build", build_table[i], def) - end - end - end - end - if craft.width == 3 then - for i=1, 9 do - if craft.items[i] then - def = unified_inventory.find_item_def(craft.items[i]) - if def then - inv:set_stack("build", i, def) - end - end - end - end -end - -function unified_inventory.find_item_def(def) - if type(def) ~= "string" then - return nil - end - if string.find(def, "group:") then - def = string.gsub(def, "group:", "") - def = string.gsub(def, "\"", "") - if minetest.registered_nodes["default:"..def] then - return "default:"..def - end - local items = unified_inventory.items_in_group(def) - return items[1] - else - return def - end -end - function unified_inventory.items_in_group(groups) local items = {} for name, item in pairs(minetest.registered_items) do diff --git a/register.lua b/register.lua index ad85537..9ca1f77 100644 --- a/register.lua +++ b/register.lua @@ -1,6 +1,6 @@ minetest.register_privilege("creative", { - description="Can use the creative inventory", + description = "Can use the creative inventory", give_to_singleplayer = false, }) @@ -137,27 +137,27 @@ unified_inventory.register_page("craftguide", { local player_name = player:get_player_name() formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_craftguide_form.png]" formspec = formspec.."label[0,0;Crafting Guide]" - formspec = formspec.."list[detached:"..player_name.."craftrecipe;build;2,1;3,3;]" formspec = formspec.."list[detached:"..player_name.."craftrecipe;output;6,1;1,1;]" formspec = formspec.."label[2,0.5;Input:]" formspec = formspec.."label[6,0.5;Output:]" formspec = formspec.."label[6,2.6;Method:]" local item_name = unified_inventory.current_item[player_name] + local craft = nil if item_name then formspec = formspec.."label[2,0;"..item_name.."]" local alternates = 0 local alternate = unified_inventory.alternate[player_name] local crafts = unified_inventory.crafts_table[item_name] - if crafts ~= nil and #crafts > 0 then alternates = #crafts - local craft = crafts[alternate] + craft = crafts[alternate] local method = craft.type - if craft.type == "shapeless" then - method="shapeless crafting" - end - if craft.type == "alloy" then - method="alloy cooking" + if craft.type == "normal" then + method = "crafting" + elseif craft.type == "shapeless" then + method = "shapeless crafting" + elseif craft.type == "alloy" then + method = "alloy cooking" end formspec = formspec.."label[6,3;"..method.."]" end @@ -168,6 +168,47 @@ unified_inventory.register_page("craftguide", { formspec = formspec.."button[0,3.15;2,1;alternate;Alternate]" end end + + local craftinv = minetest.get_inventory({ + type = "detached", + name = player_name.."craftrecipe" + }) + + if not craft then + craftinv:set_stack("output", 1, nil) + return formspec + end + + craftinv:set_stack("output", 1, craft.output) + + local width = craft.width + if width == 0 then + -- Shapeless recipe + width = 3 + end + + local i = 1 + for y = 1, 3 do + for x = 1, width do + local item = craft.items[i] + if item then + if string.sub(item, 1, 6) == "group:" then + local group = string.sub(item, 7) + formspec = formspec.."image_button[" + ..(1.05 + x)..","..(0.05 + y)..";0.9,0.9;" + .."ui_group.png;;" + ..minetest.formspec_escape(group).."]" + else + formspec = formspec.."item_image_button[" + ..(1.05 + x)..","..(0.05 + y)..";0.9,0.9;" + ..minetest.formspec_escape(item)..";" + .."item_button_" + ..minetest.formspec_escape(item)..";]" + end + end + i = i + 1 + end + end return formspec end, }) diff --git a/textures/ui_group.png b/textures/ui_group.png new file mode 100644 index 0000000000000000000000000000000000000000..8de5a7755c16588b688c90fe7a1df7dd6547bed2 GIT binary patch literal 29697 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 z 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 Un=G~BDgXcg07*qoM6N<$f@Jy7GXMYp literal 0 HcmV?d00001