133 lines
4.2 KiB
Plaintext
133 lines
4.2 KiB
Plaintext
/**
|
|
* Stores recently played gamemodes, maps, etc.
|
|
*/
|
|
/datum/controller/subsystem/persistence
|
|
var/list/saved_modes = list(1,2,3)
|
|
var/list/saved_chaos = list(5,5,5)
|
|
var/list/saved_dynamic_rules = list(list(),list(),list())
|
|
var/list/saved_storytellers = list("foo","bar","baz")
|
|
var/average_threat = 50
|
|
var/list/saved_maps
|
|
|
|
/datum/controller/subsystem/persistence/SaveServerPersistence()
|
|
. = ..()
|
|
CollectRoundtype()
|
|
if(istype(SSticker.mode, /datum/game_mode/dynamic))
|
|
var/datum/game_mode/dynamic/mode = SSticker.mode
|
|
CollectStoryteller(mode)
|
|
CollectRulesets(mode)
|
|
RecordMaps()
|
|
|
|
/datum/controller/subsystem/persistence/LoadServerPersistence()
|
|
. = ..()
|
|
LoadRecentModes()
|
|
LoadRecentChaos()
|
|
LoadRecentStorytellers()
|
|
LoadRecentRulesets()
|
|
LoadRecentMaps()
|
|
|
|
/datum/controller/subsystem/persistence/proc/CollectRoundtype()
|
|
saved_modes[3] = saved_modes[2]
|
|
saved_modes[2] = saved_modes[1]
|
|
saved_modes[1] = SSticker.mode.config_tag
|
|
var/json_file = file("data/RecentModes.json")
|
|
var/list/file_data = list()
|
|
file_data["data"] = saved_modes
|
|
fdel(json_file)
|
|
WRITE_FILE(json_file, json_encode(file_data))
|
|
saved_chaos[3] = saved_chaos[2]
|
|
saved_chaos[2] = saved_chaos[1]
|
|
saved_chaos[1] = SSticker.mode.get_chaos()
|
|
average_threat = (SSactivity.get_average_threat() + average_threat) / 2
|
|
json_file = file("data/RecentChaos.json")
|
|
file_data = list()
|
|
file_data["data"] = saved_chaos + average_threat
|
|
fdel(json_file)
|
|
WRITE_FILE(json_file, json_encode(file_data))
|
|
|
|
/datum/controller/subsystem/persistence/proc/CollectStoryteller(var/datum/game_mode/dynamic/mode)
|
|
saved_storytellers.len = 3
|
|
saved_storytellers[3] = saved_storytellers[2]
|
|
saved_storytellers[2] = saved_storytellers[1]
|
|
saved_storytellers[1] = mode.storyteller.name
|
|
var/json_file = file("data/RecentStorytellers.json")
|
|
var/list/file_data = list()
|
|
file_data["data"] = saved_storytellers
|
|
fdel(json_file)
|
|
WRITE_FILE(json_file, json_encode(file_data))
|
|
|
|
/datum/controller/subsystem/persistence/proc/CollectRulesets(var/datum/game_mode/dynamic/mode)
|
|
saved_dynamic_rules[3] = saved_dynamic_rules[2]
|
|
saved_dynamic_rules[2] = saved_dynamic_rules[1]
|
|
saved_dynamic_rules[1] = list()
|
|
for(var/r in mode.executed_rules)
|
|
var/datum/dynamic_ruleset/rule = r
|
|
saved_dynamic_rules[1] += rule.config_tag
|
|
var/json_file = file("data/RecentRulesets.json")
|
|
var/list/file_data = list()
|
|
file_data["data"] = saved_dynamic_rules
|
|
fdel(json_file)
|
|
WRITE_FILE(json_file, json_encode(file_data))
|
|
|
|
/datum/controller/subsystem/persistence/proc/RecordMaps()
|
|
saved_maps = saved_maps?.len ? list("[SSmapping.config.map_name]") | saved_maps : list("[SSmapping.config.map_name]")
|
|
var/json_file = file("data/RecentMaps.json")
|
|
var/list/file_data = list()
|
|
file_data["maps"] = saved_maps
|
|
fdel(json_file)
|
|
WRITE_FILE(json_file, json_encode(file_data))
|
|
|
|
/datum/controller/subsystem/persistence/proc/LoadRecentModes()
|
|
var/json_file = file("data/RecentModes.json")
|
|
if(!fexists(json_file))
|
|
return
|
|
var/list/json = json_decode(file2text(json_file))
|
|
if(!json)
|
|
return
|
|
saved_modes = json["data"]
|
|
|
|
/datum/controller/subsystem/persistence/proc/LoadRecentChaos()
|
|
var/json_file = file("data/RecentChaos.json")
|
|
if(!fexists(json_file))
|
|
return
|
|
var/list/json = json_decode(file2text(json_file))
|
|
if(!json)
|
|
return
|
|
saved_chaos = json["data"]
|
|
if(saved_chaos.len > 3)
|
|
average_threat = saved_chaos[4]
|
|
saved_chaos.len = 3
|
|
|
|
/datum/controller/subsystem/persistence/proc/LoadRecentRulesets()
|
|
var/json_file = file("data/RecentRulesets.json")
|
|
if(!fexists(json_file))
|
|
return
|
|
var/list/json = json_decode(file2text(json_file))
|
|
if(!json)
|
|
return
|
|
saved_dynamic_rules = json["data"]
|
|
|
|
/datum/controller/subsystem/persistence/proc/LoadRecentStorytellers()
|
|
var/json_file = file("data/RecentStorytellers.json")
|
|
if(!fexists(json_file))
|
|
return
|
|
var/list/json = json_decode(file2text(json_file))
|
|
if(!json)
|
|
return
|
|
saved_storytellers = json["data"]
|
|
|
|
/datum/controller/subsystem/persistence/proc/LoadRecentMaps()
|
|
var/json_file = file("data/RecentMaps.json")
|
|
if(!fexists(json_file))
|
|
return
|
|
var/list/json = json_decode(file2text(json_file))
|
|
if(!json)
|
|
return
|
|
saved_maps = json["maps"]
|
|
|
|
/datum/controller/subsystem/persistence/proc/get_recent_chaos()
|
|
var/sum = 0
|
|
for(var/n in saved_chaos)
|
|
sum += n
|
|
return sum/length(saved_chaos)
|