From 4974bff509af3ff58d11e208c652cbde79af2de7 Mon Sep 17 00:00:00 2001 From: paly2 Date: Sat, 12 Dec 2015 16:37:53 +0100 Subject: [PATCH] Add the "injector controller" node --- moremesecons_injector_controller/depends.txt | 1 + moremesecons_injector_controller/init.lua | 89 ++++++++++++++++++ .../moremesecons_injector_controller_off.png | Bin 0 -> 238 bytes .../moremesecons_injector_controller_on.png | Bin 0 -> 230 bytes .../moremesecons_injector_controller_side.png | Bin 0 -> 114 bytes 5 files changed, 90 insertions(+) create mode 100644 moremesecons_injector_controller/depends.txt create mode 100644 moremesecons_injector_controller/init.lua create mode 100644 moremesecons_injector_controller/textures/moremesecons_injector_controller_off.png create mode 100644 moremesecons_injector_controller/textures/moremesecons_injector_controller_on.png create mode 100644 moremesecons_injector_controller/textures/moremesecons_injector_controller_side.png diff --git a/moremesecons_injector_controller/depends.txt b/moremesecons_injector_controller/depends.txt new file mode 100644 index 0000000..acaa924 --- /dev/null +++ b/moremesecons_injector_controller/depends.txt @@ -0,0 +1 @@ +mesecons diff --git a/moremesecons_injector_controller/init.lua b/moremesecons_injector_controller/init.lua new file mode 100644 index 0000000..3762dc1 --- /dev/null +++ b/moremesecons_injector_controller/init.lua @@ -0,0 +1,89 @@ +local injector_controller_get_output_rules = function(node) + print("output rules") + local rules = {{x = 0, y = 0, z = 1}} + for i = 0, node.param2 do + rules = mesecon.rotate_rules_left(rules) + end + table.foreach(rules, print) + return rules +end + +local injector_controller_get_input_rules = function(node) + local rules = {{x = 0, y = 0, z = -1}, + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}} + for i = 0, node.param2 do + rules = mesecon.rotate_rules_left(rules) + end + return rules +end + +local start_timer = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(1) +end +local stop_timer = function(pos, node) + local timer = minetest.get_node_timer(pos) + timer:stop() + mesecon.receptor_off(pos, injector_controller_get_output_rules(node)) + minetest.swap_node(pos, {name="moremesecons_injector_controller:injector_controller_off", param2=node.param2}) +end + +local on_timer = function(pos) + local node = minetest.get_node(pos) + if(mesecon.flipstate(pos, node) == "on") then + mesecon.receptor_on(pos, injector_controller_get_output_rules(node)) + else + mesecon.receptor_off(pos, injector_controller_get_output_rules(node)) + end + start_timer(pos) +end + +mesecon.register_node("moremesecons_injector_controller:injector_controller", { + description="Injector Controller", + drawtype = "nodebox", + inventory_image = "moremesecons_injector_controller_off.png", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = {{-8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }}, + }, + on_timer = on_timer, + on_construct = start_timer, +},{ + tiles = {"moremesecons_injector_controller_off.png", "moremesecons_injector_controller_side.png", "moremesecons_injector_controller_side.png"}, + groups = {dig_immediate=2}, + mesecons = { + receptor = { + state = mesecon.state.off, + rules = injector_controller_get_output_rules + }, + effector = { + rules = injector_controller_get_input_rules, + action_on = start_timer, + action_off = stop_timer, + } + } +},{ + tiles = {"moremesecons_injector_controller_on.png", "moremesecons_injector_controller_side.png", "moremesecons_injector_controller_side.png"}, + groups = {dig_immediate=2, not_in_creative_inventory=1}, + mesecons = { + receptor = { + state = mesecon.state.on, + rules = injector_controller_get_output_rules + }, + effector = { + rules = injector_controller_get_input_rules, + action_off = stop_timer, + action_on = start_timer, + } + } +}) + +minetest.register_craft({ + output = "mesecons_blinkyplant:blinky_plant_off 1", + recipe = { {"","group:mesecon_conductor_craftable",""}, + {"","group:mesecon_conductor_craftable",""}, + {"default:sapling","default:sapling","default:sapling"}} +}) diff --git a/moremesecons_injector_controller/textures/moremesecons_injector_controller_off.png b/moremesecons_injector_controller/textures/moremesecons_injector_controller_off.png new file mode 100644 index 0000000000000000000000000000000000000000..6433b56b2e525bcab2cbd8b67cee041df3a13861 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J`WGSvW0E#Jw>39WQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyua zhNp{Th{pM;7Z36tP~c&9*q+3(?L}JTg7FcJi%XBAFFL#pn3bg<=LX;N0`dJVxn#b8r)Je*j~F~ ei)_MehC1`F@&SU{Gxh-OWbkzLb6Mw<&;$T|y-e`{ literal 0 HcmV?d00001 diff --git a/moremesecons_injector_controller/textures/moremesecons_injector_controller_on.png b/moremesecons_injector_controller/textures/moremesecons_injector_controller_on.png new file mode 100644 index 0000000000000000000000000000000000000000..96caa12ef7b61b166afa7b103cdbe7c2f20f3dd0 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J`WGSl5ocLV0FMhJw4NZ$Nk>pEyua zf~SjPh{pM;7cX)$DDp60sMyi6<0X^$j6E>=jIy6vZF{{pp10WTLbtyubcG5`A| z@`eSbY!{BPwHG$ttvF~D8FwL{iF;Db-?`UyqEi}mi!w8-4`%H?aBthei)IaZ%rkCy WNpkR%y|V_|#o+1c=d#Wzp$P!BVN68; literal 0 HcmV?d00001 diff --git a/moremesecons_injector_controller/textures/moremesecons_injector_controller_side.png b/moremesecons_injector_controller/textures/moremesecons_injector_controller_side.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7bbc6eef23853dff645e4cfdb145b3a8005c36 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAI14-?iy0Vr{1_Oxg&9kAckTxY zvX^-Jy0YKr;o;|JIuwv&3ltLcba4!kxSagwd;`}E3AZf_3