From d30e6fcb10f3a0cbc30adc786075dffd662e88b7 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 3 Sep 2022 01:44:07 +0200 Subject: [PATCH] [MIRROR] Converts SSblackbox feedback to an associative list [MDB IGNORE] (#15955) * Converts SSblackbox feedback to an associative list (#69399) About The Pull Request I DID NOT TEST THIS. I DO NOT KNOW DATABASE STUFF. I JUST NOTICED IT WHILE WORKING ON AN UNRELATED PR. Title. Why It's Good For The Game Speeds up a hot proc substantially * Converts SSblackbox feedback to an associative list Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> --- code/controllers/subsystem/blackbox.dm | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index cabee530d4b..50ba8adad54 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(blackbox) runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME init_order = INIT_ORDER_BLACKBOX - var/list/feedback = list() //list of datum/feedback_variable + var/list/feedback_list = list() //list of datum/feedback_variable var/list/first_death = list() //the first death of this round, assoc. vars keep track of different things var/triggertime = 0 var/sealed = FALSE //time to stop tracking stats? @@ -58,18 +58,18 @@ SUBSYSTEM_DEF(blackbox) qdel(query_record_playercount) /datum/controller/subsystem/blackbox/Recover() - feedback = SSblackbox.feedback + feedback_list = SSblackbox.feedback_list sealed = SSblackbox.sealed //no touchie /datum/controller/subsystem/blackbox/vv_get_var(var_name) - if(var_name == NAMEOF(src, feedback)) - return debug_variable(var_name, deep_copy_list(feedback), 0, src) + if(var_name == NAMEOF(src, feedback_list)) + return debug_variable(var_name, deep_copy_list(feedback_list), 0, src) return ..() /datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value) switch(var_name) - if(NAMEOF(src, feedback)) + if(NAMEOF(src, feedback_list)) return FALSE if(NAMEOF(src, sealed)) if(var_value) @@ -101,7 +101,9 @@ SUBSYSTEM_DEF(blackbox) "datetime" = "NOW()" ) var/list/sqlrowlist = list() - for (var/datum/feedback_variable/FV in feedback) + + for (var/key in feedback_list) + var/datum/feedback_variable/FV = feedback_list[key] sqlrowlist += list(list( "round_id" = GLOB.round_id, "key_name" = FV.key, @@ -162,13 +164,13 @@ SUBSYSTEM_DEF(blackbox) record_feedback("tally", "radio_usage", 1, "other") /datum/controller/subsystem/blackbox/proc/find_feedback_datum(key, key_type) - for(var/datum/feedback_variable/FV in feedback) - if(FV.key == key) - return FV - - var/datum/feedback_variable/FV = new(key, key_type) - feedback += FV - return FV + var/datum/feedback_variable/FV = feedback_list[key] + if(FV) + return FV + else + FV = new(key, key_type) + feedback_list[key] = FV + return FV /* feedback data can be recorded in 5 formats: "text"