mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Optimizes pipe network updating
This commit is contained in:
@@ -120,7 +120,7 @@
|
||||
|
||||
power_draw = pump_gas(air1, environment, transfer_moles, active_power_usage)
|
||||
|
||||
if(network1)
|
||||
if(power_draw >= 0 && network1)
|
||||
network1.update = 1
|
||||
else //external -> internal
|
||||
if (node2 && (environment.temperature || air2.temperature))
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
power_draw = pump_gas(environment, air2, transfer_moles, active_power_usage)
|
||||
|
||||
if(network2)
|
||||
if(power_draw >= 0 && network2)
|
||||
network2.update = 1
|
||||
|
||||
if (power_draw < 0)
|
||||
|
||||
@@ -74,7 +74,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
var/power_draw = -1
|
||||
var/pressure_delta = target_pressure - air2.return_pressure()
|
||||
|
||||
if(pressure_delta > 0.01 && (air1.temperature > 0 || air2.temperature > 0))
|
||||
if(pressure_delta > 0.01 && air1.temperature > 0)
|
||||
//Figure out how much gas to transfer to meet the target pressure.
|
||||
var/air_temperature = (air2.temperature > 0)? air2.temperature : air1.temperature
|
||||
var/output_volume = air2.volume + (network2? network2.volume : 0)
|
||||
@@ -84,12 +84,6 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
power_draw = pump_gas(air1, air2, transfer_moles, active_power_usage)
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
|
||||
if (power_draw < 0)
|
||||
//update_use_power(0)
|
||||
use_power = 0 //don't force update - easier on CPU
|
||||
@@ -98,6 +92,12 @@ Thus, the two variables affect pump operation are set in New():
|
||||
else
|
||||
last_power_draw = handle_power_draw(power_draw)
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
//Radio remote control
|
||||
@@ -213,7 +213,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
target_pressure = max_pressure_setting
|
||||
if ("set")
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-[max_pressure_setting]kPa)","Pressure control",src.target_pressure) as num
|
||||
src.target_pressure = max(0, min(max_pressure_setting, new_pressure))
|
||||
src.target_pressure = between(0, new_pressure, max_pressure_setting)
|
||||
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
@@ -77,6 +77,13 @@
|
||||
if (transfer_moles > MINUMUM_MOLES_TO_FILTER)
|
||||
power_draw = filter_gas_multi(filtering_outputs, input_air, output_air, 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(input.network)
|
||||
input.network.update = 1
|
||||
if(output.network)
|
||||
@@ -85,13 +92,6 @@
|
||||
if(P.network)
|
||||
P.network.update = 1
|
||||
|
||||
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)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
|
||||
@@ -116,13 +116,6 @@
|
||||
if (transfer_moles > MINUMUM_MOLES_TO_FILTER)
|
||||
power_draw = mix_gas(mixing_inputs, output, transfer_moles, active_power_usage)
|
||||
|
||||
for(var/datum/omni_port/P in inputs)
|
||||
if(P.concentration && P.network)
|
||||
P.network.update = 1
|
||||
|
||||
if(output.network)
|
||||
output.network.update = 1
|
||||
|
||||
if (power_draw < 0)
|
||||
//update_use_power(0)
|
||||
use_power = 0 //don't force update - easier on CPU
|
||||
@@ -130,6 +123,13 @@
|
||||
else
|
||||
handle_power_draw(power_draw)
|
||||
|
||||
for(var/datum/omni_port/P in inputs)
|
||||
if(P.concentration && P.network)
|
||||
P.network.update = 1
|
||||
|
||||
if(output.network)
|
||||
output.network.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/omni/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
|
||||
@@ -171,9 +171,6 @@
|
||||
|
||||
power_draw = pump_gas(environment, air_contents, transfer_moles, active_power_usage)
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
|
||||
if (power_draw < 0)
|
||||
last_power_draw = 0
|
||||
last_flow_rate = 0
|
||||
@@ -181,6 +178,8 @@
|
||||
use_power = 0 //don't force update - easier on CPU
|
||||
else
|
||||
last_power_draw = handle_power_draw(power_draw)
|
||||
if(network)
|
||||
network.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
var/power_draw = -1
|
||||
if(scrubbing)
|
||||
//limit flow rate from turfs
|
||||
var/transfer_moles = min(environment.total_moles, environment.total_moles*MAX_FILTER_FLOWRATE/environment.volume) //group_multiplier gets divided out here
|
||||
var/transfer_moles = min(environment.total_moles, environment.total_moles*MAX_SCRUBBER_FLOWRATE/environment.volume) //group_multiplier gets divided out here
|
||||
|
||||
power_draw = scrub_gas(scrubbing_gas, environment, air_contents, transfer_moles, active_power_usage)
|
||||
else //Just siphon all air
|
||||
|
||||
@@ -830,10 +830,8 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
|
||||
/*
|
||||
Atmos Machinery
|
||||
*/
|
||||
|
||||
//Note: anything higher than these values has no effect at the moment.
|
||||
#define MAX_SIPHON_FLOWRATE 2500 //L/s This can be used to balance how fast a room is siphoned.
|
||||
#define MAX_FILTER_FLOWRATE 200 //L/s
|
||||
#define MAX_SIPHON_FLOWRATE 2500 //L/s This can be used to balance how fast a room is siphoned. Anything higher than CELL_VOLUME has no effect.
|
||||
#define MAX_SCRUBBER_FLOWRATE 200 //L/s Max flow rate when scrubbing from a turf.
|
||||
|
||||
//These balance how easy or hard it is to create huge pressure gradients with pumps and filters. Lower values means it takes longer to create large pressures differences.
|
||||
//Has no effect on pumping gasses from high pressure to low, only from low to high. Must be between 0 and 1.
|
||||
@@ -844,7 +842,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
|
||||
#define MINUMUM_MOLES_TO_PUMP 0.01
|
||||
#define MINUMUM_MOLES_TO_FILTER 0.1
|
||||
|
||||
//The flow rate/effectiveness of various atmos devices is limited by their internal volume, so these will control maximum flow rates in L/s
|
||||
//The flow rate/effectiveness of various atmos devices is limited by their internal volume, so for many atmos devices these will control maximum flow rates in L/s
|
||||
#define ATMOS_DEFAULT_VOLUME_PUMP 200 //L
|
||||
#define ATMOS_DEFAULT_VOLUME_FILTER 200 //L
|
||||
#define ATMOS_DEFAULT_VOLUME_MIXER 200 //L
|
||||
|
||||
Reference in New Issue
Block a user