"
+ material_list["is_red"] = 0
+ design_list["can_build"] = check_materials
+ if(submenu == 2)
+ var/list/materials_list = list()
+ data["loaded_materials"] = materials_list
+ materials_list[++materials_list.len] = list("name" = "Glass", "id" = MAT_GLASS, "amount" = linked_imprinter.g_amount)
+ materials_list[++materials_list.len] = list("name" = "Gold", "id" = MAT_GOLD, "amount" = linked_imprinter.gold_amount)
+ materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = linked_imprinter.diamond_amount)
+ if(submenu == 3)
+ var/list/loaded_chemicals = list()
+ data["loaded_chemicals"] = loaded_chemicals
for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list)
- dat += "[R.name]: [R.volume]"
- dat += "
"
-
- var/datum/browser/popup = new(user, "rndconsole", name, 700, 550)
- popup.set_content(dat)
- popup.open()
- return
+ var/list/loaded_chemical = list()
+ loaded_chemicals[++loaded_chemicals.len] = loaded_chemical
+ loaded_chemical["name"] = R.name
+ loaded_chemical["volume"] = R.volume
+ loaded_chemical["id"] = R.id
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "r_n_d.tmpl", src.name, 700, 550)
+ ui.set_initial_data(data)
+ ui.open()
//helper proc, which return a table containing categories
/obj/machinery/computer/rdconsole/proc/list_categories(var/list/categories, var/menu_num as num)
diff --git a/nano/templates/r_n_d.tmpl b/nano/templates/r_n_d.tmpl
new file mode 100644
index 00000000000..5d29c399550
--- /dev/null
+++ b/nano/templates/r_n_d.tmpl
@@ -0,0 +1,260 @@
+{{if data.menu > 0 && !data.wait_message}}
+
+ {{:helper.link('Main Menu', 'reply', {'menu': 0, 'submenu': 0})}}
+ {{if data.submenu > 0}}
+ {{if data.menu == 2}}
+ {{:helper.link('Disk Operations Menu', 'reply', {'submenu': 0})}}
+ {{else data.menu == 4}}
+ {{:helper.link('Protolathe Menu', 'reply', {'submenu': 0})}}
+ {{else data.menu == 5}}
+ {{:helper.link('Circuit Imprinter Menu', 'reply', {'submenu': 0})}}
+ {{else data.menu == 6}}
+ {{:helper.link('Settings Menu', 'reply', {'submenu': 0})}}
+ {{/if}}
+ {{else data.menu == 4 || data.menu == 5}}
+ {{:helper.link('Material Storage', 'arrow-up', {'submenu': 2})}}
+ {{:helper.link('Chemical Storage', 'arrow-up', {'submenu': 3})}}
+ {{/if}}
+
+ {{if data.wait_message}}
+ {{:data.wait_message}}
+ {{else data.menu == 0}}
+
Main Menu:
+
{{:helper.link('Current Research Levels', 'folder-open', {'menu': 1, 'submenu': 0})}}
+
{{:helper.link('Disk Operations', 'save', {'menu': 2, 'submenu': 0}, data.disk_type ? null : 'disabled')}}
+
{{:helper.link('Destructive Analyzer Menu', 'chain-broken', {'menu': 3, 'submenu': 0}, data.linked_destroy ? null : 'disabled')}}
+
{{:helper.link('Protolathe Menu', 'print', {'menu': 4, 'submenu': 0}, data.linked_lathe ? null : 'disabled')}}
+
{{:helper.link('Circuit Imprinter Menu', 'print', {'menu': 5, 'submenu': 0}, data.linked_imprinter ? null : 'disabled')}}
+
{{:helper.link('Settings', 'gear', {'menu': 6, 'submenu': 0})}}
+ {{else data.menu == 1}}
+
Current Research Levels:
+ {{for data.tech_levels}}
+ {{if index > 0}}
+
+ {{/if}}
+
{{:value.name}}
+
* Level: {{:value.level}}
+
* Summary: {{:value.desc}}
+ {{/for}}
+ {{else data.menu == 2 && data.disk_type}}
+ {{if data.submenu == 0}}
+
Data Disk Contents:
+ {{if data.disk_data}}
+ {{if data.disk_type == 1}}
+
Name: {{:data.disk_data.name}}
+
Level: {{:data.disk_data.level}}
+
Description: {{:data.disk_data.desc}}
+ {{:helper.link('Upload to Database', 'arrow-up', {'updt_tech': 1})}}
+ {{:helper.link('Clear Disk', 'trash', {'clear_tech': 1})}}
+ {{else}}
+
Name: {{:data.disk_data.name}}
+
Reliability: {{:data.disk_data.reliability}}
+
+ {{for data.disk_data.lathe_types}}
+ {{if index == 0}}
+ Lathe Types:
+ {{else}}
+ ,
+ {{/if}}
+ {{:value}}
+ {{/for}}
+
+
Required Materials:
+ {{for data.disk_data.materials}}
+
{{:value.name}} x {{:value.amount}}
+ {{/for}}
+ {{:helper.link('Upload to Database', 'arrow-up', {'updt_design': 1})}}
+ {{:helper.link('Clear Disk', 'trash', {'clear_design': 1})}}
+ {{/if}}
+ {{else}}
+
This disk is empty.
+ {{:helper.link(data.disk_type == 1 ? 'Load Tech to Disk' : 'Load Design to Disk', 'arrow-down', {'submenu': 1})}}
+ {{/if}}
+ {{:helper.link('Eject Disk', 'eject', data.disk_type == 1 ? {'eject_tech': 1} : {'eject_design': 1})}}
+ {{else data.submenu == 1}}
+ {{for data.to_copy}}
+
+
{{:value.name}}
+ {{:helper.link('Copy to Disk', 'arrow-down', data.disk_type == 1 ? {'copy_tech': 1, 'copy_tech_ID': value.id} : {'copy_design': 1, 'copy_design_ID': value.id})}}
+
+ {{/for}}
+ {{/if}}
+ {{else data.menu == 3 && !data.linked_destroy}}
+ NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE
+ {{else data.menu == 4 && !data.linked_lathe}}
+ NO PROTOLATHE LINKED TO CONSOLE
+ {{else data.menu == 5 && !data.linked_imprinter}}
+ NO CIRCUIT IMPRITER LINKED TO CONSOLE
+ {{else data.menu == 3}}
+ {{if !data.loaded_item}}
+ No item loaded. Standing by...
+ {{else}}
+
Deconstruction Menu:
+
Name: {{:data.loaded_item.name}}
+
Reliability: {{:data.loaded_item.reliability}}
+
Origin Tech:
+ {{for data.loaded_item.origin_tech}}
+
+
* {{:value.name}}:
+
+ {{:value.object_level}}
+ {{if value.current_level}}
+ (Current: {{:value.current_level}})
+ {{/if}}
+
+
+ {{/for}}
+
Options:
+ {{:helper.link('Deconstruct Item', 'chain-broken', {'deconstruct': 1})}}
+ {{:helper.link('Eject Item', 'eject', {'eject_item': 1})}}
+ {{/if}}
+ {{else data.menu == 4 || data.menu == 5}}
+ {{if data.submenu == 0}}
+
{{:(data.menu == 4 ? 'Protolathe' : 'Circuit Imprinter')}} Menu:
+ {{else data.submenu == 1}}
+
{{:data.category}}:
+ {{else data.submenu == 2}}
+
Material Storage:
+ {{else data.submenu == 3}}
+
Chemical Storage:
+ {{/if}}
+
+ {{if data.submenu < 2}}
+
+
+ | Material Amount: | {{:data.total_materials}} |
+ {{if data.max_materials}}
+ / {{:data.max_materials}} |
+ {{/if}}
+
+
+ | Chemical Amount: | {{:data.total_chemicals}} |
+ {{if data.max_chemicals}}
+ / {{:data.max_chemicals}} |
+ {{/if}}
+
+
+ {{/if}}
+
+ {{if data.submenu == 0}}
+
+
+
+
+ {{for data.categories}}
+ {{if (index & 1) == 0 && index != 0}}
+
+ {{/if}}
+ | {{:helper.link(value, 'arrow-right', {'category': value})}} |
+ {{/for}}
+
+ {{else data.submenu == 1}}
+
+ {{for data.matching_designs}}
+
+ | {{:helper.link(value.name, 'print', data.menu == 4 ? {'build': value.id, 'amount': 1} : {'imprint': value.id}, value.can_build ? null : 'disabled')}} |
+ {{if value.can_build >= 5}}
+ {{:helper.link('x5', null, data.menu == 4 ? {'build': value.id, 'amount': 5} : {'imprint': value.id})}}
+ {{/if}} |
+ {{if value.can_build >= 10}}
+ {{:helper.link('x10', null, data.menu == 4 ? {'build': value.id, 'amount': 10} : {'imprint': value.id})}}
+ {{/if}} |
+
+ {{for value.materials : material : i}}
+ |
+ {{if material.is_red}}
+
+ {{/if}}
+ {{:material.amount}} {{:material.name}}
+ {{if material.is_red}}
+
+ {{/if}}
+ {{/for}}
+ |
+
+ {{/for}}
+
+ {{else data.submenu == 2}}
+ {{for data.loaded_materials}}
+
+
* {{:value.amount}} of {{:value.name}}
({{:Math.round((value.amount / 2000) * 10) / 10}} sheets)
+ {{if value.amount >= 2000}}
+ {{if data.menu == 4}}
+ {{:helper.link('1x', 'eject', {'lathe_ejectsheet': value.id, 'lathe_ejectsheet_amt': 1})}}
+ {{:helper.link('C', 'eject', {'lathe_ejectsheet': value.id, 'lathe_ejectsheet_amt': 'custom'})}}
+ {{if value.amount >= 2000*5}}
+ {{:helper.link('5x', 'eject', {'lathe_ejectsheet': value.id, 'lathe_ejectsheet_amt': 5})}}
+ {{/if}}
+ {{:helper.link('All', 'eject', {'lathe_ejectsheet': value.id, 'lathe_ejectsheet_amt': 50})}}
+ {{else}}
+ {{:helper.link('1x', 'eject', {'imprinter_ejectsheet': value.id, 'imprinter_ejectsheet_amt': 1})}}
+ {{:helper.link('C', 'eject', {'imprinter_ejectsheet': value.id, 'imprinter_ejectsheet_amt': 'custom'})}}
+ {{if value.amount >= 2000*5}}
+ {{:helper.link('5x', 'eject', {'imprinter_ejectsheet': value.id, 'imprinter_ejectsheet_amt': 5})}}
+ {{/if}}
+ {{:helper.link('All', 'eject', {'imprinter_ejectsheet': value.id, 'imprinter_ejectsheet_amt': 50})}}
+ {{/if}}
+ {{/if}}
+
+ {{/for}}
+ {{else data.submenu == 3}}
+
+
+ {{:helper.link('Purge All', 'trash', data.menu == 4 ? {'disposeallP': 1} : {'disposeallI' : 1})}}
+
+ {{for data.loaded_chemicals}}
+
+
* {{:value.volume}} of {{:value.name}}
+ {{:helper.link('Purge', 'trash', data.menu == 4 ? {'disposeP': value.id} : {'disposeI': value.id})}}
+
+ {{/for}}
+ {{/if}}
+ {{else data.menu == 6}}
+ {{if data.submenu == 0}}
+
Settings:
+
{{:helper.link('Sync Database with Network', 'refresh', {'sync': 1}, data.sync ? null : 'disabled')}}
+
{{:helper.link('Connect to Research Network', 'plug', {'togglesync': 1}, data.sync ? 'selected' : null)}}
+
{{:helper.link('Disconnect from Research Network', 'chain-broken', {'togglesync': 1}, data.sync ? null : 'selected')}}
+
{{:helper.link('Device Linkage Menu', 'chain', {'menu': 6, 'submenu': 1})}}
+ {{if data.admin}}
+
{{:helper.link('[ADMIN] Maximize Research Levels', 'exclamation', {'maxresearch': 1})}}
+ {{/if}}
+
{{:helper.link('Reset Database', 'trash-o', {'reset': 1})}}
+ {{else data.submenu == 1}}
+
Device Linkage Menu:
+
{{:helper.link('Re-sync with Nearby Devices', 'chain', {'find_device': 1})}}
+
Linked Devices:
+
+ {{if data.linked_destroy}}
+
* Destructive Analyzer
+ {{:helper.link('Unlink', 'chain-broken', {'disconnect': 'destroy'})}}
+ {{else}}
+
* No Destructive Analyzer Linked
+ {{/if}}
+
+
+ {{if data.linked_lathe}}
+
* Protolathe
+ {{:helper.link('Unlink', 'chain-broken', {'disconnect': 'lathe'})}}
+ {{else}}
+
* No Protolathe Linked
+ {{/if}}
+
+
+ {{if data.linked_imprinter}}
+
* Circuit Imprinter
+ {{:helper.link('Unlink', 'chain-broken', {'disconnect': 'imprinter'})}}
+ {{else}}
+
* No Circuit Imprinter Linked
+ {{/if}}
+
+ {{/if}}
+ {{/if}}
+