Files
GS13NG/code/game/machinery/telecomms/computers/telemonitor.dm

106 lines
2.9 KiB
Plaintext

/*
Telecomms monitor tracks the overall trafficing of a telecommunications network
and displays a heirarchy of linked machines.
*/
/obj/machinery/computer/telecomms/monitor
name = "telecommunications monitoring console"
icon_screen = "comm_monitor"
desc = "Monitors the details of the telecommunications network it's synced with."
var/list/machinelist = list() // the machines located by the computer
var/obj/machinery/telecomms/SelectedMachine = null
var/network = "NULL" // the network to probe
var/notice = ""
circuit = /obj/item/circuitboard/computer/comm_monitor
/obj/machinery/computer/telecomms/monitor/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "TelecommsMonitor", name)
ui.open()
/obj/machinery/computer/telecomms/monitor/ui_data(mob/user)
var/list/data_out = list()
data_out["network"] = network
data_out["notice"] = notice
data_out["servers"] = list()
for(var/obj/machinery/telecomms/T in machinelist)
var/list/data = list(
name = T.name,
id = T.id,
ref = REF(T)
)
data_out["servers"] += list(data)
data_out["servers"] = sortList(data_out["servers"])
if(!SelectedMachine) //null is bad.
data_out["selected"] = null //but in js, null is good.
return data_out
data_out["selected"] = list(
name = SelectedMachine.name,
id = SelectedMachine.id,
status = SelectedMachine.on,
traffic = SelectedMachine.traffic,
netspeed = SelectedMachine.netspeed,
freq_listening = SelectedMachine.freq_listening,
long_range_link = SelectedMachine.long_range_link,
ref = REF(SelectedMachine)
)
data_out["selected_servers"] = list()
for(var/obj/machinery/telecomms/T in SelectedMachine.links)
if(!T.hide)
var/list/data = list(
name = T.name,
id = T.id,
ref = REF(T)
)
data_out["selected_servers"] += list(data)
return data_out
/obj/machinery/computer/telecomms/monitor/ui_act(action, params)
if(..())
return
switch(action)
if("mainmenu")
SelectedMachine = null
notice = ""
return
if("release")
machinelist = list()
notice = ""
return
if("network") //network change, flush the selected machine and buffer
var/newnet = sanitize(sanitize_text(params["value"], network))
if(length(newnet) > 15) //i'm looking at you, you href fuckers
notice = "FAILED: Network tag string too lengthy"
return
network = newnet
SelectedMachine = null
machinelist = list()
return
if("probe")
if(LAZYLEN(machinelist) > 0)
notice = "FAILED: Cannot probe when buffer full"
return
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
if(T.network == network)
LAZYADD(machinelist, T)
if(!LAZYLEN(machinelist))
notice = "FAILED: Unable to locate network entities in \[[network]\]"
return
if("viewmachine")
for(var/obj/machinery/telecomms/T in machinelist)
if(T.id == params["value"])
SelectedMachine = T
break