Table UI adjustments

This commit is contained in:
Hugues Ross 2020-04-23 07:13:23 -04:00
parent 8f0e161b7c
commit 8ccf1afbb6
1 changed files with 35 additions and 25 deletions

View File

@ -215,17 +215,23 @@ end
-- Draw a label with material costs from a table
-- x: The x position of the interface
-- y: The y position of the interface
-- materials: A table of material costs, with string keys for the material
-- names and iteger values
-- cost: A table of material costs, with string keys for the material
-- names and iteger values
-- skin: A formspec skin table
--
-- Returns a formspec string
function fs.cost(x, y, materials, skin)
local data = "";
function fs.cost(x, y, cost, skin)
local data = string.format("background9[%f,%f;1,0.5;%s.png;false;%s]", x, y - 0.125, skin.label.texture, tostring(skin.label.radius));
local i = 0;
for name,value in pairs(materials) do
data = data .. string.format("label[%f,%f;%s%s x %d]", x, y + (i * 0.25), minetest.get_color_escape_sequence(skin.label.font_color), name, value);
for name,value in pairs(cost) do
if name == "paper" then
data = data .. string.format("image[%f,%f;0.25,0.25;%s.png]", x + 0.125, y + (i * 0.25) - 0.125, skin.paper_texture)
elseif name == "pigment" then
data = data .. string.format("image[%f,%f;0.25,0.25;%s.png]", x + 0.125, y + (i * 0.25) - 0.125, skin.pigment_texture)
end
data = data .. string.format("label[%f,%f;%sx %d]", x + 0.375, y + (i * 0.25), minetest.get_color_escape_sequence(skin.label.font_color), value);
i = i + 1;
end
@ -247,8 +253,9 @@ function fs.convert(x, y, pos, skin)
.. "formspec_version[3]"
.. inventory_bg(0, 0, 1, 1, skin.slot)
.. string.format("list[nodemeta:%d,%d,%d;input;0,0;1,1;]", pos.x, pos.y, pos.z)
.. fs.button(1.25, 0.5, 2, 0.5, "convert", "Convert Materials", value.paper + value.pigment > 0)
.. fs.cost(1.25, 0.125, value, skin)
.. "tooltip[0,0;1,1;Place items here to convert\nthem into mapmaking materials]"
.. fs.button(2.5, 0.25, 2, 0.5, "convert", "Convert Materials", value.paper + value.pigment > 0)
.. fs.cost(1.25, 0.375, value, skin)
.. "container_end[]";
end
@ -265,29 +272,32 @@ function fs.craft(x, y, pos, rank, meta, skin)
local cost, is_positive = get_craft_material_cost(meta);
local data = string.format("container[%f,%f]", x, y)
.. "formspec_version[3]"
.. inventory_bg(0, 0.75, 1, 1, skin.slot)
.. string.format("list[nodemeta:%d,%d,%d;output;0,0.75;1,1;]", pos.x, pos.y, pos.z)
.. fs.button(1.25, 1.25, 2, 0.5, "craft", "Craft Map", is_positive and can_afford(cost, meta))
.. fs.cost(1.25, 0.875, cost, skin);
.. inventory_bg(0, 1, 1, 1, skin.slot)
.. string.format("list[nodemeta:%d,%d,%d;output;0,1;1,1;]", pos.x, pos.y, pos.z)
.. "tooltip[0,1;1,1;Place a map here to upgrade it,\nor leave empty to craft]"
.. fs.button(2.5, 1.25, 2, 0.5, "craft", "Craft Map", is_positive and can_afford(cost, meta))
.. fs.cost(1.25, 1.375, cost, skin);
if rank > 1 then
data = data .. string.format("style[%dx;bgimg=%s.png;bgimg_hovered=%s.png;bgimg_pressed=%s.png]", meta:get_int("scale"), skin.button.selected_texture, skin.button.selected_texture, skin.button.selected_texture)
.. "button[2.5,0;0.5,0.5;1x;1x]"
.. "button[3.0,0;0.5,0.5;2x;2x]";
.. string.format("label[2.5,0;%sMap Scale]", minetest.get_color_escape_sequence(skin.label.font_color))
.. "button[2.5,0.25;0.5,0.5;1x;1x]"
.. "button[3.0,0.25;0.5,0.5;2x;2x]";
if rank > 2 then
data = data .. "button[3.5,0;0.5,0.5;4x;4x]"
.. "button[4.0,0;0.5,0.5;8x;8x]";
data = data .. "button[3.5,0.25;0.5,0.5;4x;4x]"
.. "button[4.0,0.25;0.5,0.5;8x;8x]";
end
end
data = data .. string.format("style[%d;bgimg=%s.png;bgimg_hovered=%s.png;bgimg_pressed=%s.png]", meta:get_int("detail") + 1, skin.button.selected_texture, skin.button.selected_texture, skin.button.selected_texture)
.. "button[0.0,0;0.5,0.5;1;1]"
.. "button[0.5,0;0.5,0.5;2;2]";
.. string.format("label[0,0;%sDetail Level]", minetest.get_color_escape_sequence(skin.label.font_color))
.. "button[0.0,0.25;0.5,0.5;1;1]"
.. "button[0.5,0.25;0.5,0.5;2;2]";
if rank > 1 then
data = data .. "button[1.0,0;0.5,0.5;3;3]";
data = data .. "button[1.0,0.25;0.5,0.5;3;3]";
if rank > 2 then
data = data .. "button[1.5,0;0.5,0.5;4;4]";
data = data .. "button[1.5,0.25;0.5,0.5;4;4]";
end
end
@ -309,8 +319,8 @@ function fs.copy(x, y, pos, skin)
.. "formspec_version[3]"
.. inventory_bg(0, 0, 1, 1, skin.slot)
.. string.format("list[nodemeta:%d,%d,%d;copy_input;0,0;1,1;]", pos.x, pos.y, pos.z)
.. fs.button(1.25, 0.5, 2, 0.5, "copy", "Copy Map", can_afford(costs, meta))
.. fs.cost(1.25, 0.125, costs, skin)
.. fs.button(2.5, 0.25, 2, 0.5, "copy", "Copy Map", can_afford(costs, meta))
.. fs.cost(1.25, 0.375, costs, skin)
.. inventory_bg(8.75, 0, 1, 1, skin.slot)
.. string.format("list[nodemeta:%d,%d,%d;copy_output;8.75,0;1,1;]", pos.x, pos.y, pos.z)
.. "container_end[]";
@ -369,12 +379,12 @@ local function table_formspec(player)
);
elseif data.tab == 2 then
minetest.show_formspec(player, "simple_table",
fs.header(10.25, 8.0, rank, data.tab, skin) ..
fs.header(10.25, 8.25, rank, data.tab, skin) ..
fs.materials(0.25, 0.1875, meta, skin) ..
fs.separator(0.6875, skin.separator) ..
fs.craft(0.25, 0.875, pos, rank, meta, skin) ..
fs.separator(2.75, skin.separator) ..
fs.inv(0.25, 3, skin)
fs.separator(3, skin.separator) ..
fs.inv(0.25, 3.25, skin)
);
elseif data.tab == 3 then
minetest.show_formspec(player, "simple_table",