2017-02-02 21:14:20 +01:00
--chatcmds.lua
--Registers commands to modify the init and step code for LuaAutomation
2017-02-03 15:40:44 +01:00
--position helper.
--punching a node will result in that position being saved and inserted into a text field on the top of init form.
local punchpos = { }
minetest.register_on_punchnode ( function ( pos , node , player , pointed_thing )
local pname = player : get_player_name ( )
punchpos [ pname ] = pos
end )
local function get_init_form ( env , pname )
2017-02-02 21:14:20 +01:00
local err = env.init_err or " "
local code = env.init_code or " "
2017-02-03 15:40:44 +01:00
local ppos = punchpos [ pname ]
local pp = " "
if ppos then
pp = " POS " .. minetest.pos_to_string ( ppos )
end
2017-02-02 21:14:20 +01:00
local form = " size[10,10]button[0,0;2,1;run;Run InitCode]button[2,0;2,1;cls;Clear S] "
2017-02-03 15:40:44 +01:00
.. " button[4,0;2,1;save;Save] button[6,0;2,1;del;Delete Env.] field[8.1,0.5;2,1;punchpos;Last punched position; " .. pp .. " ] "
.. " textarea[0.2,1;10,10;code;Environment initialization code; " .. minetest.formspec_escape ( code ) .. " ] "
2017-02-02 21:14:20 +01:00
.. " label[0,9.8; " .. err .. " ] "
return form
end
core.register_chatcommand ( " env_setup " , {
params = " <environment name> " ,
description = " Set up and modify AdvTrains LuaAutomation environment " ,
privs = { atlatc = true } ,
func = function ( name , param )
local env = atlatc.envs [ param ]
if not env then return false , " Invalid environment name! " end
2017-02-03 15:40:44 +01:00
minetest.show_formspec ( name , " atlatc_envsetup_ " .. param , get_init_form ( env , name ) )
2017-02-02 21:14:20 +01:00
return true
end ,
} )
core.register_chatcommand ( " env_create " , {
params = " <environment name> " ,
description = " Create an AdvTrains LuaAutomation environment " ,
privs = { atlatc = true } ,
func = function ( name , param )
if not param or param == " " then return false , " Name required! " end
if atlatc.envs [ param ] then return false , " Environment already exists! " end
atlatc.envs [ param ] = atlatc.env_new ( param )
return true , " Created environment ' " .. param .. " '. Use '/env_setup " .. param .. " ' to define global initialization code, or start building LuaATC components! "
end ,
} )
minetest.register_on_player_receive_fields ( function ( player , formname , fields )
local pname = player : get_player_name ( )
if not minetest.check_player_privs ( pname , { atlatc = true } ) then return end
local envname = string.match ( formname , " ^atlatc_delconfirm_(.+)$ " )
if envname and fields.sure == " YES " then
atlatc.envs [ envname ] = nil
minetest.chat_send_player ( pname , " Environment deleted! " )
return
end
envname = string.match ( formname , " ^atlatc_envsetup_(.+)$ " )
if not envname then return end
local env = atlatc.envs [ envname ]
if not env then return end
if fields.del then
minetest.show_formspec ( pname , " atlatc_delconfirm_ " .. envname , " field[sure; " .. minetest.formspec_escape ( " SURE TO DELETE ENVIRONMENT " .. envname .. " ? Type YES (all uppercase) to continue or just quit form to cancel. " ) .. " ;] " )
return
end
env.init_err = nil
if fields.code then
env.init_code = fields.code
end
if fields.run then
env : run_initcode ( )
2017-02-03 15:40:44 +01:00
minetest.show_formspec ( pname , formname , get_init_form ( env , pname ) )
2017-02-02 21:14:20 +01:00
end
end )