Skip to content

Commit e2e0606

Browse files
committed
Makes the unit test pass
1 parent 7771134 commit e2e0606

File tree

1 file changed

+32
-7
lines changed

1 file changed

+32
-7
lines changed

code/controllers/subsystem/init/persistence_misc.dm

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -226,25 +226,50 @@ var/datum/subsystem/persistence_misc/SSpersistence_misc
226226
name = "Money highscores"
227227
file_path = "data/persistence/money_highscores.json"
228228

229+
// Translated a list of /record/money into a list of data
230+
/datum/persistence_task/highscores/proc/listify()
231+
var/list/L = list()
232+
for(var/datum/record/money/record in data)
233+
L += list(
234+
"ckey" = record.ckey,
235+
"role" = record.role,
236+
"cash" = record.cash,
237+
"shift_duration" = record.shift_duration,
238+
"date" = record.date,
239+
)
240+
return L
241+
242+
// Translated a list of data into a list of /record/money
243+
/datum/persistence_task/highscores/proc/datumify(var/list/to_read)
244+
var/list/processed_data = list()
245+
for(var/list/L in to_read)
246+
var/datum/record/money/record = new(L["ckey"], L["role"], L["cash"], L["shift_duration"], L["date"])
247+
processed_data += record
248+
return processed_data
249+
229250
/datum/persistence_task/highscores/on_init()
230251
var/to_read = read_file()
231252
if(!to_read)
232253
log_debug("[name] task found an empty file on [file_path]")
233254
return
234-
for(var/list/L in to_read)
235-
var/datum/record/money/record = new(L["ckey"], L["role"], L["cash"], L["shift_duration"], L["date"])
236-
data += record
255+
256+
data = datumify(to_read)
237257

238258
/datum/persistence_task/highscores/on_shutdown()
239-
var/list/L = list()
240-
for(var/datum/record/money/record in data)
241-
L += list(record.vars)
259+
var/list/L = listify(data)
242260
write_file(L)
243261

244262
/datum/persistence_task/highscores/proc/insert_records(list/records)
245263
data += records
264+
265+
// Need to listify it to access the "cash" value with sortTrim
266+
var/list/data_as_list = listify(data)
267+
world.log << "list#1 before: [data_as_list[1]["name"]]"
246268
global.cmp_field = "cash"
247-
sortTim(data, /proc/cmp_list_by_element_desc)
269+
sortTim(data_as_list, /proc/cmp_list_by_element_desc)
270+
world.log << "list#1 after: [data_as_list[1]["name"]]"
271+
data = datumify(data_as_list)
272+
248273
if (data.len > 5)
249274
data.Cut(6) // we only store the top 5
250275
for(var/datum/record/money/record in data)

0 commit comments

Comments
 (0)