mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
SUBSYSTEM_DEF(nanoui)
|
|
name = "NanoUI"
|
|
wait = 5
|
|
// a list of current open /nanoui UIs, grouped by src_object and ui_key
|
|
var/list/open_uis = list()
|
|
// a list of current open /nanoui UIs, not grouped, for use in processing
|
|
var/list/processing_uis = list()
|
|
// a list of asset filenames which are to be sent to the client on user logon
|
|
var/list/asset_files = list()
|
|
|
|
/datum/controller/subsystem/nanoui/Initialize()
|
|
var/list/nano_asset_dirs = list(\
|
|
"nano/css/",\
|
|
"nano/images/",\
|
|
"nano/images/status_icons/",\
|
|
"nano/images/modular_computers/",\
|
|
"nano/js/",\
|
|
"nano/templates/"\
|
|
)
|
|
|
|
var/list/filenames = null
|
|
for (var/path in nano_asset_dirs)
|
|
filenames = flist(path)
|
|
for(var/filename in filenames)
|
|
if(copytext(filename, length(filename)) != "/") // filenames which end in "/" are actually directories, which we want to ignore
|
|
if(fexists(path + filename))
|
|
asset_files.Add(fcopy_rsc(path + filename)) // add this file to asset_files for sending to clients when they connect
|
|
.=..()
|
|
for(var/i in GLOB.clients)
|
|
send_resources(i)
|
|
|
|
/datum/controller/subsystem/nanoui/Recover()
|
|
if(SSnanoui.open_uis)
|
|
open_uis |= SSnanoui.open_uis
|
|
if(SSnanoui.processing_uis)
|
|
processing_uis |= SSnanoui.processing_uis
|
|
if(SSnanoui.asset_files)
|
|
asset_files |= SSnanoui.asset_files
|
|
|
|
/datum/controller/subsystem/nanoui/stat_entry()
|
|
return ..("[processing_uis.len] UIs")
|
|
|
|
/datum/controller/subsystem/nanoui/fire(resumed)
|
|
for(var/thing in processing_uis)
|
|
var/datum/nanoui/UI = thing
|
|
UI.process()
|
|
|
|
//Sends asset files to a client, called on client/New()
|
|
/datum/controller/subsystem/nanoui/proc/send_resources(client)
|
|
if(!subsystem_initialized)
|
|
return
|
|
for(var/file in asset_files)
|
|
client << browse_rsc(file) // send the file to the client
|