mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Port in-game painting from /tg/
This commit is contained in:
committed by
Darlantan
parent
e276b7aba0
commit
275458f14a
@@ -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)
|
||||
|
||||
36
code/modules/persistence/paintings.dm
Normal file
36
code/modules/persistence/paintings.dm
Normal 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))
|
||||
Reference in New Issue
Block a user