[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>
This commit is contained in:
SkyratBot
2022-09-03 01:44:07 +02:00
committed by GitHub
parent ee20b67d48
commit d30e6fcb10

View File

@@ -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,12 +164,12 @@ 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)
var/datum/feedback_variable/FV = feedback_list[key]
if(FV)
return FV
var/datum/feedback_variable/FV = new(key, key_type)
feedback += FV
else
FV = new(key, key_type)
feedback_list[key] = FV
return FV
/*
feedback data can be recorded in 5 formats: