mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-07-18 19:53:35 +01:00
[MIRROR] Check Access List Mapper Verb (#12647)
Co-authored-by: Will <7099514+Willburd@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
646a9a1030
commit
74f6f2f08d
@@ -0,0 +1,81 @@
|
||||
|
||||
/*
|
||||
Tgui panel for admins editing the access list of various machines.
|
||||
*/
|
||||
/datum/access_viewer
|
||||
var/datum/weakref/focused_obj
|
||||
|
||||
/datum/access_viewer/Destroy(force)
|
||||
focused_obj = null
|
||||
. = ..()
|
||||
|
||||
/datum/access_viewer/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "AccessViewer", "Access Viewer")
|
||||
ui.open()
|
||||
|
||||
/datum/access_viewer/tgui_state(mob/user)
|
||||
return ADMIN_STATE(R_DEBUG)
|
||||
|
||||
/datum/access_viewer/tgui_act(action, params, datum/tgui/ui)
|
||||
if(..() || !check_rights_for(ui.user.client, R_DEBUG))
|
||||
return FALSE
|
||||
|
||||
var/obj/machinery/req_thing = focused_obj?.resolve()
|
||||
if(!req_thing)
|
||||
return FALSE
|
||||
|
||||
switch(action)
|
||||
if("req_all")
|
||||
var/set_id = text2num(params["set_id"])
|
||||
if(!set_id)
|
||||
return FALSE
|
||||
if(!req_thing.req_access)
|
||||
req_thing.req_access = list()
|
||||
if(set_id in req_thing.req_access)
|
||||
req_thing.req_access -= set_id
|
||||
else
|
||||
req_thing.req_access += set_id
|
||||
return TRUE
|
||||
|
||||
if("req_one")
|
||||
var/set_id = text2num(params["set_id"])
|
||||
if(!set_id)
|
||||
return FALSE
|
||||
if(!req_thing.req_one_access)
|
||||
req_thing.req_one_access = list()
|
||||
if(set_id in req_thing.req_one_access)
|
||||
req_thing.req_one_access -= set_id
|
||||
else
|
||||
req_thing.req_one_access += set_id
|
||||
return TRUE
|
||||
|
||||
/datum/access_viewer/tgui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
var/list/access_list = list()
|
||||
for(var/datum/access/dat as anything in subtypesof(/datum/access))
|
||||
access_list += list(
|
||||
list(
|
||||
"id" = dat.id,
|
||||
"name" = dat.desc,
|
||||
"region" = dat.region,
|
||||
"access_type" = dat.access_type,
|
||||
)
|
||||
)
|
||||
data["access_list"] = access_list
|
||||
return data
|
||||
|
||||
/datum/access_viewer/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
// Check if the object still exists
|
||||
var/obj/machinery/req_thing = focused_obj?.resolve()
|
||||
if(req_thing)
|
||||
data["name"] = req_thing.name
|
||||
data["coords"] = "[req_thing.x].[req_thing.y].[req_thing.z]"
|
||||
data["req_access"] = req_thing.req_access ? req_thing.req_access : list()
|
||||
data["req_one_access"] = req_thing.req_one_access ? req_thing.req_one_access : list()
|
||||
return data
|
||||
|
||||
/datum/access_viewer/proc/set_access_focus(obj/machinery/req_thing)
|
||||
focused_obj = WEAKREF(req_thing)
|
||||
@@ -35,6 +35,8 @@ GLOBAL_PROTECT(href_token)
|
||||
var/datum/spawn_menu/spawn_menu
|
||||
var/datum/spawnpanel/spawn_panel
|
||||
|
||||
var/datum/access_viewer/access_view_menu
|
||||
|
||||
/// A lazylist of tagged datums, for quick reference with the View Tags verb
|
||||
var/list/tagged_datums
|
||||
|
||||
|
||||
@@ -5,3 +5,12 @@ ADMIN_VERB(spawn_panel, R_SPAWN, "Spawn Panel", "Spawn Panel (TGUI).", ADMIN_CAT
|
||||
user.holder.spawn_panel = panel
|
||||
panel.tgui_interact(user.mob)
|
||||
feedback_add_details("admin_verb","SP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
ADMIN_VERB_AND_CONTEXT_MENU(machine_access_check, R_DEBUG, "Check Access List", "Read and edit the access list of a machine.", ADMIN_CATEGORY_GAME, obj/machinery/req_thing in world)
|
||||
var/datum/access_viewer/panel = user.holder.access_view_menu
|
||||
if(!panel)
|
||||
panel = new()
|
||||
user.holder.access_view_menu = panel
|
||||
panel.set_access_focus(req_thing)
|
||||
panel.tgui_interact(user.mob)
|
||||
feedback_add_details("admin_verb","SR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
Reference in New Issue
Block a user