Merge pull request #4961 from monster860/chemmaster-nanoui

The Long-Requested Nano-UI-ification of the ChemMaster
This commit is contained in:
Fox McCloud
2016-07-11 21:02:25 -04:00
committed by GitHub
2 changed files with 119 additions and 61 deletions
+36 -61
View File
@@ -439,7 +439,7 @@
src.beaker = B
B.forceMove(src)
to_chat(user, "<span class='notice'>You add the beaker to the machine!</span>")
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, "<span class='notice'>You add the pill bottle into the dispenser slot!</span>")
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.<BR>"
if(src.loaded_pill_bottle)
dat += "<A href='?src=\ref[src];ejectp=1'>Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]</A><BR><BR>"
else
dat += "No pill bottle inserted.<BR><BR>"
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
else
var/datum/reagents/R = beaker.reagents
dat += "<A href='?src=\ref[src];eject=1'>Eject beaker and Clear Buffer</A><BR>"
if(src.loaded_pill_bottle)
dat += "<A href='?src=\ref[src];ejectp=1'>Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]</A><BR><BR>"
else
dat += "No pill bottle inserted.<BR><BR>"
if(!R.total_volume)
dat += "Beaker is empty."
else
dat += "Add to buffer:<BR>"
for(var/datum/reagent/G in R.reagent_list)
dat += "[G.name] , [G.volume] Units - "
dat += "<A href='?src=\ref[src];analyze=1;desc=[G.description];name=[G.name]'>(Analyze)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=1'>(1)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=5'>(5)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=10'>(10)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=[G.volume]'>(All)</A> "
dat += "<A href='?src=\ref[src];addcustom=[G.id]'>(Custom)</A><BR>"
dat += "<HR>Transfer to <A href='?src=\ref[src];toggle=1'>[(!mode ? "disposal" : "beaker")]:</A><BR>"
if(reagents.total_volume)
for(var/datum/reagent/N in reagents.reagent_list)
dat += "[N.name] , [N.volume] Units - "
dat += "<A href='?src=\ref[src];analyze=1;desc=[N.description];name=[N.name]'>(Analyze)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=1'>(1)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=5'>(5)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=10'>(10)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=[N.volume]'>(All)</A> "
dat += "<A href='?src=\ref[src];removecustom=[N.id]'>(Custom)</A><BR>"
else
dat += "Empty<BR>"
if(!condi)
dat += "<HR><BR><A href='?src=\ref[src];createpill=1'>Create pill (50 units max)</A><a href=\"?src=\ref[src]&change_pill=1\"><img src=\"pill[pillsprite].png\" /></a><BR>"
dat += "<A href='?src=\ref[src];createpill_multiple=1'>Create multiple pills</A><BR>"
dat += "<HR><BR><A href='?src=\ref[src];createpatch=1'>Create patch (40 units max)</A><BR>"
dat += "<A href='?src=\ref[src];createpatch_multiple=1'>Create multiple patches</A><BR>"
dat += "<A href='?src=\ref[src];createbottle=1'>Create bottle (30 units max)</A>"
else
dat += "<HR><BR><A href='?src=\ref[src];createpill=1'>Create pack (10 units max)</A><BR>"
dat += "<A href='?src=\ref[src];createbottle=1'>Create bottle (50 units max)</A>"
if(!condi)
user << browse("<TITLE>Chemmaster 3000</TITLE>Chemmaster menu:<BR><BR>[dat]", "window=chem_master;size=575x400")
else
user << browse("<TITLE>Condimaster 3000</TITLE>Condimaster menu:<BR><BR>[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))
+83
View File
@@ -0,0 +1,83 @@
{{if data.beaker}}
<div class='item'>{{:helper.link('Eject Beaker and Clear Buffer', 'eject', {'eject': 1})}}</div>
<div class='statusDisplay'>
<h3>Add to buffer:</h3>
{{for data.beaker_reagents}}
<div class='line'>
<div class='itemLabel'>{{:value.name}}, {{:value.volume}} units</div>
{{: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})}}
</div>
{{/for}}
</div>
<div class='statusDisplay'>
<h3>
<div class='item'>
Transfer to {{:helper.link(data.mode ? 'beaker' : 'disposal', 'arrows-h', {'toggle': 1})}}
</div>
</h3>
{{for data.buffer_reagents}}
<div class='line'>
<div class='itemLabel'>{{:value.name}}, {{:value.volume}} units</div>
{{: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})}}
</div>
{{/for}}
</div>
<div class='statusDisplay'>
<h3>Containers:</h3>
<div class='item'>
{{if data.condi}}
{{:helper.link('Create pill (10u max)', 'arrow-right', {'createpill': 1})}}
{{:helper.link('Create bottle (50u max)', 'arrow-right', {'createpill': 1})}}
{{else}}
<table>
<tr>
<td>
{{:helper.link('Create pill (50u max)', 'arrow-right', {'createpill': 1})}}
</td>
<td>
{{:helper.link('Multiple', 'arrow-right', {'createpill_multiple': 1})}}
</td>
<td>
{{:helper.link('Style', 'pencil', {'change_pill': 1})}}
</td>
<td>
<img src='pill{{:data.pillsprite}}.png'>
</td>
</tr>
<tr>
<td>
{{:helper.link('Create patch (40u max)', 'arrow-right', {'createpatch': 1})}}
</td>
<td>
{{:helper.link('Multiple', 'arrow-right', {'createpatch_multiple': 1})}}
</td>
</tr>
<tr>
<td>
{{:helper.link('Create bottle (30u max)', 'arrow-right', {'createbottle': 1})}}
</td>
</tr>
</table>
{{/if}}
</div>
</div>
{{else}}
<span class='item'>No beaker loaded</span><br>
{{/if}}
<span class='item'>
{{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}}
</span>