From 08231fc897ce8f4541e88e1520a314bf3faeab7f Mon Sep 17 00:00:00 2001 From: Edan52 <29551695+Edan52@users.noreply.github.com> Date: Sat, 19 Sep 2020 21:23:40 +0100 Subject: [PATCH] tankdispenser --- .../game/objects/structures/tank_dispenser.dm | 51 ++++++++----------- nano/templates/tank_dispenser.tmpl | 7 --- .../packages/tgui/interfaces/TankDispenser.js | 33 ++++++++++++ tgui/packages/tgui/public/tgui.bundle.js | 2 +- 4 files changed, 55 insertions(+), 38 deletions(-) delete mode 100644 nano/templates/tank_dispenser.tmpl create mode 100644 tgui/packages/tgui/interfaces/TankDispenser.js diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index 692d15d79ec..4528e9db165 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -57,24 +57,37 @@ if(..()) return 1 add_fingerprint(user) - ui_interact(user) + tgui_interact(user) /obj/structure/dispenser/attack_ghost(mob/user) - ui_interact(user) + tgui_interact(user) -/obj/structure/dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, master_ui = null, datum/topic_state/state = GLOB.default_state) - user.set_machine(src) - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) +/obj/structure/dispenser/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "tank_dispenser.tmpl", name, 275, 100, state = state) + ui = new(user, src, ui_key, "TankDispenser", name, 275, 100, master_ui, state) ui.open() -/obj/structure/dispenser/ui_data(user) +/obj/structure/dispenser/tgui_data(user) var/list/data = list() data["o_tanks"] = LAZYLEN(stored_oxygen_tanks) data["p_tanks"] = LAZYLEN(stored_plasma_tanks) return data +/obj/structure/dispenser/tgui_act(action, list/params) + if(..()) + return + + switch(action) + if("oxygen") + try_remove_tank(usr, stored_oxygen_tanks) + + if("plasma") + try_remove_tank(usr, stored_plasma_tanks) + + add_fingerprint(usr) + return TRUE + /obj/structure/dispenser/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/tank/oxygen) || istype(I, /obj/item/tank/air) || istype(I, /obj/item/tank/anesthetic)) try_insert_tank(user, stored_oxygen_tanks, I) @@ -94,28 +107,6 @@ return return ..() -/obj/structure/dispenser/Topic(href, href_list) - if(..()) - return TRUE - - if(Adjacent(usr)) - usr.set_machine(src) - - // The oxygen tank button - if(href_list["oxygen"]) - try_remove_tank(usr, stored_oxygen_tanks) - - // The plasma tank button - if(href_list["plasma"]) - try_remove_tank(usr, stored_plasma_tanks) - - add_fingerprint(usr) - updateUsrDialog() - SSnanoui.try_update_ui(usr, src) - else - SSnanoui.close_user_uis(usr,src) - return TRUE - /// Called when the user clicks on the oxygen or plasma tank UI buttons, and tries to withdraw a tank. /obj/structure/dispenser/proc/try_remove_tank(mob/living/user, list/tank_list) if(!LAZYLEN(tank_list)) @@ -144,7 +135,7 @@ tank_list.Add(T) update_icon() to_chat(user, "You put [T] in [src].") - SSnanoui.try_update_ui(user, src) + SStgui.try_update_ui(user, src) /obj/structure/tank_dispenser/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) diff --git a/nano/templates/tank_dispenser.tmpl b/nano/templates/tank_dispenser.tmpl deleted file mode 100644 index a634a2dde8e..00000000000 --- a/nano/templates/tank_dispenser.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
-
Dispense:
-
- {{:helper.link('Plasma (' + helper.smoothRound(data.p_tanks) + ')', data.p_tanks ? 'square' : 'square-o', {'plasma' : 1}, data.p_tanks ? null : 'disabled')}} - {{:helper.link('Oxygen (' + helper.smoothRound(data.o_tanks) + ')', data.o_tanks ? 'square' : 'square-o', {'oxygen' : 1}, data.o_tanks ? null : 'disabled')}} -
-
\ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/TankDispenser.js b/tgui/packages/tgui/interfaces/TankDispenser.js new file mode 100644 index 00000000000..ee30b9a5649 --- /dev/null +++ b/tgui/packages/tgui/interfaces/TankDispenser.js @@ -0,0 +1,33 @@ +import { useBackend } from "../backend"; +import { Button, LabeledList, Box, AnimatedNumber, Section } from "../components"; +import { Window } from "../layouts"; + +export const TankDispenser = (props, context) => { + const { act, data } = useBackend(context); + const { + o_tanks, + p_tanks, + } = data; + return ( + + + +