Adds UI and a few fixes

This commit is contained in:
SinTwo
2016-05-23 17:59:41 -04:00
parent a797f2007a
commit ba4fa36984
7 changed files with 160 additions and 52 deletions

View File

@@ -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 << "<span class='danger'>The injector is full, empty it first!</span>"
@@ -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 << "<span class='warning'> You store the [src] in the [P]'s buffer!</span>"
P.connectable = src
return
if(panel_open)
user << "<span class='warning'>Close the panel first!</span>"
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,
req_components = list() //To be filled,

View File

@@ -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 << "<span class='warning'> You store the [src] in the [P]'s buffer!</span>"
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,
origin_tech = list() //To be filled,