From 5dae1fb667364c5ba1e7ee9a4b779d29216db6e5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 27 Sep 2014 19:31:35 -0400 Subject: [PATCH] Fixes pressure regulator flow rate reporting Fixes the pressure regulator's reported flow rate not being set to 0 when no gas could be transferred. --- .../components/binary_devices/passive_gate.dm | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index d714d7ce1f9..773cacac386 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -62,7 +62,8 @@ if (REGULATE_OUTPUT) pressure_delta = target_pressure - output_starting_pressure - var/flowing_old = flowing + //-1 if pump_gas() did not move any gas, >= 0 otherwise + var/returnval = -1 if((regulate_mode == REGULATE_NONE || pressure_delta > 0.01) && (air1.temperature > 0 || air2.temperature > 0)) //since it's basically a valve, it makes sense to check both temperatures flowing = 1 @@ -82,20 +83,22 @@ transfer_moles = min(transfer_moles, pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)) //pump_gas() will return a negative number if no flow occurred - var/flow = pump_gas(src, air1, air2, transfer_moles, available_power=0) //available_power=0 means we only move gas if it would flow naturally - - if (flow >= 0) - if(network1) - network1.update = 1 - - if(network2) - network2.update = 1 - else + returnval = pump_gas(src, air1, air2, transfer_moles, available_power=0) //available_power=0 means we only move gas if it would flow naturally + + if (returnval < 0) flowing = 0 last_flow_rate = 0 + else + if(network1) + network1.update = 1 + + if(network2) + network2.update = 1 + + if (!last_flow_rate) + flowing = 0 - if (flowing != flowing_old) - update_icon() + update_icon() //Radio remote control