@@ -226,25 +226,50 @@ var/datum/subsystem/persistence_misc/SSpersistence_misc
226
226
name = " Money highscores"
227
227
file_path = " data/persistence/money_highscores.json"
228
228
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
+
229
250
/ datum / persistence_task/ highscores/ on_init()
230
251
var /to_read = read_file()
231
252
if (! to_read)
232
253
log_debug (" [ name] task found an empty file on [ file_path] " )
233
254
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)
237
257
238
258
/ 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)
242
260
write_file (L)
243
261
244
262
/ datum / persistence_task/ highscores/ proc / insert_records( list / records)
245
263
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" ]] "
246
268
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
+
248
273
if (data. len > 5 )
249
274
data. Cut(6 ) // we only store the top 5
250
275
for (var /datum /record/money/record in data)
0 commit comments