From c55374cdfadd9cc04db63908c7ac9cf8ec6aff21 Mon Sep 17 00:00:00 2001 From: thetaepsilon-gamedev Date: Mon, 16 Oct 2017 23:39:30 +0100 Subject: devices.lua: convert pump to use new directional flow class --- devices.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'devices.lua') diff --git a/devices.lua b/devices.lua index 5203bf3..f1d1dad 100644 --- a/devices.lua +++ b/devices.lua @@ -161,11 +161,10 @@ for s in ipairs(states) do local fdir = node.param2 minetest.swap_node(pos, { name = "pipeworks:pump_"..states[3-s], param2 = fdir }) end, - -- FIXME - does this preserve metadata? need to look at this on_rotate = screwdriver.rotate_simple }) - -- FIXME: currently a simple flow device, but needs directionality checking - new_flow_logic_register.simple(pumpname) + -- FIXME: this currently assumes that pumps can only rotate around the fixed axis pointing Y+. + new_flow_logic_register.directional(pumpname, function(node) return { {x=0,y=1,z=0} } end) local pump_drive = 4 if states[s] ~= "off" then new_flow_logic_register.intake_simple(pumpname, pump_drive) -- cgit v1.2.3 From a69c5e24a9771dc1818a01092730104c62703908 Mon Sep 17 00:00:00 2001 From: thetaepsilon-gamedev Date: Tue, 17 Oct 2017 23:42:05 +0100 Subject: devices.lua: implement directionfn for pump registration --- devices.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'devices.lua') diff --git a/devices.lua b/devices.lua index f1d1dad..d9edcad 100644 --- a/devices.lua +++ b/devices.lua @@ -163,13 +163,22 @@ for s in ipairs(states) do end, on_rotate = screwdriver.rotate_simple }) + -- FIXME: this currently assumes that pumps can only rotate around the fixed axis pointing Y+. - new_flow_logic_register.directional(pumpname, function(node) return { {x=0,y=1,z=0} } end) + -- TODO: these directionality functions should be behind a helper so the fountainhead can use something similar. + local upwards = {x=0,y=1,z=0} + local neighbourfn = function(node) return { upwards } end + local directionfn = function(node, direction) + return vector.equals(direction, upwards) + end + new_flow_logic_register.directional(pumpname, neighbourfn, directionfn) local pump_drive = 4 if states[s] ~= "off" then new_flow_logic_register.intake_simple(pumpname, pump_drive) end + + local nodename_valve_empty = "pipeworks:valve_"..states[s].."_empty" minetest.register_node(nodename_valve_empty, { description = "Valve", -- cgit v1.2.3 From 7f7dfb79d5f81dfe09920b8c872e1a11f22bff43 Mon Sep 17 00:00:00 2001 From: thetaepsilon-gamedev Date: Wed, 18 Oct 2017 21:19:59 +0100 Subject: pressure logic/flowable node registry: move pump directionality code to dedicated fixed vertical helper --- devices.lua | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'devices.lua') diff --git a/devices.lua b/devices.lua index d9edcad..6dd9617 100644 --- a/devices.lua +++ b/devices.lua @@ -165,13 +165,7 @@ for s in ipairs(states) do }) -- FIXME: this currently assumes that pumps can only rotate around the fixed axis pointing Y+. - -- TODO: these directionality functions should be behind a helper so the fountainhead can use something similar. - local upwards = {x=0,y=1,z=0} - local neighbourfn = function(node) return { upwards } end - local directionfn = function(node, direction) - return vector.equals(direction, upwards) - end - new_flow_logic_register.directional(pumpname, neighbourfn, directionfn) + new_flow_logic_register.directional_vertical_fixed(pumpname, true) local pump_drive = 4 if states[s] ~= "off" then new_flow_logic_register.intake_simple(pumpname, pump_drive) -- cgit v1.2.3 From 3a85152e4d4b6aa192e80bddfad174734ba737d5 Mon Sep 17 00:00:00 2001 From: thetaepsilon-gamedev Date: Wed, 18 Oct 2017 21:44:36 +0100 Subject: devices.lua: make fountainheads directional using fixed vertical helper --- devices.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'devices.lua') diff --git a/devices.lua b/devices.lua index 6dd9617..a2c0c80 100644 --- a/devices.lua +++ b/devices.lua @@ -674,8 +674,8 @@ minetest.register_node(nodename_fountain_loaded, { drop = "pipeworks:fountainhead", on_rotate = false }) -new_flow_logic_register.simple(nodename_fountain_empty) -new_flow_logic_register.simple(nodename_fountain_loaded) +new_flow_logic_register.directional_vertical_fixed(nodename_fountain_empty, false) +new_flow_logic_register.directional_vertical_fixed(nodename_fountain_loaded, false) local fountain_upper = 1.0 local fountain_lower = 1.0 local fountain_neighbours={{x=0, y=1, z=0}} -- cgit v1.2.3 From fd4bd8eadcdbd12d119b69b591bfe66a238f14f8 Mon Sep 17 00:00:00 2001 From: thetaepsilon-gamedev Date: Thu, 19 Oct 2017 12:30:28 +0100 Subject: devices.lua: make flow sensor use the horizontally rotating flowable class --- devices.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'devices.lua') diff --git a/devices.lua b/devices.lua index a2c0c80..7dad816 100644 --- a/devices.lua +++ b/devices.lua @@ -523,9 +523,8 @@ minetest.register_node(nodename_sensor_loaded, { mesecons = pipereceptor_on, on_rotate = pipeworks.fix_after_rotation }) --- FIXME requires-directionality -new_flow_logic_register.simple(nodename_sensor_empty) -new_flow_logic_register.simple(nodename_sensor_loaded) +new_flow_logic_register.directional_horizonal_rotate(nodename_sensor_empty) +new_flow_logic_register.directional_horizonal_rotate(nodename_sensor_loaded) -- activate flow sensor at roughly half the pressure pumps drive pipes local sensor_pressure_set = { { nodename_sensor_empty, 0.0 }, { nodename_sensor_loaded, 1.0 } } new_flow_logic_register.transition_simple_set(sensor_pressure_set, { mesecons=pipeworks.mesecons_rules }) -- cgit v1.2.3 From 9df0ec7edb55ba443acc68df9ed63fdd53c66bfa Mon Sep 17 00:00:00 2001 From: thetaepsilon-gamedev Date: Thu, 19 Oct 2017 13:05:16 +0100 Subject: devices.lua: convert entry panel and valve to horizontal rotation flowable class --- devices.lua | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'devices.lua') diff --git a/devices.lua b/devices.lua index 7dad816..093137e 100644 --- a/devices.lua +++ b/devices.lua @@ -215,8 +215,7 @@ for s in ipairs(states) do -- only register flow logic for the "on" ABM. -- this means that the off state automatically blocks flow by not participating in the balancing operation. if states[s] ~= "off" then - -- FIXME: this still a simple device, directionality not honoured - new_flow_logic_register.simple(nodename_valve_empty) + new_flow_logic_register.directional_horizonal_rotate(nodename_valve_empty) end end @@ -264,7 +263,7 @@ minetest.register_node(nodename_valve_loaded, { -- right-clicking a "loaded" valve (becoming an off valve) then turning it on again will yield a on-but-empty valve, -- but the flow logic will still function. -- thus under new_flow_logic this serves as a kind of migration. -new_flow_logic_register.simple(nodename_valve_loaded) +new_flow_logic_register.directional_horizonal_rotate(nodename_valve_loaded) -- grating @@ -438,10 +437,9 @@ minetest.register_node(nodename_panel_loaded, { drop = "pipeworks:entry_panel_empty", on_rotate = pipeworks.fix_after_rotation }) --- FIXME requires-directionality -- TODO: AFAIK the two panels have no visual difference, so are redundant under new flow logic - alias? -new_flow_logic_register.simple(nodename_panel_empty) -new_flow_logic_register.simple(nodename_panel_loaded) +new_flow_logic_register.directional_horizonal_rotate(nodename_panel_empty) +new_flow_logic_register.directional_horizonal_rotate(nodename_panel_loaded) -- cgit v1.2.3