Port in-game painting from /tg/

This commit is contained in:
Chompstation Bot
2021-07-04 02:24:28 +00:00
committed by Darlantan
parent e276b7aba0
commit 275458f14a
16 changed files with 700 additions and 21 deletions

View File

@@ -20,6 +20,14 @@
if(!isnull(entries_decay_at) && !isnull(entries_expire_at))
entries_decay_at = round(entries_expire_at * entries_decay_at)
/datum/persistent/proc/Initialize()
if(fexists(filename))
var/list/tokens = json_decode(file2text(filename))
for(var/list/token in tokens)
if(!CheckTokenSanity(token))
tokens -= token
ProcessAndApplyTokens(tokens)
/datum/persistent/proc/GetValidTurf(var/turf/T, var/list/token)
if(T && CheckTurfContents(T, token))
return T
@@ -93,14 +101,6 @@
"age" = GetEntryAge(entry)
)
/datum/persistent/proc/Initialize()
if(fexists(filename))
var/list/tokens = json_decode(file2text(filename))
for(var/list/token in tokens)
if(!CheckTokenSanity(token))
tokens -= token
ProcessAndApplyTokens(tokens)
/datum/persistent/proc/Shutdown()
if(fexists(filename))
fdel(filename)

View File

@@ -0,0 +1,36 @@
/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.paintings = json_decode(file2text(filename))
var/list/tokens = SSpersistence.paintings
for(var/list/token in tokens)
token["age"]++ // Increment age!
if(!CheckTokenSanity(token))
tokens -= token
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
P.load_persistent()
return
/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.paintings))