mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-01-28 18:02:17 +00:00
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.
67 lines
1.8 KiB
Plaintext
67 lines
1.8 KiB
Plaintext
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
|