From d4c24bc82499552d9a6a9b8507bc168fafe4591f Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sun, 9 Mar 2014 17:30:43 +1300 Subject: [PATCH 1/2] Airlock sensor optimization Airlock sensors will now store the previous cycles pressure value, then compare it with the current pressure next time it runs. If the pressure hasn't changed it will skip sending a status update. --- code/game/machinery/airlock_control.dm | 27 ++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index 6496faade02..c4f92407274 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -90,7 +90,7 @@ obj/machinery/door/airlock/Bumped(atom/AM) radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) return - + obj/machinery/door/airlock/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) if(new_frequency) @@ -131,7 +131,7 @@ obj/machinery/airlock_sensor var/on = 1 var/alert = 0 - + var/previousPressure obj/machinery/airlock_sensor/update_icon() if(on) @@ -153,21 +153,23 @@ obj/machinery/airlock_sensor/attack_hand(mob/user) obj/machinery/airlock_sensor/process() if(on) - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = id_tag - signal.data["timestamp"] = world.time - var/datum/gas_mixture/air_sample = return_air() - var/pressure = round(air_sample.return_pressure(),0.1) - alert = (pressure < ONE_ATMOSPHERE*0.8) - signal.data["pressure"] = num2text(pressure) + if(pressure != previousPressure) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.data["tag"] = id_tag + signal.data["timestamp"] = world.time + signal.data["pressure"] = num2text(pressure) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - update_icon() + previousPressure = pressure + + alert = (pressure < ONE_ATMOSPHERE*0.8) + + update_icon() obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) @@ -179,6 +181,7 @@ obj/machinery/airlock_sensor/initialize() obj/machinery/airlock_sensor/New() ..() + update_icon() if(radio_controller) set_frequency(frequency) From d1343c09ab845d59915b655b059ff8e24e86c11b Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sun, 9 Mar 2014 21:30:40 +1300 Subject: [PATCH 2/2] Airlock sensor tweak Because why not squeeze every last drop of performance out of it? --- code/game/machinery/airlock_control.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index c4f92407274..a5de183a921 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -156,7 +156,7 @@ obj/machinery/airlock_sensor/process() var/datum/gas_mixture/air_sample = return_air() var/pressure = round(air_sample.return_pressure(),0.1) - if(pressure != previousPressure) + if(abs(pressure - previousPressure) > 0.001 || previousPressure == null) var/datum/signal/signal = new signal.transmission_method = 1 //radio signal signal.data["tag"] = id_tag @@ -181,8 +181,6 @@ obj/machinery/airlock_sensor/initialize() obj/machinery/airlock_sensor/New() ..() - update_icon() - if(radio_controller) set_frequency(frequency)