Admin secrets refactor.

Turns the entries in the secret admin secrets panel into datums, which will make it much easier to add, edit, and remove new entries.
This initial commit only contains an initial proof of concept entry implementation and the supporting code. Next commit will contain all relevant entries.
This commit is contained in:
PsiOmega
2015-07-05 20:53:33 +02:00
parent d513c030f3
commit 0adebcb2bf
5 changed files with 111 additions and 836 deletions
+66
View File
@@ -0,0 +1,66 @@
var/datum/admin_secrets/admin_secrets = new()
/datum/admin_secrets
var/list/datum/admin_secret_category/categories
var/list/datum/admin_secret_item/items
/datum/admin_secrets/New()
..()
categories = init_subtypes(/datum/admin_secret_category)
items = list()
var/list/category_assoc = list()
for(var/datum/category in categories)
category_assoc[category.type] = category
for(var/item_type in (typesof(/datum/admin_secret_item) - /datum/admin_secret_item))
var/datum/admin_secret_item/secret_item = item_type
if(!initial(secret_item.name))
continue
var/datum/admin_secret_item/item = new item_type()
var/datum/admin_secret_category/category = category_assoc[item.category]
category.items += item
items += item
/datum/admin_secret_category
var/name = ""
var/desc = ""
var/list/datum/admin_secret_item/items
/datum/admin_secret_category
..()
items = list()
/datum/admin_secret_category/proc/can_view(var/mob/user)
for(var/datum/admin_secret_item/item in items)
if(item.can_execute(user))
return 1
return 0
/datum/admin_secret_item
var/name = ""
var/category = null
var/permissions = R_HOST
/datum/admin_secret_item/proc/can_execute(var/mob/user)
return check_rights(permissions, 0, user)
/datum/admin_secret_item/proc/execute(var/mob/user)
if(!can_execute(user))
return 0
log_admin("[key_name(user)] used secret [name]")
return 1
/*************************
* Pre-defined categories *
*************************/
/datum/admin_secret_category/random_events
name = "'Random' Events"
/*************************
* Pre-defined base items *
*************************/
/datum/admin_secret_item/random_event
category = /datum/admin_secret_category/random_events
permissions = R_FUN