mirror of
https://github.com/minetest-mods/digtron.git
synced 2024-12-22 04:12:23 +01:00
add "help" buttons to various formspecs when doc is installed
This commit is contained in:
parent
43b10262fc
commit
f63e7b7a9b
@ -1,5 +1,34 @@
|
||||
-- Note: builders go in group 4 and have both test_build and execute_build methods.
|
||||
|
||||
local builder_formspec =
|
||||
"size[8,5.2]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"list[current_name;main;0.5,0;1,1;]" ..
|
||||
"label[0.5,0.8;Block to build]" ..
|
||||
"field[2.3,0.8;1,0.1;period;Periodicity;${period}]" ..
|
||||
"tooltip[period;Builder will build once every n steps.\nThese steps are globally aligned, so all builders with the\nsame period and offset will build on the same location.]" ..
|
||||
"field[3.3,0.8;1,0.1;offset;Offset;${offset}]" ..
|
||||
"tooltip[offset;Offsets the start of periodicity counting by this amount.\nFor example, a builder with period 2 and offset 0 builds\nevery even-numbered block and one with period 2 and\noffset 1 builds every odd-numbered block.]" ..
|
||||
"button_exit[4.0,0.5;1,0.1;set;Save &\nShow]" ..
|
||||
"tooltip[set;Saves settings]" ..
|
||||
"field[5.3,0.8;1,0.1;build_facing;Facing;${build_facing}]" ..
|
||||
"tooltip[build_facing;Value from 0-23. Not all block types make use of this.\nUse the 'Read & Save' button to copy the facing of the block\ncurrently in the builder output location]" ..
|
||||
"button_exit[6.0,0.5;1,0.1;read;Read &\nSave]" ..
|
||||
"tooltip[read;Reads the facing of the block currently in the build location,\nthen saves all settings]" ..
|
||||
"list[current_player;main;0,1.3;8,1;]" ..
|
||||
default.get_hotbar_bg(0,1.3) ..
|
||||
"list[current_player;main;0,2.5;8,3;8]" ..
|
||||
"listring[current_player;main]" ..
|
||||
"listring[current_name;main]"
|
||||
|
||||
if minetest.get_modpath("doc") then
|
||||
builder_formspec = builder_formspec ..
|
||||
"button_exit[7.0,0.5;1,0.1;help;Help]" ..
|
||||
"tooltip[help;Show documentation about this block]"
|
||||
end
|
||||
|
||||
-- Builds objects in the targeted node. This is a complicated beastie.
|
||||
minetest.register_node("digtron:builder", {
|
||||
description = "Digtron Builder Module",
|
||||
@ -43,30 +72,7 @@ minetest.register_node("digtron:builder", {
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,5.2]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"list[current_name;main;0.5,0;1,1;]" ..
|
||||
-- "tooltip[main;Builder will build the type of block in this slot.\nNote that only one item needs to be placed here, to 'program' it.\nThe builder will draw construction materials from the central inventory when building.]" ..
|
||||
"label[0.5,0.8;Block to build]" ..
|
||||
"field[2.5,0.8;1,0.1;period;Periodicity;${period}]" ..
|
||||
"tooltip[period;Builder will build once every n steps.\nThese steps are globally aligned, so all builders with the\nsame period and offset will build on the same location.]" ..
|
||||
"field[3.5,0.8;1,0.1;offset;Offset;${offset}]" ..
|
||||
"tooltip[offset;Offsets the start of periodicity counting by this amount.\nFor example, a builder with period 2 and offset 0 builds\nevery even-numbered block and one with period 2 and\noffset 1 builds every odd-numbered block.]" ..
|
||||
"button_exit[4.2,0.5;1,0.1;set;Save &\nShow]" ..
|
||||
"tooltip[set;Saves settings]" ..
|
||||
"field[5.7,0.8;1,0.1;build_facing;Facing;${build_facing}]" ..
|
||||
"tooltip[build_facing;Value from 0-23. Not all block types make use of this.\nUse the 'Read & Save' button to copy the facing of the block\ncurrently in the builder output location]" ..
|
||||
"button_exit[6.4,0.5;1,0.1;read;Read &\nSave]" ..
|
||||
"tooltip[read;Reads the facing of the block currently in the build location,\nthen saves all settings]" ..
|
||||
"list[current_player;main;0,1.3;8,1;]" ..
|
||||
default.get_hotbar_bg(0,1.3) ..
|
||||
"list[current_player;main;0,2.5;8,3;8]" ..
|
||||
"listring[current_player;main]" ..
|
||||
"listring[current_name;main]"
|
||||
)
|
||||
meta:set_string("formspec", builder_formspec)
|
||||
meta:set_int("period", 1)
|
||||
meta:set_int("offset", 0)
|
||||
meta:set_int("build_facing", 0)
|
||||
@ -131,6 +137,10 @@ minetest.register_node("digtron:builder", {
|
||||
local buildpos = digtron.find_new_pos(pos, facing)
|
||||
meta:set_int("build_facing", minetest.get_node(buildpos).param2)
|
||||
end
|
||||
|
||||
if fields.help and minetest.get_modpath("doc") then --check for mod in case someone disabled it after this digger was built
|
||||
doc.show_entry(sender:get_player_name(), "nodes", "digtron:builder")
|
||||
end
|
||||
|
||||
digtron.update_builder_item(pos)
|
||||
end,
|
||||
|
@ -75,7 +75,7 @@ local auto_formspec = "size[8,6.2]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"container[2.5,0]" ..
|
||||
"container[2.0,0]" ..
|
||||
"field[0.0,0.8;1,0.1;cycles;Cycles;${cycles}]" ..
|
||||
"tooltip[cycles;When triggered, this controller will try to run for the given number of cycles.\nThe cycle count will decrement as it runs, so if it gets halted by a problem\nyou can fix the problem and restart.]" ..
|
||||
"button_exit[0.7,0.5;1,0.1;set;Set]" ..
|
||||
@ -97,7 +97,12 @@ local auto_formspec = "size[8,6.2]" ..
|
||||
"listring[current_player;main]" ..
|
||||
"listring[current_name;stop]"
|
||||
|
||||
|
||||
if minetest.get_modpath("doc") then
|
||||
auto_formspec = auto_formspec ..
|
||||
"button_exit[7.0,0.5;1,0.1;help;Help]" ..
|
||||
"tooltip[help;Show documentation about this block]"
|
||||
end
|
||||
|
||||
-- Needed to make this global so that it could recurse into minetest.after
|
||||
digtron.auto_cycle = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
@ -263,7 +268,11 @@ minetest.register_node("digtron:auto_controller", {
|
||||
markerpos[controlling_coordinate] = x_pos + slope
|
||||
minetest.add_entity(markerpos, "digtron:marker_vertical")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if fields.help and minetest.get_modpath("doc") then --check for mod in case someone disabled it after this digger was built
|
||||
doc.show_entry(sender:get_player_name(), "nodes", "digtron:auto_controller")
|
||||
end
|
||||
end,
|
||||
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
|
@ -40,17 +40,37 @@ minetest.register_node("digtron:empty_crate", {
|
||||
end,
|
||||
})
|
||||
|
||||
local loaded_formspec = "size[4,1.5]" ..
|
||||
local loaded_formspec
|
||||
|
||||
if minetest.get_modpath("doc") then
|
||||
loaded_formspec =
|
||||
"size[4.1,1.5]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"field[0.3,0.5;4,0.5;title;Digtron Name;${title}]" ..
|
||||
"button_exit[0.0,1.2;1,0.1;save;Save\nTitle]" ..
|
||||
"tooltip[save;Saves the title of this Digtron]" ..
|
||||
"button_exit[1.0,1.2;1,0.1;show;Show\nBlocks]" ..
|
||||
"tooltip[show;Shows which blocks the packed Digtron will occupy if unpacked]" ..
|
||||
"button_exit[2.0,1.2;1,0.1;unpack;Unpack]" ..
|
||||
"tooltip[unpack;Attempts to unpack the Digtron on this location]" ..
|
||||
"button_exit[3.0,1.2;1,0.1;help;Help]" ..
|
||||
"tooltip[help;Show documentation about this block]"
|
||||
else
|
||||
loaded_formspec =
|
||||
"size[4,1.5]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"field[0.3,0.5;4,0.5;title;Digtron Name;${title}]" ..
|
||||
"button_exit[0.5,1.2;1,0.1;save;Save\nTitle]" ..
|
||||
"tooltip[save;Saves the title of this Digtron]" ..
|
||||
"tooltip[show;Saves the title of this Digtron]" ..
|
||||
"button_exit[1.5,1.2;1,0.1;show;Show\nBlocks]" ..
|
||||
"tooltip[save;Shows which blocks the packed Digtron will occupy if unpacked]" ..
|
||||
"button_exit[2.5,1.2;1,0.1;unpack;Unpack]" ..
|
||||
"tooltip[unpack;Attempts to unpack the Digtron on this location]"
|
||||
end
|
||||
|
||||
minetest.register_node("digtron:loaded_crate", {
|
||||
description = "Digtron Crate (Loaded)",
|
||||
@ -75,6 +95,10 @@ minetest.register_node("digtron:loaded_crate", {
|
||||
meta:set_string("infotext", fields.title)
|
||||
end
|
||||
|
||||
if fields.help and minetest.get_modpath("doc") then --check for mod in case someone disabled it after this digger was built
|
||||
doc.show_entry(sender:get_player_name(), "nodes", "digtron:loaded_crate")
|
||||
end
|
||||
|
||||
if not (fields.unpack or fields.show) then
|
||||
return
|
||||
end
|
||||
|
@ -21,20 +21,28 @@ local dual_digger_nodebox = {
|
||||
{-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125}, -- Lower_Cutter_2
|
||||
}
|
||||
|
||||
local intermittent_formspec =
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"field[0.5,0.8;1,0.1;period;Periodicity;${period}]" ..
|
||||
"tooltip[period;Digger will dig once every n steps.\nThese steps are globally aligned, all diggers with\nthe same period and offset will dig on the same location.]" ..
|
||||
"field[1.5,0.8;1,0.1;offset;Offset;${offset}]" ..
|
||||
"tooltip[offset;Offsets the start of periodicity counting by this amount.\nFor example, a digger with period 2 and offset 0 digs\nevery even-numbered block and one with period 2 and\noffset 1 digs every odd-numbered block.]" ..
|
||||
"button_exit[2.2,0.5;1,0.1;set;Save]" ..
|
||||
"tooltip[set;Saves settings]"
|
||||
|
||||
local intermittent_on_construct = function(pos)
|
||||
local formspec = intermittent_formspec
|
||||
if minetest.get_modpath("doc") then
|
||||
formspec = "size[4.5,1]" .. formspec ..
|
||||
"button_exit[3.2,0.5;1,0.1;help;Help]" ..
|
||||
"tooltip[help;Show documentation about this block]"
|
||||
else
|
||||
formspec = "size[3.5,1]" .. formspec
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[3.5,1]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"field[0.5,0.8;1,0.1;period;Periodicity;${period}]" ..
|
||||
"tooltip[period;Digger will dig once every n steps.\nThese steps are globally aligned, all diggers with\nthe same period and offset will dig on the same location.]" ..
|
||||
"field[1.5,0.8;1,0.1;offset;Offset;${offset}]" ..
|
||||
"tooltip[offset;Offsets the start of periodicity counting by this amount.\nFor example, a digger with period 2 and offset 0 digs\nevery even-numbered block and one with period 2 and\noffset 1 digs every odd-numbered block.]" ..
|
||||
"button_exit[2.2,0.5;1,0.1;set;Save]" ..
|
||||
"tooltip[set;Saves settings]"
|
||||
)
|
||||
meta:set_string("formspec", formspec)
|
||||
meta:set_int("period", 1)
|
||||
meta:set_int("offset", 0)
|
||||
end
|
||||
@ -49,6 +57,10 @@ local intermittent_on_receive_fields = function(pos, formname, fields, sender)
|
||||
if offset then
|
||||
meta:set_int("offset", math.floor(offset))
|
||||
end
|
||||
if fields.help and minetest.get_modpath("doc") then --check for mod in case someone disabled it after this digger was built
|
||||
local node_name = minetest.get_node(pos).name
|
||||
doc.show_entry(sender:get_player_name(), "nodes", node_name)
|
||||
end
|
||||
end,
|
||||
|
||||
-- Digs out nodes that are "in front" of the digger head.
|
||||
|
Loading…
Reference in New Issue
Block a user