Add caching to air alarms, apcs and power monitoring computers

This commit is contained in:
Markolie
2015-08-11 15:56:37 +02:00
parent 09fc2bc54f
commit ebdfeae887
9 changed files with 96 additions and 39 deletions
+1 -8
View File
@@ -31,14 +31,7 @@
/datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
var/data[0]
var/alarms[0]
// TODO: Move these to a cache, similar to cameras
for(var/obj/machinery/alarm/alarm in sortAtom((monitored_alarms.len ? monitored_alarms : machines)))
if(!monitored_alarms.len && alarm.z != ZLEVEL_STATION && alarm.z != ZLEVEL_ASTEROID)
continue
alarms[++alarms.len] = alarm.get_nano_data_console()
data["alarms"] = alarms
data["alarms"] = air_alarm_repository.air_alarm_data(monitored_alarms)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
+5 -22
View File
@@ -13,34 +13,17 @@
/datum/nano_module/power_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
var/data[0]
var/pMonData[0]
var/apcData[0]
data["powermonitor"] = powermonitor
if(select_monitor)
data["select_monitor"] = 1
for(var/obj/machinery/computer/monitor/pMon in world)
if( !(pMon.stat & (NOPOWER|BROKEN)) )
pMonData[++pMonData.len] = list ("Name" = pMon.name, "ref" = "\ref[pMon]")
data["powermonitors"] = powermonitor_repository.powermonitor_data()
data["powermonitors"] = pMonData
if (powermonitor && !isnull(powermonitor.powernet))
if (powermonitor && !isnull(powermonitor.powernet))
data["poweravail"] = powermonitor.powernet.avail
data["powerload"] = num2text(powermonitor.powernet.viewload,10)
var/list/L = list()
for(var/obj/machinery/power/terminal/term in powermonitor.powernet.nodes)
if(istype(term.master, /obj/machinery/power/apc))
var/obj/machinery/power/apc/A = term.master
L += A
var/list/Status = list(0,0,1,1) // Status: off, auto-off, on, auto-on
var/list/chg = list(0,1,1) // Charging: nope, charging, full
for(var/obj/machinery/power/apc/A in L)
apcData[++apcData.len] = list("Name" = html_encode(A.area.name), "Equipment" = Status[A.equipment+1], "Lights" = Status[A.lighting+1], "Environment" = Status[A.environ+1], "CellPct" = A.cell ? round(A.cell.percent(),1) : -1, "CellStatus" = A.cell ? chg[A.charging+1] : 0)
data["apcs"] = apcData
data["powerload"] = num2text(powermonitor.powernet.viewload,10)
data["apcs"] = apc_repository.apc_data(powermonitor)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "power_monitor.tmpl", "Power Monitoring Console", 800, 700, state = state)