mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 04:48:18 +01:00
84d3a447ab
<img width="707" height="659" alt="image" src="https://github.com/user-attachments/assets/6c8db0bf-dec6-40f2-86e8-120531fa5693" /> the traitor uplink is causing a genuine hostage situation to the server by simply being open due to the frankly insane amount of data that it builds and ships every single UI process tick (which is very often!!!) i've never been ragebaited by a single .dm file before so hard in my entire developer career so I simply neutered it into using static data and hit the commit button. it might break, if it does we're burning it to the ground and remaking it. genuinely heinous crimes going on there In addition I'm porting: * [Fix several SHOULD_NOT_SLEEP hits in SStgui.update_uis() tgstation/tgstation#75411](https://github.com/tgstation/tgstation/pull/75411) * [Moves ui references from the tgui subsystem to datums themselves tgstation/tgstation#76215](https://github.com/tgstation/tgstation/pull/76215) * [Fixes some spurious runtimes in SStgui procs tgstation/tgstation#76251](https://github.com/tgstation/tgstation/pull/76251) * [Fixes tgui_open_uis tracking tgstation/tgstation#77101](https://github.com/tgstation/tgstation/pull/77101) moving ui references to the datums themselves is a pretty nice performance boost because otherwise we have to iterate across all open uis every time a list input closes which sucks! the rest are just fixes to that original PR. thank you for your attention to this matter
41 lines
1.6 KiB
Plaintext
41 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
|
|
*/
|
|
/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
|
|
*/
|
|
/datum/proc/nanoui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nanoui/master_ui = null, var/datum/ui_state/state = GLOB.default_state)
|
|
return
|
|
|
|
// Used by the Nano UI Manager (/datum/SSnanoui) to track UIs opened by this mob
|
|
/mob/var/list/open_nanouis = list()
|