diff --git a/bags.lua b/bags.lua index 8588d41..30e7f7f 100644 --- a/bags.lua +++ b/bags.lua @@ -8,14 +8,14 @@ License: GPLv3 local S = minetest.get_translator("unified_inventory") local F = minetest.formspec_escape local ui = unified_inventory -local bags_inv_bg_prefix = "image[0.3,1.5;"..(ui.imgscale*8).."," +local bags_inv_bg = "image[0.3,1.5;"..(ui.imgscale*8)..",%f;%s]" ui.register_page("bags", { get_formspec = function(player) local player_name = player:get_player_name() return { formspec = table.concat({ ui.style_full.standard_inv_bg, - bags_inv_bg_prefix..ui.imgscale..";ui_bags_header.png]", + string.format(bags_inv_bg, ui.imgscale, "ui_bags_header.png"), "label["..ui.style_full.form_header_x..","..ui.style_full.form_header_y..";" .. F(S("Bags")) .. "]", "button[0.6125,2.75;1.875,0.75;bag1;" .. F(S("Bag @1", 1)) .. "]", "button[3.1125,2.75;1.875,0.75;bag2;" .. F(S("Bag @1", 2)) .. "]", @@ -49,30 +49,34 @@ for bag_i = 1, 4 do get_formspec = function(player) local stack = get_player_bag_stack(player, bag_i) local image = stack:get_definition().inventory_image - local fs = { + local formspec = { ui.style_full.standard_inv_bg, "image[9.2,0.4;1,1;" .. image .. "]", "label[0.3,0.65;" .. F(S("Bag @1", bag_i)) .. "]", "listcolors[#00000000;#00000000]", "listring[current_player;main]", } + local n = 6 + local slots = stack:get_definition().groups.bagslots if slots == 8 then - fs[#fs + 1] = bags_inv_bg_prefix..ui.imgscale..";ui_bags_inv_small.png]" + formspec[n] = string.format(bags_inv_bg, ui.imgscale, "ui_bags_inv_small.png") elseif slots == 16 then - fs[#fs + 1] = bags_inv_bg_prefix..(ui.imgscale*2)..";ui_bags_inv_medium.png]" + formspec[n] = string.format(bags_inv_bg, ui.imgscale*2, "ui_bags_inv_medium.png") elseif slots == 24 then - fs[#fs + 1] = bags_inv_bg_prefix..(ui.imgscale*3)..";ui_bags_inv_large.png]" + formspec[n] = string.format(bags_inv_bg, ui.imgscale*3, "ui_bags_inv_large.png") end - fs[#fs + 1] = "list[current_player;bag" .. bag_i .. "contents;0.45,1.65;8,3;]" - fs[#fs + 1] = "listring[current_name;bag" .. bag_i .. "contents]" + formspec[n+1] = "list[current_player;bag" .. bag_i .. "contents;0.45,1.65;8,3;]" + formspec[n+2] = "listring[current_name;bag" .. bag_i .. "contents]" + n = n + 3 local player_name = player:get_player_name() -- For if statement. if ui.trash_enabled or ui.is_creative(player_name) or minetest.get_player_privs(player_name).give then - fs[#fs + 1] = "image[7.8,0.25;"..ui.imgscale..","..ui.imgscale..";ui_trash_slot.png]" + formspec[n] = "image[7.8,0.25;"..ui.imgscale..","..ui.imgscale..";ui_trash_slot.png]" .. "list[detached:trash;main;7.95,0.25;1,1;]" + n = n + 1 end local inv = player:get_inventory() for i = 1, 4 do @@ -89,11 +93,12 @@ for bag_i = 1, 4 do end local img = def.inventory_image local label = F(S("Bag @1", i)) .. "\n" .. used .. "/" .. size - fs[#fs + 1] = string.format("image_button[%f,0.4;1,1;%s;bag%i;%s]", + formspec[n] = string.format("image_button[%f,0.4;1,1;%s;bag%i;%s]", (i + 1.35)*1.25, img, i, label) + n = n + 1 end end - return { formspec = table.concat(fs) } + return { formspec = table.concat(formspec) } end, }) end diff --git a/internal.lua b/internal.lua index 3314a16..9ce5b07 100644 --- a/internal.lua +++ b/internal.lua @@ -68,7 +68,9 @@ function ui.get_formspec(player, page) if ui.is_creative(player_name) and page == "craft" then -- add the "Refill" slot. - formspec[n] = "image["..(ui_peruser.craft_x-2.5)..","..(ui_peruser.craft_y+2.5)..";"..ui.imgscale..","..ui.imgscale..";ui_single_slot.png]" + formspec[n] = string.format("image[%f,%f;%f,%f;ui_single_slot.png]", + ui_peruser.craft_x - 2.5, ui_peruser.craft_y + 2.5, + ui.imgscale, ui.imgscale) n = n+1 end @@ -100,21 +102,20 @@ function ui.get_formspec(player, page) if def.type == "image" then if (def.condition == nil or def.condition(player) == true) then - formspec[n] = "image_button[" - formspec[n+1] = ( ui_peruser.main_button_x + ui_peruser.btn_spc * (i - 1) - button_col * ui_peruser.btn_spc * 4) - formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * ui_peruser.btn_spc)..";"..ui_peruser.btn_size..","..ui_peruser.btn_size..";" - formspec[n+3] = F(def.image)..";" - formspec[n+4] = F(def.name)..";]" - formspec[n+5] = "tooltip["..F(def.name) - formspec[n+6] = ";"..(def.tooltip or "").."]" - n = n+7 + formspec[n] = string.format("image_button[%f,%f;%f,%f;%s;%s;]", + ui_peruser.main_button_x + ui_peruser.btn_spc * (i - 1) - button_col * ui_peruser.btn_spc * 4, + ui_peruser.main_button_y + button_row * ui_peruser.btn_spc, + ui_peruser.btn_size,ui_peruser.btn_size, + F(def.image), + F(def.name)) + formspec[n+1] = "tooltip["..F(def.name)..";"..(def.tooltip or "").."]" + n = n+2 else - formspec[n] = "image[" - formspec[n+1] = ( ui_peruser.main_button_x + ui_peruser.btn_spc * (i - 1) - button_col * ui_peruser.btn_spc * 4) - formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * ui_peruser.btn_spc)..";"..ui_peruser.btn_size..","..ui_peruser.btn_size..";" - formspec[n+3] = F(def.image).."^[colorize:#808080:alpha]" - n = n+4 - + formspec[n] = string.format("image[%f,%f;%f,%f;%s^[colorize:#808080:alpha]", + ui_peruser.main_button_x + ui_peruser.btn_spc * (i - 1) - button_col * ui_peruser.btn_spc * 4, + ui_peruser.main_button_y + button_row * ui_peruser.btn_spc, + ui_peruser.btn_size,ui_peruser.btn_size,def.image) + n = n+1 end end end @@ -133,23 +134,21 @@ function ui.get_formspec(player, page) -- Search box formspec[n] = "field_close_on_enter[searchbox;false]" - formspec[n+1] = "field["..ui_peruser.page_buttons_x..",".. - ui_peruser.page_buttons_y..";".. - (ui_peruser.searchwidth - 0.1)..",".. - ui_peruser.btn_size..";searchbox;;".. - F(ui.current_searchbox[player_name]) .. "]" - formspec[n+2] = "image_button["..(ui_peruser.page_buttons_x + ui_peruser.searchwidth)..",".. - ui_peruser.page_buttons_y..";".. - ui_peruser.btn_size..","..ui_peruser.btn_size.. - ";ui_search_icon.png;searchbutton;]".. - "tooltip[searchbutton;" ..F(S("Search")) .. "]" - formspec[n+3] = "image_button["..(ui_peruser.page_buttons_x + ui_peruser.searchwidth + ui_peruser.btn_spc)..",".. - ui_peruser.page_buttons_y..";".. - ui_peruser.btn_size..","..ui_peruser.btn_size.. - ";ui_reset_icon.png;searchresetbutton;]".. - "tooltip[searchresetbutton;" ..F(S("Reset search and display everything")) .. "]" + formspec[n+1] = string.format("field[%f,%f;%f,%f;searchbox;;%s]", + ui_peruser.page_buttons_x, ui_peruser.page_buttons_y, + ui_peruser.searchwidth - 0.1, ui_peruser.btn_size, + F(ui.current_searchbox[player_name])) + formspec[n+2] = string.format("image_button[%f,%f;%f,%f;ui_search_icon.png;searchbutton;]", + ui_peruser.page_buttons_x + ui_peruser.searchwidth, ui_peruser.page_buttons_y, + ui_peruser.btn_size,ui_peruser.btn_size) + formspec[n+3] = "tooltip[searchbutton;" ..F(S("Search")) .. "]" + formspec[n+4] = string.format("image_button[%f,%f;%f,%f;ui_reset_icon.png;searchresetbutton;]", + ui_peruser.page_buttons_x + ui_peruser.searchwidth + ui_peruser.btn_spc, + ui_peruser.page_buttons_y, + ui_peruser.btn_size, ui_peruser.btn_size) + formspec[n+5] = "tooltip[searchresetbutton;"..F(S("Reset search and display everything")).."]" - n = n + 4 + n = n + 6 -- Controls to flip items pages @@ -169,15 +168,14 @@ function ui.get_formspec(player, page) local bn = 0 for _, b in pairs(btnlist) do - formspec[n] = "image_button[".. - (ui_peruser.page_buttons_x + ui_peruser.btn_spc*bn)..",".. - (ui_peruser.page_buttons_y + ui_peruser.btn_spc)..";".. - ui_peruser.btn_size..",".. - ui_peruser.btn_size..";".. - b[1]..";"..b[2]..";]".. - "tooltip["..b[2]..";"..F(S(b[3])).."]" + formspec[n] = string.format("image_button[%f,%f;%f,%f;%s;%s;]", + ui_peruser.page_buttons_x + ui_peruser.btn_spc*bn, + ui_peruser.page_buttons_y + ui_peruser.btn_spc, + ui_peruser.btn_size, ui_peruser.btn_size, + b[1],b[2]) + formspec[n+1] = "tooltip["..b[2]..";"..F(S(b[3])).."]" bn = bn + 1 - n = n + 1 + n = n + 2 end local no_matches = S("No matching items") @@ -230,14 +228,17 @@ function ui.get_formspec(player, page) end end end - formspec[n] = "label["..ui_peruser.page_x..","..ui_peruser.form_header_y..";"..F(S("Page")) .. ": " - .. S("@1 of @2",page2,pagemax).."]" + formspec[n] = string.format("label[%f,%f;%s: %s]", + ui_peruser.page_x, ui_peruser.form_header_y, + F(S("Page")), S("@1 of @2",page2,pagemax)) end n= n+1 if ui.activefilter[player_name] ~= "" then - formspec[n] = "label["..ui_peruser.page_x..","..(ui_peruser.page_y - 0.65)..";" .. F(S("Filter")) .. ":]" - formspec[n+1] = "label["..ui_peruser.page_x..","..(ui_peruser.page_y - 0.25)..";"..F(ui.activefilter[player_name]).."]" + formspec[n] = string.format("label[%f,%f;%s:]", + ui_peruser.page_x, ui_peruser.page_y - 0.65, F(S("Filter"))) + formspec[n+1] = string.format("label[%f,%f;%s]", + ui_peruser.page_x, ui_peruser.page_y - 0.25, F(ui.activefilter[player_name])) end return table.concat(formspec, "") end diff --git a/register.lua b/register.lua index 4533f6e..de22717 100644 --- a/register.lua +++ b/register.lua @@ -173,24 +173,32 @@ ui.register_page("craft", { local craftresultx = craftx + 5 local player_name = player:get_player_name() - local formspec = "image["..craftx..","..crafty..";"..(ui.imgscale*6)..","..(ui.imgscale*3)..";ui_crafting_form.png]" - formspec = formspec..perplayer_formspec.standard_inv_bg - formspec = formspec.."label["..formheaderx..","..formheadery..";" ..F(S("Crafting")).."]" - formspec = formspec.."listcolors[#00000000;#00000000]" - formspec = formspec.."list[current_player;craftpreview;"..(craftresultx+0.15)..","..(crafty+0.15)..";1,1;]" - formspec = formspec.."list[current_player;craft;"..(craftx+0.15)..","..(crafty+0.15)..";3,3;]" + local formspec = { + string.format("image[%f,%f;%f,%f;ui_crafting_form.png]", craftx, crafty, ui.imgscale*6, ui.imgscale*3), + perplayer_formspec.standard_inv_bg, + "label["..formheaderx..","..formheadery..";" ..F(S("Crafting")).."]", + "listcolors[#00000000;#00000000]", + "list[current_player;craftpreview;"..(craftresultx+0.15)..","..(crafty+0.15)..";1,1;]", + "list[current_player;craft;"..(craftx+0.15)..","..(crafty+0.15)..";3,3;]", + "listring[current_name;craft]", + "listring[current_player;main]" + } + local n=#formspec+1 + if ui.trash_enabled or ui.is_creative(player_name) or minetest.get_player_privs(player_name).give then - formspec = formspec.."label["..(craftx+6.45)..","..(crafty + 2.4)..";" .. F(S("Trash:")) .. "]" - formspec = formspec.."image["..(craftx+6.25)..","..(crafty + 2.5)..";"..ui.imgscale..","..ui.imgscale..";ui_trash_slot.png]" - formspec = formspec.."list[detached:trash;main;"..(craftx+6.4)..","..(crafty + 2.65)..";1,1;]" + formspec[n] = string.format("label[%f,%f;%s]", craftx + 6.45, crafty + 2.4, F(S("Trash:"))) + formspec[n+1] = string.format("image[%f,%f;%f,%f;ui_trash_slot.png]", + craftx+6.25, crafty + 2.5, ui.imgscale, ui.imgscale) + formspec[n+2] = string.format("list[detached:trash;main;%f,%f;1,1;]", craftx + 6.4, crafty + 2.65) + n=n+3 end - formspec = formspec.."listring[current_name;craft]" - formspec = formspec.."listring[current_player;main]" + if ui.is_creative(player_name) then - formspec = formspec.."label["..(craftx-2.3)..","..(crafty + 2.4)..";" .. F(S("Refill:")) .. "]" - formspec = formspec.."list[detached:"..F(player_name).."refill;main;"..(craftx-2.35)..","..(crafty + 2.65)..";1,1;]" + formspec[n+1] = string.format("label[%f,%f;%s]", craftx - 2.3, crafty + 2.4,F(S("Refill:"))) + formspec[n+2] = string.format("list[detached:%s;refill;main;%f,%f;1,1;]", + F(player_name), craftx - 2.35, crafty + 2.65) end - return {formspec=formspec} + return {formspec=table.concat(formspec)} end, }) @@ -273,16 +281,19 @@ ui.register_page("craftguide", { local player_name = player:get_player_name() local player_privs = minetest.get_player_privs(player_name) - local fs = { + local formspec = { perplayer_formspec.standard_inv_bg, "label["..formheaderx..","..formheadery..";" .. F(S("Crafting Guide")) .. "]", "listcolors[#00000000;#00000000]" } + local item_name = ui.current_item[player_name] if not item_name then - return { formspec = table.concat(fs) } + return { formspec = table.concat(formspec) } end + local n = 4 + local item_name_shown if minetest.registered_items[item_name] and minetest.registered_items[item_name].description then @@ -304,9 +315,10 @@ ui.register_page("craftguide", { end local has_give = player_privs.give or ui.is_creative(player_name) - fs[#fs + 1] = "image["..craftarrowx..","..crafty..";1.25,1.25;ui_crafting_arrow.png]" - fs[#fs + 1] = string.format("textarea[%f,%f;10,1;;%s: %s;]", + formspec[n] = "image["..craftarrowx..","..crafty..";1.25,1.25;ui_crafting_arrow.png]" + formspec[n+1] = string.format("textarea[%f,%f;10,1;;%s: %s;]", craftx-2.3, perplayer_formspec.resultstr_y, F(role_text[dir]), item_name_shown) + n = n + 2 local giveme_form = table.concat({ "label[".. (give_x+0.1)..",".. (crafty + 2.7) .. ";" .. F(S("Give me:")) .. "]", @@ -317,31 +329,33 @@ ui.register_page("craftguide", { if not craft then -- No craft recipes available for this item. - fs[#fs + 1] = "label["..(craftx+2.5)..","..(crafty+1.5)..";" - .. F(no_recipe_text[dir]) .. "]" + formspec[n] = string.format("label[%f,%f;%s]", craftx+2.5, crafty+1.5, F(no_recipe_text[dir])) local no_pos = dir == "recipe" and (craftx+2.5) or craftresultx local item_pos = dir == "recipe" and craftresultx or (craftx+2.5) - fs[#fs + 1] = "image["..no_pos..","..crafty..";1.2,1.2;ui_no.png]" - fs[#fs + 1] = stack_image_button(item_pos, crafty, 1.2, 1.2, + formspec[n+1] = "image["..no_pos..","..crafty..";1.2,1.2;ui_no.png]" + formspec[n+2] = stack_image_button(item_pos, crafty, 1.2, 1.2, "item_button_" .. other_dir[dir] .. "_", ItemStack(item_name)) if has_give then - fs[#fs + 1] = giveme_form + formspec[n+3] = giveme_form end - return { formspec = table.concat(fs) } + return { formspec = table.concat(formspec) } else - fs[#fs + 1] = stack_image_button(craftresultx, crafty, 1.2, 1.2, + formspec[n] = stack_image_button(craftresultx, crafty, 1.2, 1.2, "item_button_" .. rdir .. "_", ItemStack(craft.output)) - fs[#fs + 1] = stack_image_button(craftx-2.3, crafty, 1.2, 1.2, + formspec[n+1] = stack_image_button(craftx-2.3, crafty, 1.2, 1.2, "item_button_usage_", ItemStack(item_name)) + n = n + 2 end local craft_type = ui.registered_craft_types[craft.type] or ui.craft_type_defaults(craft.type, {}) if craft_type.icon then - fs[#fs + 1] = string.format("image[%f,%f;%f,%f;%s]", + formspec[n] = string.format("image[%f,%f;%f,%f;%s]", craftarrowx+0.1, crafty + 0.95, 1, 1, craft_type.icon) + n = n + 1 end - fs[#fs + 1] = "label["..(craftarrowx+0.15)..","..(crafty+0.2)..";" .. F(craft_type.description).."]" + formspec[n] = string.format("label[%f,%f;%s]", craftarrowx+0.15, crafty+0.2, F(craft_type.description)) + n = n + 1 local display_size = craft_type.dynamic_display_size and craft_type.dynamic_display_size(craft) @@ -384,42 +398,50 @@ ui.register_page("craftguide", { local xof = ((fx-1) * of + of) * bspc local yof = ((y-1) * of + 1) * bspc if item then - fs[#fs + 1] = stack_image_button( + formspec[n] = stack_image_button( xoffset - xof, crafty - 1.25 + yof, bsize, bsize, "item_button_recipe_", ItemStack(item)) else -- Fake buttons just to make grid - fs[#fs + 1] = string.format("image_button[%f,%f;%f,%f;ui_blank_image.png;;]", + formspec[n] = string.format("image_button[%f,%f;%f,%f;ui_blank_image.png;;]", xoffset - xof, crafty - 1.25 + yof, bsize, bsize) end + n = n + 1 end end else -- Error - fs[#fs + 1] = string.format("label[2,%f;%s]", + formspec[n] = string.format("label[2,%f;%s]", crafty, F(S("This recipe is too@nlarge to be displayed."))) + n = n + 1 end if craft_type.uses_crafting_grid and display_size.width <= 3 then - fs[#fs + 1] = "label["..(give_x+0.1)..",".. (crafty + 1.7) .. ";" .. F(S("To craft grid:")) .. "]" - .. "button[".. (give_x)..",".. (crafty + 1.9) .. ";0.75,0.5;craftguide_craft_1;1]" - .. "button[".. (give_x+0.8)..",".. (crafty + 1.9) .. ";0.75,0.5;craftguide_craft_10;10]" - .. "button[".. (give_x+1.6)..",".. (crafty + 1.9) .. ";0.75,0.5;craftguide_craft_max;" .. F(S("All")) .. "]" + formspec[n] = "label["..(give_x+0.1)..",".. (crafty + 1.7) .. ";" .. F(S("To craft grid:")) .. "]" + formspec[n+1] = "button[".. (give_x)..",".. (crafty + 1.9) .. ";0.75,0.5;craftguide_craft_1;1]" + formspec[n+2] = "button[".. (give_x+0.8)..",".. (crafty + 1.9) .. ";0.75,0.5;craftguide_craft_10;10]" + formspec[n+3] = "button[".. (give_x+1.6)..",".. (crafty + 1.9) .. ";0.75,0.5;craftguide_craft_max;" .. F(S("All")) .. "]" + n = n + 4 end + if has_give then - fs[#fs + 1] = giveme_form + formspec[n] = giveme_form + n = n + 1 end if alternates and alternates > 1 then - fs[#fs + 1] = "label["..(craftx+4).."," .. (crafty + 2.3) .. ";" - .. F(S(recipe_text[dir], alternate, alternates)) .. "]" - .. "image_button["..(craftarrowx+0.2).."," .. (crafty + 2.6) .. ";1.1,1.1;ui_left_icon.png;alternate_prev;]" - .. "image_button["..(craftarrowx+1.35).."," .. (crafty + 2.6) .. ";1.1,1.1;ui_right_icon.png;alternate;]" - .. "tooltip[alternate_prev;" .. F(prev_alt_text[dir]) .. "]" - .. "tooltip[alternate;" .. F(next_alt_text[dir]) .. "]" + formspec[n] = string.format("label[%f,%f;%s]", + craftx+4, crafty + 2.3, F(S(recipe_text[dir], alternate, alternates))) + formspec[n+1] = string.format("image_button[%f,%f;1.1,1.1;ui_left_icon.png;alternate_prev;]", + craftarrowx+0.2, crafty + 2.6) + formspec[n+2] = string.format("image_button[%f,%f;1.1,1.1;ui_right_icon.png;alternate;]", + craftarrowx+1.35, crafty + 2.6) + formspec[n+3] = "tooltip[alternate_prev;" .. F(prev_alt_text[dir]) .. "]" + formspec[n+4] = "tooltip[alternate;" .. F(next_alt_text[dir]) .. "]" end - return { formspec = table.concat(fs) } + + return { formspec = table.concat(formspec) } end, }) diff --git a/waypoints.lua b/waypoints.lua index 36ba6da..4d3808d 100644 --- a/waypoints.lua +++ b/waypoints.lua @@ -29,21 +29,24 @@ ui.register_page("waypoints", { if not waypoints_temp[player_name] then waypoints_temp[player_name] = {hud = 1} end local waypoints = datastorage.get(player_name, "waypoints") - local formspec = ui.style_full.standard_inv_bg.. - "label["..ui.style_full.form_header_x..","..ui.style_full.form_header_y..";" .. F(S("Waypoints")) .. "]".. + local formspec = { ui.style_full.standard_inv_bg, + string.format("label[%f,%f;%s]", + ui.style_full.form_header_x, ui.style_full.form_header_y, + F(S("Waypoints"))), "image["..wp_info_x..","..wp_info_y..";1,1;ui_waypoints_icon.png]" + } + local n=4 -- Tabs buttons: for i = 1, 5 do - formspec = formspec .. - "image_button["..ui.style_full.main_button_x..",".. - (wp_bottom_row - (5-i) * ui.style_full.btn_spc)..";".. - ui.style_full.btn_size..","..ui.style_full.btn_size..";" .. - (i == waypoints.selected and "ui_blue_icon_background.png^" or "") .. - "ui_" .. i .. "_icon.png;" .. - "select_waypoint" .. i .. ";]" .. - "tooltip[select_waypoint" .. i .. ";" - .. S("Select Waypoint #@1", i).."]" + local sw="select_waypoint"..i + formspec[n] = string.format("image_button[%f,%f;%f,%f;%sui_%i_icon.png;%s;]", + ui.style_full.main_button_x, wp_bottom_row - (5-i) * ui.style_full.btn_spc, + ui.style_full.btn_size, ui.style_full.btn_size, + (i == waypoints.selected) and "ui_blue_icon_background.png^" or "", + i, sw) + formspec[n+1] = "tooltip["..sw..";"..S("Select Waypoint #@1", i).."]" + n = n + 2 end local i = waypoints.selected or 1 @@ -63,44 +66,44 @@ ui.register_page("waypoints", { local x = 4 for _, b in pairs(btnlist) do - formspec = formspec .. - "image_button["..(wp_buttons_rj - ui.style_full.btn_spc * x)..",".. - wp_bottom_row..";".. - ui.style_full.btn_size..","..ui.style_full.btn_size..";".. - b[1]..";".. - b[2]..i..";]".. - "tooltip["..b[2]..i..";"..F(S(b[3], b[4] or "")).."]" + formspec[n] = string.format("image_button[%f,%f;%f,%f;%s;%s%i;]", + wp_buttons_rj - ui.style_full.btn_spc * x, wp_bottom_row, + ui.style_full.btn_size, ui.style_full.btn_size, + b[1], b[2], i) + formspec[n+1] = "tooltip["..b[2]..i..";"..F(S(b[3], b[4] or "")).."]" x = x - 1 + n = n + 2 end -- Waypoint's info: - formspec = formspec.."label["..wp_info_x..","..(wp_info_y+1.1)..";" + formspec[n] = "label["..wp_info_x..","..(wp_info_y+1.1)..";" if waypoint.active then - formspec = formspec ..F(S("Waypoint active")).."]" + formspec[n+1] = F(S("Waypoint active")).."]" else - formspec = formspec ..F(S("Waypoint inactive")).."]" + formspec[n+1] = F(S("Waypoint inactive")).."]" end + n = n + 2 if temp.edit then - formspec = formspec .. - "field["..(wp_buttons_rj - wp_edit_w - 0.1)..","..(wp_bottom_row - ui.style_full.btn_spc)..";".. - wp_edit_w..","..ui.style_full.btn_size..";rename_box" .. i .. ";;".. - (waypoint.name or default_name).."]" .. - "image_button["..wp_buttons_rj..","..(wp_bottom_row - ui.style_full.btn_spc)..";".. - ui.style_full.btn_size..","..ui.style_full.btn_size..";".. - "ui_ok_icon.png;".. - "confirm_rename"..i.. ";]".. - "tooltip[confirm_rename" .. i .. ";" - .. F(S("Finish editing")).."]" + formspec[n] = string.format("field[%f,%f;%f,%f;rename_box%i;;%s]", + wp_buttons_rj - wp_edit_w - 0.1, wp_bottom_row - ui.style_full.btn_spc, + wp_edit_w, ui.style_full.btn_size, i, (waypoint.name or default_name)) + formspec[n+1] = string.format("image_button[%f,%f;%f,%f;ui_ok_icon.png;confirm_rename%i;]", + wp_buttons_rj, wp_bottom_row - ui.style_full.btn_spc, + ui.style_full.btn_size, ui.style_full.btn_size, i) + formspec[n+2] = "tooltip[confirm_rename"..i..";"..F(S("Finish editing")).."]" + n = n + 3 end - formspec = formspec .. "label["..wp_info_x..","..(wp_info_y+1.6)..";"..F(S("World position"))..": " .. - minetest.pos_to_string(waypoint.world_pos or vector.new()) .. "]" .. - "label["..wp_info_x..","..(wp_info_y+2.10)..";"..F(S("Name"))..": ".. (waypoint.name or default_name) .. "]" .. - "label["..wp_info_x..","..(wp_info_y+2.60)..";"..F(S("HUD text color"))..": " .. - hud_colors[waypoint.color or 1][3] .. "]" + formspec[n] = string.format("label[%f,%f;%s: %s]", + wp_info_x, wp_info_y+1.6, F(S("World position")), + minetest.pos_to_string(waypoint.world_pos or vector.new())) + formspec[n+1] = string.format("label[%f,%f;%s: %s]", + wp_info_x, wp_info_y+2.10, F(S("Name")), (waypoint.name or default_name)) + formspec[n+2] = string.format("label[%f,%f;%s: %s]", + wp_info_x, wp_info_y+2.60, F(S("HUD text color")), hud_colors[waypoint.color or 1][3]) - return {formspec=formspec} + return {formspec=table.concat(formspec)} end, })