From ba4fa36984d3c69526fea640afa45c4b29252fab Mon Sep 17 00:00:00 2001 From: SinTwo Date: Mon, 23 May 2016 17:59:41 -0400 Subject: [PATCH] Adds UI and a few fixes --- code/modules/xenobio2/machinery/injector.dm | 49 +++++++++------ .../xenobio2/machinery/injector_computer.dm | 56 +++++++++++++----- nano/css/icons.css | 1 + nano/css/shared.css | 44 +++++++++++++- nano/images/uiIcons16.png | Bin 4939 -> 4976 bytes nano/js/nano_base_helpers.js | 11 +++- nano/templates/xenobio_computer.tmpl | 51 +++++++++++----- 7 files changed, 160 insertions(+), 52 deletions(-) diff --git a/code/modules/xenobio2/machinery/injector.dm b/code/modules/xenobio2/machinery/injector.dm index 8af7aea495c..b461e8678e5 100644 --- a/code/modules/xenobio2/machinery/injector.dm +++ b/code/modules/xenobio2/machinery/injector.dm @@ -1,9 +1,9 @@ /* This file contains: - + Manual Injector: Manually injects chemicals into a xenobiological creature from a linked machine. - + */ /obj/machinery/xenobio2/manualinjector name = "biological injector" @@ -16,7 +16,7 @@ var/mob/living/occupant var/obj/item/weapon/reagent_containers/glass/beaker var/obj/machinery/computer/xenobio2/computer - + circuit = /obj/item/weapon/circuitboard/xenobioinjectormachine /obj/machinery/xenobio2/manualinjector/New() @@ -27,7 +27,7 @@ /obj/machinery/xenobio2/manualinjector/map/New() ..() - beaker = new /obj/item/weapon/reagent_containers/glass/bottle(src) + beaker = new /obj/item/weapon/reagent_containers/glass/beaker(src) circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) @@ -35,7 +35,7 @@ component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) RefreshParts() - + /obj/machinery/xenobio2/manualinjector/update_icon() if(beaker) if(occupant) @@ -44,12 +44,12 @@ icon_state = "biogen-work" else icon_state = "biogen-empty" - + /obj/machinery/xenobio2/manualinjector/MouseDrop_T(mob/target, mob/user) if(user.stat || user.restrained()) return move_into_injector(user,target) - + /obj/machinery/xenobio2/manualinjector/proc/move_into_injector(var/mob/user,var/mob/living/victim) if(src.occupant) user << "The injector is full, empty it first!" @@ -68,14 +68,22 @@ victim.client.eye = src victim.forceMove(src) src.occupant = victim - + /obj/machinery/xenobio2/manualinjector/proc/eject_contents() - for(var/obj/thing in (contents - component_parts - circuit)) + for(var/obj/thing in (contents - component_parts - circuit - beaker)) thing.forceMove(loc) if(occupant) occupant.forceMove(loc) occupant = null - + return + +/obj/machinery/xenobio2/manualinjector/proc/eject_beaker() + if(beaker) + var/obj/item/weapon/reagent_containers/glass/beaker/B = beaker + B.loc = loc + beaker = null + return + /obj/machinery/xenobio2/manualinjector/proc/inject_reagents() if(!occupant) return @@ -84,18 +92,25 @@ beaker.reagents.trans_to_holder(X.reagents, computer.transfer_amount, 1, 0) else beaker.reagents.trans_to_mob(occupant, computer.transfer_amount) - + /obj/machinery/xenobio2/manualinjector/attackby(var/obj/item/W, var/mob/user) //Let's try to deconstruct first. if(istype(W, /obj/item/weapon/screwdriver)) default_deconstruction_screwdriver(user, W) return - + if(istype(W, /obj/item/weapon/crowbar) && !occupant) default_deconstruction_crowbar(user, W) return + //are you smashing a beaker in me? Well then insert that shit! + if(istype(W, /obj/item/weapon/reagent_containers/glass/beaker)) + beaker = W + user.drop_from_inventory(W) + W.loc = src + return + //Did you want to link it? if(istype(W, /obj/item/device/multitool)) var/obj/item/device/multitool/P = W @@ -109,12 +124,12 @@ user << " You store the [src] in the [P]'s buffer!" P.connectable = src return - + if(panel_open) user << "Close the panel first!" var/obj/item/weapon/grab/G = W - + if(!istype(G)) return ..() @@ -123,11 +138,11 @@ return move_into_injector(user,G.affecting) - - + + /obj/item/weapon/circuitboard/xenobioinjectormachine name = T_BOARD("biological injector") build_path = "/obj/machinery/xenobio2/manualinjector" board_type = "machine" origin_tech = list() //To be filled, - req_components = list() //To be filled, \ No newline at end of file + req_components = list() //To be filled, \ No newline at end of file diff --git a/code/modules/xenobio2/machinery/injector_computer.dm b/code/modules/xenobio2/machinery/injector_computer.dm index 0460131dd15..8881099ab01 100644 --- a/code/modules/xenobio2/machinery/injector_computer.dm +++ b/code/modules/xenobio2/machinery/injector_computer.dm @@ -1,9 +1,9 @@ /* This file contains: - + Manual Injector: Manually injects chemicals into a xenobiological creature from a linked machine. - + */ /obj/machinery/computer/xenobio2 name = "injector control console" @@ -17,11 +17,17 @@ circuit = /obj/item/weapon/circuitboard/xenobio2computer var/obj/machinery/xenobio2/manualinjector/injector var/transfer_amount - + var/active + /obj/machinery/computer/xenobio2/Destroy() ..() injector.computer = null - + +/obj/machinery/computer/xenobio2/attack_hand(mob/user) + if(..()) + return 1 + ui_interact(user) + /obj/machinery/computer/xenobio2/attackby(var/obj/item/W, var/mob/user) //Did you want to link it? @@ -37,25 +43,41 @@ user << " You store the [src] in the [P]'s buffer!" P.connectable = src return - + ..() /obj/machinery/computer/xenobio2/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) if(!user) return + if(!injector) + return var/list/data = list() data["activity"] = active - if(isxeno(occupant)) - var/mob/living/simple_animal/xeno/X = occupant + data["beaker"] = injector.beaker + if(isxeno(injector.occupant)) + var/mob/living/simple_animal/xeno/X = injector.occupant data["instability"] = (X.mut_level / X.mut_max) else data["instability"] = null - - data["reagentamount"] = beaker.reagents.total_volume - data["reagentmax"] = beaker.reagents.max_volume - + + if(injector.beaker) + data["reagentAmount"] = injector.beaker.reagents.total_volume + data["reagentMax"] = injector.beaker.reagents.maximum_volume + data["reagentMin"] = 0 + else + data["reagentAmount"] = null + data["reagentMax"] = 1 + data["reagentMin"] = 0 + + if(injector.occupant) + data["occupantHealth"] = injector.occupant.health + data["occupantHealthMax"] = injector.occupant.maxHealth + else + data["occupantHealth"] = null + data["occupantHealthMax"] = null + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "xenobio_computer.tmpl", "Injector Control Console UI", 470, 450) @@ -73,15 +95,17 @@ spawn(5) injector.inject_reagents() active = 0 - if(href_list["eject"]) + if(href_list["eject_occupant"]) injector.eject_contents() - + + if(href_list["eject_beaker"]) + injector.eject_beaker() + usr.set_machine(src) src.add_fingerprint(usr) - + /obj/item/weapon/circuitboard/xenobio2computer name = T_BOARD("injector control console") build_path = "/obj/item/weapon/circuitboard/xenobio2computer" board_type = "computer" - origin_tech = list() //To be filled, - \ No newline at end of file + origin_tech = list() //To be filled, diff --git a/nano/css/icons.css b/nano/css/icons.css index 746f6e5b090..a6bec0f0d03 100644 --- a/nano/css/icons.css +++ b/nano/css/icons.css @@ -184,6 +184,7 @@ .uiIcon16.icon-pin-s { background-position: -144px -144px; } .uiIcon16.icon-phone { background-position: -160px -144px; } .uiIcon16.icon-list { background-position: -176px -144px; } +.uiIcon16.icon-syringe { background-position: -192px -144px; } .uiIcon16.icon-play { background-position: 0 -160px; } .uiIcon16.icon-pause { background-position: -16px -160px; } .uiIcon16.icon-seek-next { background-position: -32px -160px; } diff --git a/nano/css/shared.css b/nano/css/shared.css index 8b640c3b57c..a50f96a3c7d 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -366,7 +366,7 @@ div.notice { background: #000000; } -.displayBarText { +.displayBarText, .displayBarVerticalText, .displayBarBeakerText{ position: absolute; top: -2px; left: 5px; @@ -384,6 +384,48 @@ div.notice { float: left; } +.displayBarVertical { + position: relative; + width: 16px; + height: 200px; + border: 1px solid #666666; + float: left; + margin: 0 5px 0 0; + overflow: hidden; + background: #40628a; +} + +.displayBarVerticalFill { + width: 100%; + height: 0%; + overflow: hidden; + float: left; + background: #000000; +} + +/*used in xenobio2 computer*/ + +.displayBarBeaker { + position: relative; + width: 100px; + height: 110px; + border-right: 2px solid rgb(102, 179, 255); + border-left: 2px solid rgb(102, 179, 255); + border-bottom: 2px solid rgb(102, 179, 255); + float: left; + margin: 0 5px 0 0; + overflow: hidden; + background: #40628a; +} + +.displayBarBeakerFill { + width: 100%; + height: 0%; + overflow: hidden; + float: left; + background: rgba(153, 204, 255, 0.3); +} + .displayBarFill.alignRight { float: right; } diff --git a/nano/images/uiIcons16.png b/nano/images/uiIcons16.png index 61cfd560c7fc415ccd0b605fa7928d0600ecc9e3..2017c88d6cc7e1827a1542f8aa9cc1af02d47431 100644 GIT binary patch delta 3801 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 b+TK2miZ{JytDw0F`F(V?3^a)v*zkV?hTShx delta 3762 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 diff --git a/nano/js/nano_base_helpers.js b/nano/js/nano_base_helpers.js index 20e6160fed4..2f0f59772d3 100644 --- a/nano/js/nano_base_helpers.js +++ b/nano/js/nano_base_helpers.js @@ -91,8 +91,8 @@ NanoBaseHelpers = function () capitalizeFirstLetter: function(string) { return string.charAt(0).toUpperCase() + string.slice(1); }, - // Display a bar. Used to show health, capacity, etc. - displayBar: function(value, rangeMin, rangeMax, styleClass, showText) { + // Display a bar. Used to show health, capacity, etc. Use difClass if the entire display bar class should be different + displayBar: function(value, rangeMin, rangeMax, styleClass, showText, difClass) { if (rangeMin < rangeMax) { @@ -126,10 +126,15 @@ NanoBaseHelpers = function () { showText = ''; } + + if (typeof difClass == 'undefined' || !difClass) + { + return '
' + showText + '
'; + } var percentage = Math.round((value - rangeMin) / (rangeMax - rangeMin) * 100); - return '
' + showText + '
'; + return '
' + showText + '
'; }, // Display DNA Blocks (for the DNA Modifier UI) displayDNABlocks: function(dnaString, selectedBlock, selectedSubblock, blockSize, paramKey) { diff --git a/nano/templates/xenobio_computer.tmpl b/nano/templates/xenobio_computer.tmpl index 3b75fe32a5c..eaf9a8526df 100644 --- a/nano/templates/xenobio_computer.tmpl +++ b/nano/templates/xenobio_computer.tmpl @@ -6,24 +6,45 @@ Used In File(s): \code\modules\xenobio2\machines\injector_computer.dm {{if data.activity}} Scanning... {{else}} -

Injector Sensor Readings:

-
- {{if data.instability}} -
+
+ {{if data.beaker}} + {{:data.reagentAmount}}u / {{:data.reagentMax}}u + {{:helper.displayBar(data.reagentAmount, data.reagentMax, data.reagentMin, 'good', null, 'displayBarBeaker')}} + {{else}} + ERRR% + {{:helper.displayBar(data.reagentAmount, data.reagentMax, data.reagentMin, 'good', null, 'displayBarBeaker')}} + {{/if}} +
+
+

Sensor Readings:

+
+
+ Instability: +
- Instability:
- {{:data.instability}}% + {{if data.instability}} + {{:data.instability}}% + {{else}} + ERRR% Please contact your local technician for assistance. + {{/if}} +
+
+ Occupant Health: +
+
+ {{if data.occupantHealth}} + {{:data.occupantHealth}}/{{:data.occupantHealthMax}} + {{else}} + ERRR% Please contact your local technician for assistance. + {{/if}}
- {{else}} -
-
- Instability:
- ERRR%
Please contact your local technician for assistance. -
-

- {{/if}}
-

Controls

+

Controls:

+
+ {{:helper.link('Eject Beaker', 'eject', {'eject_beaker' : 1})}} {{:helper.link('Eject Occupant', 'eject', {'eject_occupant' : 1})}} {{:helper.link('Inject Occupant', 'syringe', {'inject_target' : 1})}} +
+
+ {{/if}} \ No newline at end of file