Rearrange and add recipe tooltips.

master
Duane Robertson 2019-07-28 02:18:08 -05:00
parent ff1a588e90
commit 67c72c3744
1 changed files with 38 additions and 26 deletions

View File

@ -26,6 +26,7 @@ local WORN_INV = 'worn'
minetest.register_craftitem(mod_name..':bag_medium', {
description = 'Medium Bag',
inventory_image = 'bags_medium.png',
stack_max = 1,
_dinv_storage_size = 16,
@ -41,6 +42,7 @@ minetest.register_craft({
})
minetest.register_craftitem(mod_name..':bag_large', {
description = 'Large Bag',
inventory_image = 'bags_large.png',
stack_max = 1,
_dinv_storage_size = 24,
@ -56,6 +58,7 @@ minetest.register_craft({
})
minetest.register_craftitem(mod_name..':bag_small', {
description = 'Small Bag',
inventory_image = 'bags_small.png',
stack_max = 1,
_dinv_storage_size = 8,
@ -106,6 +109,7 @@ minetest.register_craft({
})
minetest.register_craftitem(mod_name..':diamond_plate', {
description = 'Diamond Plate',
inventory_image = 'dinv_diamond_plate.png',
})
@ -222,6 +226,7 @@ minetest.register_craft({
})
minetest.register_craftitem(mod_name..':steel_plate', {
description = 'Steel Plate',
inventory_image = 'dinv_steel_plate.png',
})
@ -235,6 +240,7 @@ minetest.register_craft({
})
minetest.register_craftitem(mod_name..':steel_rings', {
description = 'Steel Rings',
inventory_image = 'dinv_steel_rings.png',
})
@ -414,14 +420,14 @@ local worn_items = mod.worn_items
-- Formspec definitions are confusing.
mod.form_size = 'size[11.25,7.75]'
mod.main_inventory = 'list[current_player;main;0,4;8,4;'
mod.craft_inventory = 'list[current_player;craft;3,0;3,3;]'
mod.craft_preview = 'list[current_player;craftpreview;6,1;1,1;]'
mod.main_inventory_scroll_up = 'image_button[8,4;1,1;transparent_button.png;dinv_main_inventory_up;Up]'
mod.main_inventory_scroll_down = 'image_button[8,7;1,1;transparent_button.png;dinv_main_inventory_down;Down]'
mod.recipe_buttons = 'image_button[3,3;1,1;transparent_button.png;dinv_recipe_back;Back]image_button[5,3;1,1;transparent_button.png;dinv_recipe_fore;Fore]'
mod.worn_items_inv = 'list[current_player;worn;9.25,4;2,4;]'
mod.form_size = 'size[11.25,7.25]'
mod.main_inventory = 'list[current_player;main;0,3.5;8,4;'
mod.craft_inventory = 'list[current_player;craft;1,0;3,3;]'
mod.craft_preview = 'list[current_player;craftpreview;4,2;1,1;]'
mod.main_inventory_scroll_up = 'image_button[8,3.5;1,1;transparent_button.png;dinv_main_inventory_up;Up]'
mod.main_inventory_scroll_down = 'image_button[8,6.5;1,1;transparent_button.png;dinv_main_inventory_down;Down]'
mod.recipe_button = 'image_button[4,1;1,1;transparent_button.png;dinv_recipe_next;Next]'
mod.worn_items_inv = 'list[current_player;worn;9.25,3.5;2,4;]'
-- All this is necessary to add scroll buttons to chests.
@ -604,7 +610,6 @@ function mod.make_inventory_spec(player)
inventory = inventory .. mod.main_inventory .. scroll_main_to .. ']'
inventory = inventory .. mod.craft_inventory
inventory = inventory .. 'listring[]'
inventory = inventory .. mod.recipe_buttons
inventory = inventory .. mod.craft_preview
inventory = inventory .. mod.main_inventory_scroll_up
inventory = inventory .. mod.main_inventory_scroll_down
@ -686,10 +691,16 @@ function mod.recipe_grid(player)
dat['recipe_number'] = recipe_number
end
local recipe = recipes[recipe_number]
--print(dump(recipe))
local inv = ''
inv = inv .. 'container[3,0]'
inv = inv .. 'container[1,0]'
do
local tooltip = craft_item
inv = inv .. 'item_image[3,2;1,1;' .. craft_item .. ']'
tooltip = minetest.registered_items[craft_item].description or tooltip
inv = inv .. 'tooltip[3,2;1,1;' .. 'recipe: ' .. tooltip .. ']'
end
local w = recipe.width or 3
if w == 0 or w > 3 then
@ -705,21 +716,23 @@ function mod.recipe_grid(player)
if recipe.type == 'normal' then
item = recipe.items[(y * w) + x]
end
local tooltip = item
if item and item:find('^group') then
--print(item)
item = group_rep[item]
if item then
g_s[i] = true
end
elseif item then
tooltip = minetest.registered_items[item].description or tooltip
end
if item then
inv = inv .. 'item_image[' .. (x - 1) .. ',' .. (y) .. ';1,1;' .. item .. ']'
inv = inv .. 'tooltip[' .. (x - 1) .. ',' .. (y) .. ';1,1;' .. 'recipe: ' .. tooltip .. ']'
end
end
end
inv = inv .. 'container_end[]'
inv = inv .. 'container[3,0]'
for i = 1, 9 do
if g_s[i] then
local x = (i - 1) % w
@ -729,6 +742,10 @@ function mod.recipe_grid(player)
end
inv = inv .. 'container_end[]'
if #recipes > 1 then
inv = inv .. mod.recipe_button
end
return inv
end
@ -752,7 +769,7 @@ function mod.recipe_list(player)
end
local inv = ''
inv = inv .. 'textlist[7,0;4,3.5;dinv_recipe_list;'
inv = inv .. 'textlist[5,0;3.75,2.9;dinv_recipe_list;'
local t
for k, v in pairs(sorted_items) do
if t then
@ -886,13 +903,11 @@ function mod.show_recipe(player, field)
return
end
if field:find('CHG') then
local n = field:gsub('.*CHG:(%d+).*', '%1')
if n then
mod.dat[player_name].craft_item_number = tonumber(n)
mod.dat[player_name].recipe_number = 1
player:set_inventory_formspec(mod.make_inventory_spec(player))
end
local t = minetest.explode_textlist_event(field)
if t.type == 'CHG' and t.index then
mod.dat[player_name].craft_item_number = tonumber(t.index)
mod.dat[player_name].recipe_number = 1
player:set_inventory_formspec(mod.make_inventory_spec(player))
end
end
@ -1127,8 +1142,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
fields['dinv_main_inventory_up']
or fields['dinv_main_inventory_down']
or fields['dinv_recipe_list']
or fields['dinv_recipe_back']
or fields['dinv_recipe_fore']
or fields['dinv_recipe_next']
) then
return
end
@ -1142,9 +1156,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
mod.scroll_main(player, 16, main_inventory_size)
elseif fields and fields['dinv_recipe_list'] then
mod.show_recipe(player, fields['dinv_recipe_list'])
elseif fields and fields['dinv_recipe_back'] then
mod.switch_recipe(player, -1)
elseif fields and fields['dinv_recipe_fore'] then
elseif fields and fields['dinv_recipe_next'] then
mod.switch_recipe(player, 1)
end
end)