diff --git a/code/controllers/subsystem/nano.dm b/code/controllers/subsystem/nano.dm index 752b6e7b539..70ff2fcf12b 100644 --- a/code/controllers/subsystem/nano.dm +++ b/code/controllers/subsystem/nano.dm @@ -9,14 +9,10 @@ var/datum/subsystem/nano/SSnano var/list/open_uis = list() // A list of open NanoUIs, grouped by src_object and ui_key. var/list/processing_uis = list() // A list of processing NanoUIs, not grouped. - var/list/resource_files // A list of asset files to be send to clients. - /datum/subsystem/nano/New() NEW_SS_GLOBAL(SSnano) // Register the subsystem. - resource_files = get_resources() // Populate the list of resource files. - /datum/subsystem/nano/stat_entry() ..("P:[processing_uis.len]") // Show how many interfaces we are processing. diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b8607431341..4a7d2553f84 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -138,8 +138,7 @@ var/list/admin_verbs_debug = list( /client/proc/cmd_display_del_log, /client/proc/reset_latejoin_spawns, /client/proc/create_outfits, - /client/proc/debug_huds, - /client/proc/reload_nanoui_resources + /client/proc/debug_huds ) var/list/admin_verbs_possess = list( /proc/possess, @@ -278,6 +277,7 @@ var/list/admin_verbs_hideable = list( /client/proc/cmd_admin_grantfullaccess, /client/proc/cmd_admin_areatest, /client/proc/readmin, + /client/proc/reload_nanoui_resources ) if(holder) verbs.Remove(holder.rank.adds) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 6406367a0a0..e6dd19001ae 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -782,7 +782,12 @@ var/global/list/g_fancy_list_of_types = null set name = "Reload NanoUI Resources" set desc = "Force the client to redownload NanoUI Resources" - var/list/resources = SSnano.get_resources() - + // Close open NanoUIs. SSnano.close_user_uis(usr) - SSnano.send_resources(src, resources, force = 1) + + // Re-load the assets. + var/datum/asset/assets = get_asset_datum(/datum/asset/nanoui) + assets.register() + + // Clear the user's cache so they get resent. + usr.client.cache = list() diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 5152ab29436..255c01abe52 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -161,6 +161,7 @@ var/intercom_range_display_status = 0 src.verbs += /client/proc/cmd_show_at_list src.verbs += /client/proc/cmd_show_at_list src.verbs += /client/proc/manipulate_organs + src.verbs += /client/proc/reload_nanoui_resources //src.verbs += /client/proc/cmd_admin_rejuvenate feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 0297cd4b7ba..7cc89dcd5f2 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -204,3 +204,39 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE) for(var/path in typesof(/datum/html_interface)) var/datum/html_interface/hi = new path() hi.registerResources() + +/datum/asset/nanoui + var/list/common = list() + + var/list/common_dirs = list( + "nano/styles/", + "nano/scripts/", + "nano/images/", + "nano/layouts/" + ) + var/list/uncommon_dirs = list( + "nano/interfaces/" + ) + +/datum/asset/nanoui/register() + // Crawl the directories to find files. + for (var/path in common_dirs) + var/list/filenames = flist(path) + for(var/filename in filenames) + if(copytext(filename, length(filename)) != "/") // Ignore directories. + if(fexists(path + filename)) + common[filename] = fcopy_rsc(path + filename) + register_asset(filename, common[filename]) + for (var/path in uncommon_dirs) + var/list/filenames = flist(path) + for(var/filename in filenames) + if(copytext(filename, length(filename)) != "/") // Ignore directories. + if(fexists(path + filename)) + register_asset(filename, fcopy_rsc(path + filename)) + +/datum/asset/nanoui/send(client, uncommon) + if(!islist(uncommon)) + uncommon = list(uncommon) + + send_asset_list(client, uncommon, FALSE) + send_asset_list(client, common, TRUE) \ No newline at end of file diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 363ef38f616..44115f007f3 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -333,9 +333,5 @@ var/next_external_rsc = 0 'html/browser/playeroptions.css', ) spawn (10) - //Send nanoui files to client - SSnano.send_resources(src) - //Precache the client with all other assets slowly, so as to not block other browse() calls getFilesSlow(src, asset_cache, register_asset = FALSE) - diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index aca852b7261..df729f2a726 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -87,6 +87,9 @@ add_common_assets() + var/datum/asset/assets = get_asset_datum(/datum/asset/nanoui) + assets.send(user, template) + /** * private * diff --git a/code/modules/nano/subsystem.dm b/code/modules/nano/subsystem.dm index 481b21c5401..9230d8d71d8 100644 --- a/code/modules/nano/subsystem.dm +++ b/code/modules/nano/subsystem.dm @@ -229,48 +229,3 @@ oldMob.open_uis.Cut() // Clear the old list. return 1 // Let the caller know we did it. - - /** - * public - * - * Generate the list of resources to be sent to clients. - * fcopy the resources to make them available as rscs. - * - * return list The resource files. - **/ -/datum/subsystem/nano/proc/get_resources() - var/list/resources = list() - // A list of folders to be sent. - var/list/resource_dirs = list(\ - "nano/css/",\ - "nano/images/",\ - "nano/js/",\ - "nano/templates/"\ - ) - - // Crawl the directories to find files. - for (var/path in resource_dirs) - var/list/filenames = flist(path) - for(var/filename in filenames) - if(copytext(filename, length(filename)) != "/") // Ignore directories. - if(fexists(path + filename)) - resources[filename] = fcopy_rsc(path + filename) - - return resources - - /** - * public - * - * Send a list of resource files to the client. - * Use the asset_cache system by default. - * - * required client The client recieving the resources. - * optional resources The resources to be sent. - * optional force Bypass the asset_cache system to force a redownload. - **/ -/datum/subsystem/nano/proc/send_resources(client/client, list/resources = resource_files, force = 0) - if (force) - for(var/resource in resources) - client << browse_rsc(resources[resource]) - else - getFilesSlow(client, resources) diff --git a/derp.diff b/derp.diff new file mode 100644 index 00000000000..cf773c87707 Binary files /dev/null and b/derp.diff differ diff --git a/nano/templates/air_alarm.tmpl b/nano/interfaces/air_alarm.tmpl similarity index 100% rename from nano/templates/air_alarm.tmpl rename to nano/interfaces/air_alarm.tmpl diff --git a/nano/templates/apc.tmpl b/nano/interfaces/apc.tmpl similarity index 100% rename from nano/templates/apc.tmpl rename to nano/interfaces/apc.tmpl diff --git a/nano/templates/atmos_filter.tmpl b/nano/interfaces/atmos_filter.tmpl similarity index 100% rename from nano/templates/atmos_filter.tmpl rename to nano/interfaces/atmos_filter.tmpl diff --git a/nano/templates/atmos_mixer.tmpl b/nano/interfaces/atmos_mixer.tmpl similarity index 100% rename from nano/templates/atmos_mixer.tmpl rename to nano/interfaces/atmos_mixer.tmpl diff --git a/nano/templates/atmos_pump.tmpl b/nano/interfaces/atmos_pump.tmpl similarity index 100% rename from nano/templates/atmos_pump.tmpl rename to nano/interfaces/atmos_pump.tmpl diff --git a/nano/templates/canister.tmpl b/nano/interfaces/canister.tmpl similarity index 100% rename from nano/templates/canister.tmpl rename to nano/interfaces/canister.tmpl diff --git a/nano/templates/chem_dispenser.tmpl b/nano/interfaces/chem_dispenser.tmpl similarity index 100% rename from nano/templates/chem_dispenser.tmpl rename to nano/interfaces/chem_dispenser.tmpl diff --git a/nano/templates/chem_heater.tmpl b/nano/interfaces/chem_heater.tmpl similarity index 100% rename from nano/templates/chem_heater.tmpl rename to nano/interfaces/chem_heater.tmpl diff --git a/nano/templates/cryo.tmpl b/nano/interfaces/cryo.tmpl similarity index 100% rename from nano/templates/cryo.tmpl rename to nano/interfaces/cryo.tmpl diff --git a/nano/templates/smes.tmpl b/nano/interfaces/smes.tmpl similarity index 100% rename from nano/templates/smes.tmpl rename to nano/interfaces/smes.tmpl diff --git a/nano/templates/solar_control.tmpl b/nano/interfaces/solar_control.tmpl similarity index 100% rename from nano/templates/solar_control.tmpl rename to nano/interfaces/solar_control.tmpl diff --git a/nano/templates/tanks.tmpl b/nano/interfaces/tanks.tmpl similarity index 100% rename from nano/templates/tanks.tmpl rename to nano/interfaces/tanks.tmpl diff --git a/nano/css/layout_basic.css b/nano/layouts/layout_basic.css similarity index 100% rename from nano/css/layout_basic.css rename to nano/layouts/layout_basic.css diff --git a/nano/templates/layout_basic.tmpl b/nano/layouts/layout_basic.tmpl similarity index 100% rename from nano/templates/layout_basic.tmpl rename to nano/layouts/layout_basic.tmpl diff --git a/nano/css/layout_default.css b/nano/layouts/layout_default.css similarity index 100% rename from nano/css/layout_default.css rename to nano/layouts/layout_default.css diff --git a/nano/templates/layout_default.tmpl b/nano/layouts/layout_default.tmpl similarity index 100% rename from nano/templates/layout_default.tmpl rename to nano/layouts/layout_default.tmpl diff --git a/nano/js/doT.js b/nano/scripts/doT.js similarity index 100% rename from nano/js/doT.js rename to nano/scripts/doT.js diff --git a/nano/js/jquery-ui.js b/nano/scripts/jquery-ui.js similarity index 100% rename from nano/js/jquery-ui.js rename to nano/scripts/jquery-ui.js diff --git a/nano/js/jquery.js b/nano/scripts/jquery.js similarity index 100% rename from nano/js/jquery.js rename to nano/scripts/jquery.js diff --git a/nano/js/nano_base_callbacks.js b/nano/scripts/nano_base_callbacks.js similarity index 100% rename from nano/js/nano_base_callbacks.js rename to nano/scripts/nano_base_callbacks.js diff --git a/nano/js/nano_base_helpers.js b/nano/scripts/nano_base_helpers.js similarity index 100% rename from nano/js/nano_base_helpers.js rename to nano/scripts/nano_base_helpers.js diff --git a/nano/js/nano_config.js b/nano/scripts/nano_config.js similarity index 100% rename from nano/js/nano_config.js rename to nano/scripts/nano_config.js diff --git a/nano/js/nano_state.js b/nano/scripts/nano_state.js similarity index 100% rename from nano/js/nano_state.js rename to nano/scripts/nano_state.js diff --git a/nano/js/nano_state_default.js b/nano/scripts/nano_state_default.js similarity index 100% rename from nano/js/nano_state_default.js rename to nano/scripts/nano_state_default.js diff --git a/nano/js/nano_state_manager.js b/nano/scripts/nano_state_manager.js similarity index 100% rename from nano/js/nano_state_manager.js rename to nano/scripts/nano_state_manager.js diff --git a/nano/js/nano_template.js b/nano/scripts/nano_template.js similarity index 100% rename from nano/js/nano_template.js rename to nano/scripts/nano_template.js diff --git a/nano/js/nano_update.js b/nano/scripts/nano_update.js similarity index 100% rename from nano/js/nano_update.js rename to nano/scripts/nano_update.js diff --git a/nano/js/nano_utility.js b/nano/scripts/nano_utility.js similarity index 100% rename from nano/js/nano_utility.js rename to nano/scripts/nano_utility.js diff --git a/nano/css/icons.css b/nano/styles/icons.css similarity index 100% rename from nano/css/icons.css rename to nano/styles/icons.css diff --git a/nano/css/shared.css b/nano/styles/shared.css similarity index 100% rename from nano/css/shared.css rename to nano/styles/shared.css diff --git a/nano/templates/TemplatesGuide.txt b/nano/templates/TemplatesGuide.txt deleted file mode 100644 index 3b042edd0b0..00000000000 --- a/nano/templates/TemplatesGuide.txt +++ /dev/null @@ -1,10 +0,0 @@ --------------------------------- -Nano UI Template Guide --------------------------------- - -Nano UI uses templates, which are comprised of HTML and a markup syntax. The markup allows you -to easily add conditionals (if statements), loops (for loops) and custom formatting (using helpers). - -Templates are stored in the /nano/templates folder and the file extension is .tmpl. - -This guide is being replaced with a wiki entry, found here: http://baystation12.net/wiki/index.php?title=NanoUI \ No newline at end of file