From 265c46be7de0da696c4382ba26356e1483218eb3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 5 Sep 2014 14:45:49 -0400 Subject: [PATCH] Readds powered pump to air injector --- .../components/unary/outlet_injector.dm | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index fb32ade3d28..138c3fd40fe 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -12,8 +12,8 @@ desc = "Passively injects air into its surroundings. Has a valve attached to it that can control flow rate." use_power = 1 - idle_power_usage = 5 //internal circuitry - var/inject_power = 15000 //15000 kW ~ 20 HP + idle_power_usage = 150 //internal circuitry, friction losses and stuff + active_power_usage = 15000 //This also doubles as a measure of how powerful the pump is, in Watts. 15000 W ~ 20 HP var/on = 0 var/injecting = 0 @@ -54,26 +54,28 @@ ..() injecting = 0 - if(!on) //only uses power when injecting - return 0 + if((stat & (NOPOWER|BROKEN)) || !on) + update_use_power(0) //usually we get here because a player turned a pump off - definitely want to update. + last_flow_rate = 0 + return + var/power_draw = -1 var/datum/gas_mixture/environment = loc.return_air() - + if(environment && air_contents.temperature > 0) - var/air_temperature = environment.temperature? environment.temperature : air_contents.temperature - var/pressure_delta = air_contents.return_pressure() - environment.return_pressure() - var/output_volume = environment.volume * environment.group_multiplier - - if (pressure_delta > 0.01) - var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION) - transfer_moles = min(transfer_moles, (volume_rate/air_contents.volume)*air_contents.total_moles) //apply flow rate limit - - var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) - loc.assume_air(removed) - - if(network) - network.update = 1 - + var/transfer_moles = (volume_rate/air_contents.volume)*air_contents.total_moles //apply flow rate limit + power_draw = pump_gas(src, air_contents, environment, transfer_moles, active_power_usage) + + if (power_draw < 0) + //update_use_power(0) + use_power = 0 //don't force update - easier on CPU + last_flow_rate = 0 + else + handle_power_draw(power_draw) + + if(network) + network.update = 1 + return 1 /obj/machinery/atmospherics/unary/outlet_injector/proc/inject() @@ -87,7 +89,7 @@ injecting = 1 if(air_contents.temperature > 0) - var/power_used = pump_gas(src, air_contents, environment, air_contents.total_moles, inject_power) + var/power_used = pump_gas(src, air_contents, environment, air_contents.total_moles, active_power_usage) use_power(power_used) if(network)