make color of the flag item configurable
Only changes the look of the item. Original intention was to use dye to change colors (craft from different colored wool, etc), but probably not worth it.
This commit is contained in:
parent
6a4ab435ba
commit
92ecbd898a
39
init.lua
39
init.lua
@ -197,15 +197,28 @@ minetest.register_chatcommand(ANNOUNCE_COMMAND_NAME, {
|
||||
local flag_dialog_context = {}
|
||||
local function show_flag_config_dialog(itemstack, player)
|
||||
local meta = itemstack:get_meta()
|
||||
local formspec_head = "formspec_version[4]size[8,3]set_focus[close;]"
|
||||
local formspec_head = "formspec_version[4]size[8,4]set_focus[close;]"
|
||||
local message = meta:get_string("message") or "Flag point"
|
||||
local field_message = ("field[0.5,0.6;7,0.8;message;Message;%s]"):format(minetest.formspec_escape(message))
|
||||
local field_message = ("field[0.5,0.6;7,0.7;message;Message;%s]"):format(minetest.formspec_escape(message))
|
||||
local color_str = meta:get_string("color_str")
|
||||
if color_str == "" then
|
||||
color_str = meta:get_string("color")
|
||||
if color_str == "" then
|
||||
-- probably an old flag, provide default color
|
||||
color_str = "red"
|
||||
end
|
||||
end
|
||||
-- strip alpha (it should never appear here anyway)
|
||||
color_str = string.match(color_str, "#[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]") or color_str
|
||||
local field_color = ("field[0.5,1.75;4,0.7;color;Color;%s]"):format(
|
||||
minetest.formspec_escape(color_str))
|
||||
minetest.show_formspec(player:get_player_name(), "waypoint_announce:flag_edit",
|
||||
formspec_head ..
|
||||
field_message ..
|
||||
--field_color ..
|
||||
"button_exit[0.5,1.7;3,0.8;save;save]" ..
|
||||
"button_exit[4.5,1.7;3,0.8;close;close]")
|
||||
field_color ..
|
||||
--field_time .. -- TODO set time too? (within limits)
|
||||
"button_exit[0.5,2.7;3,0.8;save;save]" ..
|
||||
"button_exit[4.5,2.7;3,0.8;close;close]")
|
||||
flag_dialog_context[player:get_player_name()] = itemstack
|
||||
end
|
||||
|
||||
@ -214,6 +227,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "waypoint_announce:flag_edit" then
|
||||
return
|
||||
end
|
||||
-- FIXME has same wielded item swapping problems as compass had
|
||||
if fields.save or (fields.key_enter_field and fields.quit) then
|
||||
local flag_item = flag_dialog_context[player:get_player_name()]
|
||||
if not flag_item then
|
||||
@ -228,6 +242,21 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local message = fields.message
|
||||
meta:set_string("message", message)
|
||||
|
||||
|
||||
if fields.color and #(fields.color) < 20 then
|
||||
local colorstring = minetest.colorspec_to_colorstring(fields.color)
|
||||
if colorstring then
|
||||
-- strip alpha
|
||||
colorstring = string.match(colorstring, "#[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]") or colorstring
|
||||
meta:set_string("color", colorstring)
|
||||
-- preserve original color name for editing
|
||||
meta:set_string("color_str", fields.color)
|
||||
end
|
||||
-- else
|
||||
-- -- something sus is going on, don't set it
|
||||
-- meta:set_string("color_str", "")
|
||||
end
|
||||
|
||||
local success = player:set_wielded_item(flag_item)
|
||||
if not success then
|
||||
-- no idea why this can happen
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 583 B |
Loading…
Reference in New Issue
Block a user