mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Takes NanoUI interaction code and splits it into more manageable modules. The default handler that checks distances, camera coverage, etc., etc. Admin NanoUI windows now only check for admin rights, ignoring sight, distance, and anything else. ERT/mercenary appearance changer now remains open for as long as the mob remains on the admin Z-level. PDAs and uplinks now require that you keep the item somewhere in your main inventory (or contents to be precise). Hands or ears are fine, inside bags are not. Rig suits also check that they are in the operator's inventory or that the synthetic operator is somewhere within the suit's contents (recursively).
45 lines
1.6 KiB
Plaintext
45 lines
1.6 KiB
Plaintext
// This file contains all Nano procs/definitions for external classes/objects
|
|
|
|
/**
|
|
* Called when a Nano UI window is closed
|
|
* This is how Nano handles closed windows
|
|
* It must be a verb so that it can be called using winset
|
|
*
|
|
* @return nothing
|
|
*/
|
|
/client/verb/nanoclose(var/uiref as text)
|
|
set hidden = 1 // hide this verb from the user's panel
|
|
set name = "nanoclose"
|
|
|
|
var/datum/nanoui/ui = locate(uiref)
|
|
|
|
if (istype(ui))
|
|
ui.close()
|
|
|
|
if(ui.ref)
|
|
var/href = "close=1"
|
|
src.Topic(href, params2list(href), ui.ref) // this will direct to the atom's Topic() proc via client.Topic()
|
|
else if (ui.on_close_logic)
|
|
// no atomref specified (or not found)
|
|
// so just reset the user mob's machine var
|
|
if(src && src.mob)
|
|
src.mob.unset_machine()
|
|
|
|
/**
|
|
* The ui_interact proc is used to open and update Nano UIs
|
|
* If ui_interact is not used then the UI will not update correctly
|
|
* ui_interact is currently defined for /atom/movable
|
|
*
|
|
* @param user /mob The mob who is interacting with this ui
|
|
* @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main")
|
|
* @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui
|
|
* @param force_open boolean Force the UI to (re)open, even if it's already open
|
|
*
|
|
* @return nothing
|
|
*/
|
|
/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/state = default_state)
|
|
return
|
|
|
|
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
|
|
/mob/var/list/open_uis = list()
|