mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-14 10:53:42 +00:00
85 lines
2.4 KiB
Plaintext
85 lines
2.4 KiB
Plaintext
/obj/machinery/computer/atmos_alert
|
|
name = "atmospheric alert console"
|
|
desc = "Used to monitor the station's air alarms."
|
|
circuit = /obj/item/weapon/circuitboard/atmos_alert
|
|
icon_screen = "alert:0"
|
|
icon_keyboard = "atmos_key"
|
|
var/list/priority_alarms = list()
|
|
var/list/minor_alarms = list()
|
|
var/receive_frequency = 1437
|
|
var/datum/radio_frequency/radio_connection
|
|
|
|
/obj/machinery/computer/atmos_alert/initialize()
|
|
..()
|
|
set_frequency(receive_frequency)
|
|
|
|
/obj/machinery/computer/atmos_alert/Destroy()
|
|
if(SSradio)
|
|
SSradio.remove_object(src, receive_frequency)
|
|
return ..()
|
|
|
|
/obj/machinery/computer/atmos_alert/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
|
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
|
|
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
|
if(!ui)
|
|
ui = new(user, src, ui_key, "atmos_alert", name, 350, 300, master_ui, state)
|
|
ui.open()
|
|
|
|
/obj/machinery/computer/atmos_alert/ui_data(mob/user)
|
|
var/list/data = list()
|
|
|
|
data["priority"] = list()
|
|
for(var/zone in priority_alarms)
|
|
data["priority"] += zone
|
|
data["minor"] = list()
|
|
for(var/zone in minor_alarms)
|
|
data["minor"] += zone
|
|
|
|
return data
|
|
|
|
/obj/machinery/computer/atmos_alert/ui_act(action, params)
|
|
if(..())
|
|
return
|
|
switch(action)
|
|
if("clear")
|
|
var/zone = params["zone"]
|
|
if(zone in priority_alarms)
|
|
usr << "Priority alarm for [zone] cleared."
|
|
priority_alarms -= zone
|
|
. = TRUE
|
|
if(zone in minor_alarms)
|
|
usr << "Minor alarm for [zone] cleared."
|
|
minor_alarms -= zone
|
|
. = TRUE
|
|
update_icon()
|
|
|
|
/obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency)
|
|
SSradio.remove_object(src, receive_frequency)
|
|
receive_frequency = new_frequency
|
|
radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA)
|
|
|
|
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
|
|
if(!signal || signal.encryption) return
|
|
|
|
var/zone = signal.data["zone"]
|
|
var/severity = signal.data["alert"]
|
|
|
|
if(!zone || !severity) return
|
|
|
|
minor_alarms -= zone
|
|
priority_alarms -= zone
|
|
if(severity == "severe")
|
|
priority_alarms += zone
|
|
else if (severity == "minor")
|
|
minor_alarms += zone
|
|
update_icon()
|
|
return
|
|
|
|
/obj/machinery/computer/atmos_alert/update_icon()
|
|
..()
|
|
if(stat & (NOPOWER|BROKEN))
|
|
return
|
|
if(priority_alarms.len)
|
|
overlays += "alert:2"
|
|
else if(minor_alarms.len)
|
|
overlays += "alert:1" |