[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 runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
init_order = INIT_ORDER_BLACKBOX 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/list/first_death = list() //the first death of this round, assoc. vars keep track of different things
var/triggertime = 0 var/triggertime = 0
var/sealed = FALSE //time to stop tracking stats? var/sealed = FALSE //time to stop tracking stats?
@@ -58,18 +58,18 @@ SUBSYSTEM_DEF(blackbox)
qdel(query_record_playercount) qdel(query_record_playercount)
/datum/controller/subsystem/blackbox/Recover() /datum/controller/subsystem/blackbox/Recover()
feedback = SSblackbox.feedback feedback_list = SSblackbox.feedback_list
sealed = SSblackbox.sealed sealed = SSblackbox.sealed
//no touchie //no touchie
/datum/controller/subsystem/blackbox/vv_get_var(var_name) /datum/controller/subsystem/blackbox/vv_get_var(var_name)
if(var_name == NAMEOF(src, feedback)) if(var_name == NAMEOF(src, feedback_list))
return debug_variable(var_name, deep_copy_list(feedback), 0, src) return debug_variable(var_name, deep_copy_list(feedback_list), 0, src)
return ..() return ..()
/datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value) /datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value)
switch(var_name) switch(var_name)
if(NAMEOF(src, feedback)) if(NAMEOF(src, feedback_list))
return FALSE return FALSE
if(NAMEOF(src, sealed)) if(NAMEOF(src, sealed))
if(var_value) if(var_value)
@@ -101,7 +101,9 @@ SUBSYSTEM_DEF(blackbox)
"datetime" = "NOW()" "datetime" = "NOW()"
) )
var/list/sqlrowlist = list() 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( sqlrowlist += list(list(
"round_id" = GLOB.round_id, "round_id" = GLOB.round_id,
"key_name" = FV.key, "key_name" = FV.key,
@@ -162,13 +164,13 @@ SUBSYSTEM_DEF(blackbox)
record_feedback("tally", "radio_usage", 1, "other") record_feedback("tally", "radio_usage", 1, "other")
/datum/controller/subsystem/blackbox/proc/find_feedback_datum(key, key_type) /datum/controller/subsystem/blackbox/proc/find_feedback_datum(key, key_type)
for(var/datum/feedback_variable/FV in feedback) var/datum/feedback_variable/FV = feedback_list[key]
if(FV.key == key) if(FV)
return FV return FV
else
var/datum/feedback_variable/FV = new(key, key_type) FV = new(key, key_type)
feedback += FV feedback_list[key] = FV
return FV return FV
/* /*
feedback data can be recorded in 5 formats: feedback data can be recorded in 5 formats:
"text" "text"