diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index b0200b22ab2..0b77d811e63 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -439,7 +439,7 @@ src.beaker = B B.forceMove(src) to_chat(user, "You add the beaker to the machine!") - src.updateUsrDialog() + nanomanager.update_uis(src) icon_state = "mixer1" else if(istype(B, /obj/item/weapon/storage/pill_bottle)) @@ -454,7 +454,7 @@ src.loaded_pill_bottle = B B.forceMove(src) to_chat(user, "You add the pill bottle into the dispenser slot!") - src.updateUsrDialog() + nanomanager.update_uis(src) return /obj/machinery/chem_master/Topic(href, href_list) @@ -673,7 +673,7 @@ else if(href_list["bottle_sprite"]) bottlesprite = href_list["bottle_sprite"] - src.updateUsrDialog() + . = 1 return /obj/machinery/chem_master/attack_ai(mob/user as mob) @@ -683,9 +683,12 @@ return src.attack_hand(user) /obj/machinery/chem_master/attack_hand(mob/user as mob) - if(stat & BROKEN) - return - user.set_machine(src) + if(..()) + return 1 + ui_interact(user) + return + +/obj/machinery/chem_master/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1) if(!(user.client in has_sprites)) spawn() has_sprites += user.client @@ -693,61 +696,33 @@ usr << browse_rsc(icon('icons/obj/chemical.dmi', "pill" + num2text(i)), "pill[i].png") for(var/i = 1 to MAX_BOTTLE_SPRITE) usr << browse_rsc(icon('icons/obj/chemical.dmi', "bottle" + num2text(i)), "bottle[i].png") - var/dat = "" - if(!beaker) - dat = "Please insert beaker.
" - if(src.loaded_pill_bottle) - dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

" - else - dat += "No pill bottle inserted.

" - dat += "Close" - else - var/datum/reagents/R = beaker.reagents - dat += "Eject beaker and Clear Buffer
" - if(src.loaded_pill_bottle) - dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

" - else - dat += "No pill bottle inserted.

" - if(!R.total_volume) - dat += "Beaker is empty." - else - dat += "Add to buffer:
" - for(var/datum/reagent/G in R.reagent_list) - dat += "[G.name] , [G.volume] Units - " - dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(All) " - dat += "(Custom)
" - - dat += "
Transfer to [(!mode ? "disposal" : "beaker")]:
" - if(reagents.total_volume) - for(var/datum/reagent/N in reagents.reagent_list) - dat += "[N.name] , [N.volume] Units - " - dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(All) " - dat += "(Custom)
" - else - dat += "Empty
" - if(!condi) - dat += "

Create pill (50 units max)
" - dat += "Create multiple pills
" - dat += "

Create patch (40 units max)
" - dat += "Create multiple patches
" - dat += "Create bottle (30 units max)" - else - dat += "

Create pack (10 units max)
" - dat += "Create bottle (50 units max)" - if(!condi) - user << browse("Chemmaster 3000Chemmaster menu:

[dat]", "window=chem_master;size=575x400") - else - user << browse("Condimaster 3000Condimaster menu:

[dat]", "window=chem_master;size=575x400") - onclose(user, "chem_master") - return + var/data = list() + + data["condi"] = condi + data["loaded_pill_bottle"] = (loaded_pill_bottle ? 1 : 0) + if(loaded_pill_bottle) + data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len + data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.storage_slots + + data["beaker"] = (beaker ? 1 : 0) + if(beaker) + var/list/beaker_reagents_list = list() + data["beaker_reagents"] = beaker_reagents_list + for(var/datum/reagent/R in beaker.reagents.reagent_list) + beaker_reagents_list[++beaker_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description) + var/list/buffer_reagents_list = list() + data["buffer_reagents"] = buffer_reagents_list + for(var/datum/reagent/R in reagents.reagent_list) + buffer_reagents_list[++buffer_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description) + + data["pillsprite"] = pillsprite + data["mode"] = mode + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "chem_master.tmpl", src.name, 575, 400) + ui.set_initial_data(data) + ui.open() /obj/machinery/chem_master/proc/isgoodnumber(var/num) if(isnum(num)) diff --git a/nano/templates/chem_master.tmpl b/nano/templates/chem_master.tmpl new file mode 100644 index 00000000000..0fcea280c42 --- /dev/null +++ b/nano/templates/chem_master.tmpl @@ -0,0 +1,83 @@ +{{if data.beaker}} +
{{:helper.link('Eject Beaker and Clear Buffer', 'eject', {'eject': 1})}}
+
+

Add to buffer:

+ {{for data.beaker_reagents}} +
+
{{:value.name}}, {{:value.volume}} units
+ {{:helper.link('Analyze', 'search', {'analyze': 1, 'desc': value.description, 'name': value.name})}} + {{:helper.link('1', 'plus', {'add': value.id, 'amount': 1})}} + {{:helper.link('5', 'plus', {'add': value.id, 'amount': 5})}} + {{:helper.link('10', 'plus', {'add': value.id, 'amount': 10})}} + {{:helper.link('All', 'plus', {'add': value.id, 'amount': value.volume})}} + {{:helper.link('Custom', 'plus', {'addcustom': value.id})}} +
+ {{/for}} +
+
+

+
+ Transfer to {{:helper.link(data.mode ? 'beaker' : 'disposal', 'arrows-h', {'toggle': 1})}} +
+

+ {{for data.buffer_reagents}} +
+
{{:value.name}}, {{:value.volume}} units
+ {{:helper.link('Analyze', 'search', {'analyze': 1, 'desc': value.description, 'name': value.name})}} + {{:helper.link('1', 'plus', {'remove': value.id, 'amount': 1})}} + {{:helper.link('5', 'plus', {'remove': value.id, 'amount': 5})}} + {{:helper.link('10', 'plus', {'remove': value.id, 'amount': 10})}} + {{:helper.link('All', 'plus', {'remove': value.id, 'amount': value.volume})}} + {{:helper.link('Custom', 'plus', {'removecustom': value.id})}} +
+ {{/for}} +
+
+

Containers:

+
+ {{if data.condi}} + {{:helper.link('Create pill (10u max)', 'arrow-right', {'createpill': 1})}} + {{:helper.link('Create bottle (50u max)', 'arrow-right', {'createpill': 1})}} + {{else}} + + + + + + + + + + + + + + +
+ {{:helper.link('Create pill (50u max)', 'arrow-right', {'createpill': 1})}} + + {{:helper.link('Multiple', 'arrow-right', {'createpill_multiple': 1})}} + + {{:helper.link('Style', 'pencil', {'change_pill': 1})}} + + +
+ {{:helper.link('Create patch (40u max)', 'arrow-right', {'createpatch': 1})}} + + {{:helper.link('Multiple', 'arrow-right', {'createpatch_multiple': 1})}} +
+ {{:helper.link('Create bottle (30u max)', 'arrow-right', {'createbottle': 1})}} +
+ {{/if}} +
+
+{{else}} + No beaker loaded
+{{/if}} + + {{if data.loaded_pill_bottle}} + {{:helper.link('Pill Bottle (' + data.loaded_pill_bottle_contents_len + '/' + data.loaded_pill_bottle_storage_slots + ')', 'eject', {'ejectp': 1})}} + {{else}} + {{:helper.link('No Pill Bottle', 'eject', {}, 'disabled')}} + {{/if}} + \ No newline at end of file