summaryrefslogtreecommitdiff
path: root/mesecons/init.lua
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-12-08 21:56:09 +0100
committerJeija <norrepli@gmail.com>2012-12-08 21:56:09 +0100
commit00e071b695574928fce2ca56e3e8eca6ad3d35ef (patch)
tree86904b9a3729898581253989bbaf4d195ea71a53 /mesecons/init.lua
parent8578fd89c859162bda64af48826b7c1ae1c9e744 (diff)
downloadmesecons-00e071b695574928fce2ca56e3e8eca6ad3d35ef.tar
mesecons-00e071b695574928fce2ca56e3e8eca6ad3d35ef.tar.gz
mesecons-00e071b695574928fce2ca56e3e8eca6ad3d35ef.tar.bz2
mesecons-00e071b695574928fce2ca56e3e8eca6ad3d35ef.tar.xz
mesecons-00e071b695574928fce2ca56e3e8eca6ad3d35ef.zip
Cleanup, make and use util.lua, port command block and delayer to nodedef
Diffstat (limited to 'mesecons/init.lua')
-rw-r--r--mesecons/init.lua94
1 files changed, 79 insertions, 15 deletions
diff --git a/mesecons/init.lua b/mesecons/init.lua
index d980419..aa3f001 100644
--- a/mesecons/init.lua
+++ b/mesecons/init.lua
@@ -3,41 +3,105 @@
-- | \/ | |___ ____ |___ | | | | \ | |____
-- | | | | | | | | | \ | |
-- | | |___ ____| |___ |____ |____| | \| ____|
--- by Jeija, Uberi (Temperest), sfan5, VanessaE,
+-- by Jeija, Uberi (Temperest), sfan5, VanessaE
--
--
--
-- This mod adds mesecons[=minecraft redstone] and different receptors/effectors to minetest.
---
-- See the documentation on the forum for additional information, especially about crafting
--
--- For developer documentation see the Developers' section on mesecons.tk
+--
+-- For developer documentation see the Developers' section on mesecons.TK
+--
+--
+--
+--Quick draft for the mesecons array in the node's definition
+--mesecons =
+--{
+-- receptor =
+-- {
+-- state = mesecon.state.on/off
+-- rules = rules/get_rules
+-- }
+-- effector =
+-- {
+-- action_on = function
+-- action_off = function
+-- action_change = function
+-- rules = rules/get_rules
+-- }
+-- conductor =
+-- {
+-- state = mesecon.state.on/off
+-- offstate = opposite state (for state = on only)
+-- onstate = opposite state (for state = off only)
+-- rules = rules/get_rules
+-- }
+--}
-- PUBLIC VARIABLES
mesecon={} -- contains all functions and all global variables
-mesecon.actions_on={} -- Saves registered function callbacks for mesecon on
-mesecon.actions_off={} -- Saves registered function callbacks for mesecon off
-mesecon.actions_change={} -- Saves registered function callbacks for mesecon change
-mesecon.receptors={}
-mesecon.effectors={}
-mesecon.conductors={}
-
--- INCLUDE SETTINGS
+mesecon.actions_on={} -- Saves registered function callbacks for mesecon on | DEPRECATED
+mesecon.actions_off={} -- Saves registered function callbacks for mesecon off | DEPRECATED
+mesecon.actions_change={} -- Saves registered function callbacks for mesecon change | DEPRECATED
+mesecon.receptors={} -- saves all information about receptors | DEPRECATED
+mesecon.effectors={} -- saves all information about effectors | DEPRECATED
+mesecon.conductors={} -- saves all information about conductors | DEPRECATED
+
+-- Settings
dofile(minetest.get_modpath("mesecons").."/settings.lua")
---Presets (eg default rules)
+-- Presets (eg default rules)
dofile(minetest.get_modpath("mesecons").."/presets.lua");
---Internal API
+
+-- Utilities like comparing positions,
+-- adding positions and rules,
+-- mostly things that make the source look cleaner
+dofile(minetest.get_modpath("mesecons").."/util.lua");
+
+-- Internal stuff
+-- This is the most important file
+-- it handles signal transmission and basically everything else
+-- It is also responsible for managing the nodedef things,
+-- like calling action_on/off/change
dofile(minetest.get_modpath("mesecons").."/internal.lua");
---Deprecated stuff
+-- Deprecated stuff
+-- To be removed in future releases
dofile(minetest.get_modpath("mesecons").."/legacy.lua");
--- API API API API API API API API API API API API API API API API API API
+-- API
+-- these are the only functions you need to remember
+
+function mesecon:receptor_on(pos, rules)
+ rules = rules or mesecon.rules.default
+
+ for _, rule in ipairs(rules) do
+ local np = {
+ x = pos.x + rule.x,
+ y = pos.y + rule.y,
+ z = pos.z + rule.z}
+ if mesecon:rules_link(pos, np, rules) then
+ mesecon:turnon(np, pos)
+ end
+ end
+end
+function mesecon:receptor_off(pos, rules)
+ rules = rules or mesecon.rules.default
+ for _, rule in ipairs(rules) do
+ local np = {
+ x = pos.x + rule.x,
+ y = pos.y + rule.y,
+ z = pos.z + rule.z}
+ if mesecon:rules_link(pos, np, rules) and not mesecon:connected_to_pw_src(np) then
+ mesecon:turnoff(np, pos)
+ end
+ end
+end
print("[OK] mesecons")