epidermis/help.lua

117 lines
3.4 KiB
Lua

local tags, root_tag = fslib.hypertext_tags, fslib.hypertext_root
local function item_(name, title, ...)
return {
tags.itemtitle{
tags.item{
name = name,
float = "left",
width = 64,
height = 64,
},
title,
},
"\n",
table.concat({ ... }, "\n"), -- description
"\n",
}
end
local help = root_tag{
tags.tag{ name = "itemtitle", size = 18 },
tags.tag{ name = "code", font = "mono", color = "lightgreen" },
{
tags.itemtitle{
tags.item{
name = "epidermis:guide",
float = "left",
width = 64,
height = 64,
},
"Guide",
},
"\n",
"This guide. Can also be opened using ", -- description
tags.code{"/epidermis_guide"}, ".",
"\n",
},
item_(
"epidermis:spawner_paintable",
"Epidermis Spawner",
"Spawns a paintable epidermis that copies your skin. Use your bare hands on the paintable:",
"- Left-click (punch) to swap skins",
"- Right-click (interact) to open the control panel, which allows " .. table.concat({
"toggling backface culling",
"changing rotation",
"previewing the texture",
"playing the animation",
"picking a texture from and uploading to SkinDB"
}, ", ") .. "."
),
item_(
"epidermis:spawner_colorpicker",
"HSV Colorpicker Spawner",
"Spawns a HSV color picker if a node is pointed. The colorpicker is oriented as if it were wallmounted.",
"Punch the colorpicker's hue bar to select a hue."
),
item_(
"epidermis:undo_redo",
"Undo / redo",
"Left-click to undo the last action, right-click to redo undone actions. "
.. "Only a limited amount of actions can be undone / redone."
),
item_(
"epidermis:eraser",
"Eraser",
"Left-click to mark a pixel as transparent, "
.. "right-click to restore opacity of the first transparent pixel above the pointed pixel."
),
tags.b({
"The painting tools below support right-clicking an epidermis or HSV color picker to choose a color. ",
"If nothing is pointed, you will be shown a RGB color picker.",
}),
"\n",
item_("epidermis:pen", "Pen", "Left-click to set a single pixel."),
item_("epidermis:filling_bucket", "Filling Bucket",
"Left-click to fill pixels of (exactly) the same color on the texture."),
item_("epidermis:line", "Line", "Drag to draw a line. The line is drawn on the texture, not the model."),
item_(
"epidermis:rectangle",
"Rectangle",
"Drag to draw a rectangle. The rectangle is drawn on the texture, not the model."
),
}
local formspec = fslib.build_formspec{
{"size", {8.5, 5.25, false}},
{"real_coordinates", true},
{"image_button_exit", {7.75, 0.25}; {0.5, 0.5}; "epidermis_cross.png"; "close"; ""},
{"tooltip", "close"; "Close"},
{"hypertext", {0.25, 0.25}; {7.5, 4.75}; "helptitle"; tags.big{tags.b{"Epidermis Guide"}}},
{"hypertext", {0.25, 0.75}; {8, 4.25}; "help"; help}
}
function epidermis.show_guide_formspec(player)
minetest.show_formspec(player:get_player_name(), "epidermis:guide", formspec)
end
minetest.register_chatcommand("epidermis_guide", {
description = "Open the Epidermis Guide",
params = "",
func = function(name)
local player = minetest.get_player_by_name(name)
if not player then
return false, "Command only available to players"
end
epidermis.show_guide_formspec(player)
end
})
epidermis.register_tool("epidermis:guide", {
description = "Epidermis Guide",
inventory_image = "epidermis_book.png",
on_use = function(_, user)
epidermis.show_guide_formspec(user)
end,
})