From 70a0db61732298a5bab1a0cd46a88cc1244a33ee Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 22 Apr 2018 10:32:09 -0400 Subject: [PATCH] Merge pull request #37310 from Jalleo/apc_control_changes Fixes and optimises apc_control.dm a tad. --- code/game/machinery/computer/apc_control.dm | 38 +++++++++------------ 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index c99af5e2bb..648432c0ea 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -6,7 +6,6 @@ req_access = list(ACCESS_ENGINE) circuit = /obj/item/circuitboard/computer/apc_control light_color = LIGHT_COLOR_YELLOW - var/list/apcs //APCs the computer has access to var/mob/living/operator //Who's operating the computer right now var/obj/machinery/power/apc/active_apc //The APC we're using right now var/list/result_filters //For sorting the results @@ -17,15 +16,9 @@ /obj/machinery/computer/apc_control/Initialize() . = ..() - apcs = list() //To avoid BYOND making the list run through a ton of procs result_filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) /obj/machinery/computer/apc_control/process() - apcs = list() //Clear the list every tick - for(var/V in GLOB.apcs_list) - var/obj/machinery/power/apc/APC = V - if(check_apc(APC)) - apcs[APC.name] = APC if(operator && (!operator.Adjacent(src) || stat)) operator = null if(active_apc) @@ -56,20 +49,21 @@ dat += "Name: [result_filters["Name"] ? result_filters["Name"] : "None set"]
" dat += "Charge: \>[result_filters["Charge Above"] ? result_filters["Charge Above"] : "NaN"]% and \<[result_filters["Charge Below"] ? result_filters["Charge Below"] : "NaN"]%
" dat += "Accessible: [result_filters["Responsive"] ? "Non-Responsive Only" : "All"]

" - for(var/A in apcs) - var/obj/machinery/power/apc/APC = apcs[A] - if(result_filters["Name"] && !findtext(APC.name, result_filters["Name"]) && !findtext(APC.area.name, result_filters["Name"])) - continue - if(result_filters["Charge Above"] && (!APC.cell || (APC.cell && (APC.cell.charge / APC.cell.maxcharge) < result_filters["Charge Above"] / 100))) - continue - if(result_filters["Charge Below"] && APC.cell && (APC.cell.charge / APC.cell.maxcharge) > result_filters["Charge Below"] / 100) - continue - if(result_filters["Responsive"] && !APC.aidisabled) - continue - dat += "[A]
\ - Charge: [APC.cell ? "[DisplayEnergy(APC.cell.charge)] / [DisplayEnergy(APC.cell.maxcharge)] ([round((APC.cell.charge / APC.cell.maxcharge) * 100)]%)" : "No Powercell Installed"]
\ - Area: [APC.area]
\ - [APC.aidisabled || APC.panel_open ? "APC does not respond to interface query." : "APC responds to interface query."]

" + for(var/A in GLOB.apcs_list) + if(check_apc(A)) + var/obj/machinery/power/apc/APC = A + if(result_filters["Name"] && !findtext(APC.name, result_filters["Name"]) && !findtext(APC.area.name, result_filters["Name"])) + continue + if(result_filters["Charge Above"] && (!APC.cell || (APC.cell && (APC.cell.charge / APC.cell.maxcharge) < result_filters["Charge Above"] / 100))) + continue + if(result_filters["Charge Below"] && APC.cell && (APC.cell.charge / APC.cell.maxcharge) > result_filters["Charge Below"] / 100) + continue + if(result_filters["Responsive"] && !APC.aidisabled) + continue + dat += "[A]
\ + Charge: [APC.cell ? "[DisplayEnergy(APC.cell.charge)] / [DisplayEnergy(APC.cell.maxcharge)] ([round((APC.cell.charge / APC.cell.maxcharge) * 100)]%)" : "No Powercell Installed"]
\ + Area: [APC.area]
\ + [APC.aidisabled || APC.panel_open ? "APC does not respond to interface query." : "APC responds to interface query."]

" dat += "Check Logs
" dat += "Log Out
" if(obj_flags & EMAGGED) @@ -130,7 +124,7 @@ active_apc = null to_chat(usr, "[icon2html(src, usr)] Connected to APC in [APC.area]. Interface request sent.") log_activity("remotely accessed APC in [APC.area]") - APC.interact(usr, GLOB.not_incapacitated_state) + APC.ui_interact(usr, state = GLOB.not_incapacitated_state) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) message_admins("[key_name_admin(usr)] remotely accessed [APC] from [src] at [get_area(src)].") log_game("[key_name(usr)] remotely accessed [APC] from [src] at [get_area(src)].")