mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Also moved RCON console board and SMES board where they belong. Formatted some board code and fixed some typos, too. Cloning console renamed to Cloning Control Console. The teleporter console is now called Teleporter Control Console. The power monitor is now called Power Monitoring Console. SMES board glass and acid construction price normalized (though other resources are still required; is that a good thing? It would be better to just introduce a new expensive part that is used to build it (if the coils aren't enough) rather than have a single board with atypical price.
107 lines
3.8 KiB
Plaintext
107 lines
3.8 KiB
Plaintext
/obj/machinery/computer/rcon
|
|
name = "RCON Console"
|
|
desc = "Console used to remotely control machinery on the station."
|
|
icon = 'icons/obj/computer.dmi'
|
|
icon_state = "ai-fixer"
|
|
circuit = /obj/item/weapon/circuitboard/rcon_console
|
|
req_one_access = list(access_engine)
|
|
var/current_tag = null
|
|
var/list/known_SMESs = null
|
|
var/list/known_breakers = null
|
|
|
|
/obj/machinery/computer/rcon/attack_ai(var/mob/user as mob)
|
|
return attack_hand(user)
|
|
|
|
/obj/machinery/computer/rcon/attack_hand(var/mob/user as mob)
|
|
..()
|
|
ui_interact(user)
|
|
|
|
/obj/machinery/computer/rcon/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
|
FindDevices() // Update our devices list
|
|
var/data[0]
|
|
|
|
// SMES DATA (simplified view)
|
|
var/list/smeslist[0]
|
|
for(var/obj/machinery/power/smes/buildable/SMES in known_SMESs)
|
|
smeslist.Add(list(list(
|
|
"charge" = round(SMES.Percentage()),
|
|
"input_set" = SMES.input_attempt,
|
|
"input_val" = round(SMES.input_level),
|
|
"output_set" = SMES.output_attempt,
|
|
"output_val" = round(SMES.output_level),
|
|
"output_load" = round(SMES.output_used),
|
|
"RCON_tag" = SMES.RCon_tag
|
|
)))
|
|
data["smes_info"] = smeslist
|
|
|
|
// BREAKER DATA (simplified view)
|
|
var/list/breakerlist[0]
|
|
for(var/obj/machinery/power/breakerbox/BR in known_breakers)
|
|
breakerlist.Add(list(list(
|
|
"RCON_tag" = BR.RCon_tag,
|
|
"enabled" = BR.on
|
|
)))
|
|
data["breaker_info"] = breakerlist
|
|
|
|
// update the ui if it exists, returns null if no ui is passed/found
|
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
|
if (!ui)
|
|
// the ui does not exist, so we'll create a new() one
|
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
|
ui = new(user, src, ui_key, "rcon.tmpl", "RCON Control Console", 600, 400)
|
|
// when the ui is first opened this is the data it will use
|
|
ui.set_initial_data(data)
|
|
// open the new ui window
|
|
ui.open()
|
|
// auto update every Master Controller tick
|
|
ui.set_auto_update(1)
|
|
|
|
/obj/machinery/computer/rcon/Topic(href, href_list)
|
|
if(href_list["smes_in_toggle"])
|
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_toggle"])
|
|
if(SMES)
|
|
SMES.toggle_input()
|
|
if(href_list["smes_out_toggle"])
|
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_toggle"])
|
|
if(SMES)
|
|
SMES.toggle_output()
|
|
if(href_list["smes_in_set"])
|
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_set"])
|
|
if(SMES)
|
|
var/inputset = input(usr, "Enter new input level (0-[SMES.input_level_max])", "SMES Input Power Control") as num
|
|
SMES.set_input(inputset)
|
|
if(href_list["smes_out_set"])
|
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_set"])
|
|
if(SMES)
|
|
var/outputset = input(usr, "Enter new output level (0-[SMES.output_level_max])", "SMES Input Power Control") as num
|
|
SMES.set_output(outputset)
|
|
|
|
if(href_list["toggle_breaker"])
|
|
var/obj/machinery/power/breakerbox/toggle = null
|
|
for(var/obj/machinery/power/breakerbox/breaker in known_breakers)
|
|
if(breaker.RCon_tag == href_list["toggle_breaker"])
|
|
toggle = breaker
|
|
if(toggle)
|
|
if(toggle.update_locked)
|
|
usr << "The breaker box was recently toggled. Please wait before toggling it again."
|
|
else
|
|
toggle.auto_toggle()
|
|
|
|
/obj/machinery/computer/rcon/proc/GetSMESByTag(var/tag)
|
|
if(!tag)
|
|
return
|
|
|
|
for(var/obj/machinery/power/smes/buildable/S in known_SMESs)
|
|
if(S.RCon_tag == tag)
|
|
return S
|
|
|
|
/obj/machinery/computer/rcon/proc/FindDevices()
|
|
known_SMESs = new /list()
|
|
for(var/obj/machinery/power/smes/buildable/SMES in machines)
|
|
if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon)
|
|
known_SMESs.Add(SMES)
|
|
|
|
known_breakers = new /list()
|
|
for(var/obj/machinery/power/breakerbox/breaker in machines)
|
|
if(breaker.RCon_tag != "NO_TAG")
|
|
known_breakers.Add(breaker) |