mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
38 lines
1.1 KiB
Plaintext
38 lines
1.1 KiB
Plaintext
/datum/persistent/paintings
|
|
name = "paintings"
|
|
entries_expire_at = 1000 // Basically forever
|
|
|
|
/datum/persistent/paintings/SetFilename()
|
|
filename = "data/persistent/paintings.json"
|
|
|
|
/datum/persistent/paintings/Initialize()
|
|
. = ..()
|
|
if(fexists(filename))
|
|
SSpersistence.all_paintings = json_decode(file2text(filename))
|
|
var/list/tokens = SSpersistence.all_paintings
|
|
for(var/list/token in tokens)
|
|
token["age"]++ // Increment age!
|
|
if(!CheckTokenSanity(token))
|
|
tokens -= token
|
|
|
|
SSpersistence.unpicked_paintings = SSpersistence.all_paintings.Copy()
|
|
|
|
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
|
|
P.load_persistent()
|
|
|
|
/datum/persistent/paintings/CheckTokenSanity(var/list/token)
|
|
var/png_filename = "data/paintings/[token["persistence_id"]]/[token["md5"]].png"
|
|
if(!fexists(png_filename))
|
|
return FALSE
|
|
if(token["age"] > entries_expire_at)
|
|
fdel(png_filename)
|
|
return FALSE
|
|
|
|
/datum/persistent/paintings/Shutdown()
|
|
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
|
|
P.save_persistent()
|
|
|
|
if(fexists(filename))
|
|
fdel(filename)
|
|
to_file(file(filename), json_encode(SSpersistence.all_paintings))
|