/** * 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() . += "