Assorted atmos performance improvements. (#27966)

This commit is contained in:
Charlie Nolan
2025-01-20 15:18:32 +00:00
committed by GitHub
parent 8954a8e401
commit fdbd2b2050
13 changed files with 271 additions and 230 deletions
+2 -2
View File
@@ -61,8 +61,8 @@
var/list/firealarms
var/firedoors_last_closed_on = 0
/// The air alarm to use for atmos_alert consoles
var/obj/machinery/alarm/master_air_alarm
/// The air alarms present in this area.
var/list/air_alarms = list()
/// The list of vents in our area.
var/list/obj/machinery/atmospherics/unary/vent_pump/vents = list()
/// The list of scrubbers in our area.
+22 -19
View File
@@ -19,26 +19,29 @@
parent_area_type = machine_area.get_top_parent_type()
/obj/machinery/computer/atmos_alert/process()
// This is relatively cheap because the areas list is pretty small
for(var/obj/machinery/alarm/air_alarm as anything in GLOB.air_alarms)
if(!((get_area(air_alarm)).type in typesof(parent_area_type)) || air_alarm.z != z)
continue // Not an area we monitor, or outside our z-level
if(!air_alarm.report_danger_level)
alarm_cache = list()
alarm_cache["priority"] = list()
alarm_cache["minor"] = list()
alarm_cache["mode"] = list()
for(var/area/A in GLOB.all_areas)
if(!istype(A, parent_area_type))
continue
switch(air_alarm.alarm_area.atmosalm)
if(ATMOS_ALARM_DANGER)
alarm_cache["priority"] |= air_alarm.alarm_area.name
alarm_cache["minor"] -= air_alarm.alarm_area.name
if(ATMOS_ALARM_WARNING)
alarm_cache["priority"] -= air_alarm.alarm_area.name
alarm_cache["minor"] |= air_alarm.alarm_area.name
else
alarm_cache["priority"] -= air_alarm.alarm_area.name
alarm_cache["minor"] -= air_alarm.alarm_area.name
if(air_alarm.mode == AALARM_MODE_FILTERING)
alarm_cache["mode"] -= air_alarm.alarm_area.name
else
alarm_cache["mode"][air_alarm.alarm_area.name] = GLOB.aalarm_modes["[air_alarm.mode]"]
var/alarm_level = null
for(var/obj/machinery/alarm/air_alarm in A.air_alarms)
if(!istype(air_alarm))
continue
if(!air_alarm.report_danger_level)
continue
switch(air_alarm.alarm_area.atmosalm)
if(ATMOS_ALARM_DANGER)
alarm_level = "priority"
if(ATMOS_ALARM_WARNING)
if(isnull(alarm_level))
alarm_level = "minor"
if(!isnull(alarm_level))
alarm_cache[alarm_level] += A.name
if(air_alarm.mode != AALARM_MODE_FILTERING)
alarm_cache["mode"][A.name] = GLOB.aalarm_modes["[air_alarm.mode]"]
update_icon()
+1 -7
View File
@@ -85,13 +85,7 @@
/// The effect used to render a pressure overlay from this tile.
var/obj/effect/pressure_overlay/pressure_overlay
var/list/milla_atmos_airtight = list(FALSE, FALSE, FALSE, FALSE)
var/list/milla_superconductivity = list(
OPEN_HEAT_TRANSFER_COEFFICIENT,
OPEN_HEAT_TRANSFER_COEFFICIENT,
OPEN_HEAT_TRANSFER_COEFFICIENT,
OPEN_HEAT_TRANSFER_COEFFICIENT)
var/list/milla_data = list()
var/list/milla_data = null
new_attack_chain = TRUE