From d769358194280d0b75d3a2d4375eb3e32138e1ab Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Sun, 16 Aug 2020 17:05:35 -0700 Subject: [PATCH] TGUI Stacking Machine --- code/modules/mining/machine_stacking.dm | 61 ++++++++++--------- .../tgui/interfaces/MiningStackingConsole.js | 51 ++++++++++++++++ 2 files changed, 82 insertions(+), 30 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/MiningStackingConsole.js diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index ec6b7623df6..c1d6c4ee4c3 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -25,46 +25,47 @@ /obj/machinery/mineral/stacking_unit_console/attack_hand(mob/user) add_fingerprint(user) - interact(user) + tgui_interact(user) -/obj/machinery/mineral/stacking_unit_console/interact(mob/user) - user.set_machine(src) +/obj/machinery/mineral/stacking_unit_console/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MiningStackingConsole", name) + ui.open() - var/dat - - dat += text("

Stacking unit console


") +/obj/machinery/mineral/stacking_unit_console/tgui_data(mob/user) + var/list/data = ..() + data["stacktypes"] = list() for(var/stacktype in machine.stack_storage) if(machine.stack_storage[stacktype] > 0) - dat += "" - dat += "
[capitalize(stacktype)]:[machine.stack_storage[stacktype]]\[release\]

" - dat += text("
Stacking: [machine.stack_amt] \[change\]

") + data["stacktypes"].Add(list(list( + "type" = stacktype, + "amt" = machine.stack_storage[stacktype], + ))) + data["stackingAmt"] = machine.stack_amt + return data - user << browse("[dat]", "window=console_stacking_machine") - onclose(user, "console_stacking_machine") - - -/obj/machinery/mineral/stacking_unit_console/Topic(href, href_list) +/obj/machinery/mineral/stacking_unit_console/tgui_act(action, list/params) if(..()) - return 1 + return TRUE - if(href_list["change_stack"]) - var/choice = input("What would you like to set the stack amount to?") as null|anything in list(1,5,10,20,50) - if(!choice) return - machine.stack_amt = choice + switch(action) + if("change_stack") + machine.stack_amt = clamp(text2num(params["amt"]), 1, 50) + . = TRUE - if(href_list["release_stack"]) - if(machine.stack_storage[href_list["release_stack"]] > 0) - var/stacktype = machine.stack_paths[href_list["release_stack"]] - var/obj/item/stack/material/S = new stacktype (get_turf(machine.output)) - S.amount = machine.stack_storage[href_list["release_stack"]] - machine.stack_storage[href_list["release_stack"]] = 0 - S.update_icon() + if("release_stack") + var/stack = params["stack"] + if(machine.stack_storage[stack] > 0) + var/stacktype = machine.stack_paths[stack] + var/obj/item/stack/material/S = new stacktype(get_turf(machine.output)) + S.amount = machine.stack_storage[stack] + machine.stack_storage[stack] = 0 + S.update_icon() + . = TRUE - src.add_fingerprint(usr) - src.updateUsrDialog() - - return + add_fingerprint(usr) /**********************Mineral stacking unit**************************/ diff --git a/tgui/packages/tgui/interfaces/MiningStackingConsole.js b/tgui/packages/tgui/interfaces/MiningStackingConsole.js new file mode 100644 index 00000000000..0aac5ca35c9 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MiningStackingConsole.js @@ -0,0 +1,51 @@ +import { toTitleCase } from 'common/string'; +import { Fragment } from 'inferno'; +import { useBackend, useLocalState } from "../backend"; +import { Box, Button, Collapsible, Dropdown, Flex, Input, NoticeBox, Section, LabeledList, AnimatedNumber, NumberInput } from '../components'; +import { Window } from "../layouts"; +import { sortBy } from 'common/collections'; + +export const MiningStackingConsole = (props, context) => { + const { act, data } = useBackend(context); + + const { + stacktypes, + stackingAmt, + } = data; + + return ( + + +
+ + + act("change_stack", { amt: val })} /> + + + {stacktypes.length && stacktypes.sort().map(stack => ( + act("release_stack", { stack: stack.type })}> + Eject + + }> + + + )) || ( + + No stacks in machine. + + )} + +
+
+
+ ); +};