/**
* Variable settings controller. Sorta like config but not as much as meant to be customized by config as much as adminbus purposes.
*/
/datum/variable_settings_controller
/// Our user friendly name
var/name = "Controller"
/// List of entries by type.
var/list/entries_by_type = list()
/// List of entries by category
var/list/entries_by_category = list()
/// List of entries followed by default values.
var/list/initial_entries = list()
/// List of presets followed by a list of entries to set to specific values. Entries not included are not impacted
var/list/presets = list()
/// Default entry set name
var/initial_preset_name = "RESET TO DEFAULT"
/datum/variable_settings_controller/New()
for(var/path in initial_entries)
var/datum/variable_setting_entry/E = new path(initial_entries[path])
entries_by_type[path] = E
LAZYINITLIST(entries_by_category[E.category])
entries_by_category[E.category] += E
/datum/variable_settings_controller/Topic(href, href_list)
if(..())
return
if(!check_rights())
to_chat(usr, "You must be an admin to modify this.")
var/logline = "[key_name(usr)] attempted to modify [src] without permissions."
message_admins(logline)
log_admin(logline)
return TRUE
var/category = href_list["category"]
var/refresh = FALSE
if(href_list["target"])
var/path = text2path(href_list["target"])
var/datum/variable_setting_entry/E = entries_by_type[path]
refresh = E.OnTopic(href, href_list)
else if(href_list["preset"])
request_and_set_preset(usr)
refresh = TRUE
else if(href_list["reset"])
var/logline = "[key_name(usr)] reset [src]([type]) to defaults."
message_admins(logline)
log_admin(logline)
reset_to_default()
refresh = TRUE
else if(href_list["refresh"])
refresh = TRUE
if(refresh)
ui_interact(usr, category)
/datum/variable_settings_controller/ui_interact(mob/user, category)
if(!(category in entries_by_category))
category = entries_by_category[1]
var/datum/browser/B = new(user, "vsc_[name]", name, 500, 1000, src)
B.set_content(html_render(category))
B.open(FALSE)
/datum/variable_settings_controller/proc/html_render(category = entries_by_category[1])
. = list()
. += "SET PRESET RESET DEFAULT
"
for(var/cat in entries_by_category)
. += "[cat] "
. += "