From dd088ae636fece1f6f515814118a068497c9907d Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Wed, 12 Aug 2020 11:13:52 -0700 Subject: [PATCH] TGUI Mulebot --- code/modules/mob/living/bot/mulebot.dm | 78 ++++++------- tgui/packages/tgui/interfaces/MuleBot.js | 139 +++++++++++++++++++++++ 2 files changed, 172 insertions(+), 45 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/MuleBot.js diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm index 67fc8fd051..fa0b76009f 100644 --- a/code/modules/mob/living/bot/mulebot.dm +++ b/code/modules/mob/living/bot/mulebot.dm @@ -61,72 +61,57 @@ load(C) /mob/living/bot/mulebot/attack_hand(var/mob/user) - interact(user) + tgui_interact(user) -/mob/living/bot/mulebot/proc/interact(var/mob/user) - var/dat - dat += "Multiple Utility Load Effector Mk. III

" - dat += "ID: [suffix]
" - dat += "Power: [on ? "On" : "Off"]
" +/mob/living/bot/mulebot/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MuleBot", "Mulebot [suffix ? "([suffix])" : ""]") + ui.open() - if(!open) - dat += "
Current Load: [load ? load.name : "none"]
" +/mob/living/bot/mulebot/tgui_data(mob/user) + var/list/data = list( + "suffix" = suffix, + "power" = on, + "issilicon" = issilicon(user), + "load" = load, + "locked" = locked, + "auto_return" = auto_return, + "crates_only" = crates_only, + "hatch" = open, + "safety" = safety, + ) + return data - if(locked) - dat += "
Controls are locked" - else - dat += "
Controls are unlocked

" - - if(!locked || issilicon(user)) - dat += "Toggle power
" - dat += "Stop
" - dat += "Proceed
" - dat += "Return to home
" - dat += "Set destination
" - dat += "Set home
" - dat += "Toggle auto return home ([auto_return ? "On" : "Off"])
" - dat += "Toggle non-standard cargo ([crates_only ? "Off" : "On"])
" - - if(load) - dat += "Unload now
" - dat += "
The maintenance hatch is closed.
" - - else - if(!issilicon(user)) - dat += "The maintenance hatch is open.

" - - dat += "Toggle safety ([safety ? "On" : "Off - DANGER"])
" - else - dat += "The bot is in maintenance mode and cannot be controlled.
" - - user << browse("Mulebot [suffix ? "([suffix])" : ""][dat]", "window=mulebot;size=350x500") - onclose(user, "mulebot") - return - -/mob/living/bot/mulebot/Topic(href, href_list) +/mob/living/bot/mulebot/tgui_act(action, params) if(..()) - return - usr.set_machine(src) + return TRUE + add_fingerprint(usr) - switch(href_list["op"]) + switch(action) if("power") if(on) turn_off() else turn_on() visible_message("[usr] switches [on ? "on" : "off"] [src].") + . = TRUE if("stop") obeyCommand("Stop") + . = TRUE if("go") obeyCommand("GoTD") + . = TRUE if("home") obeyCommand("Home") + . = TRUE if("destination") obeyCommand("SetD") + . = TRUE if("sethome") var/new_dest @@ -138,20 +123,23 @@ if(new_dest) home = get_turf(beaconlist[new_dest]) homeName = new_dest + . = TRUE if("unload") unload() + . = TRUE if("autoret") auto_return = !auto_return + . = TRUE if("cargotypes") crates_only = !crates_only + . = TRUE if("safety") safety = !safety - - interact(usr) + . = TRUE /mob/living/bot/mulebot/attackby(var/obj/item/O, var/mob/user) ..() diff --git a/tgui/packages/tgui/interfaces/MuleBot.js b/tgui/packages/tgui/interfaces/MuleBot.js new file mode 100644 index 0000000000..57794e0426 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MuleBot.js @@ -0,0 +1,139 @@ +import { round } from 'common/math'; +import { Fragment } from 'inferno'; +import { useBackend } from "../backend"; +import { Box, Button, Flex, Icon, LabeledList, ProgressBar, Section } from "../components"; +import { Window } from "../layouts"; + +export const MuleBot = (props, context) => { + const { act, data } = useBackend(context); + const { + suffix, + power, + load, + locked, + issilicon, + auto_return, + crates_only, + hatch, + safety, + } = data; + return ( + + +
+ + + {suffix} + + act("unload")} /> + }> + {load ? load : "None."} + + + {hatch ? : } +
+
+
+ ); +}; + +const MuleBotClosed = (props, context) => { + const { act, data } = useBackend(context); + const { + suffix, + power, + load, + locked, + issilicon, + auto_return, + crates_only, + open, + safety, + } = data; + + return ( +
act("power")} /> + }> + {(locked && !issilicon) ? ( + This interface is currently locked. + ) : ( + +
+ ); +}; + +const MuleBotOpen = (props, context) => { + const { act, data } = useBackend(context); + const { + suffix, + power, + load, + locked, + issilicon, + auto_return, + crates_only, + open, + safety, + } = data; + + return ( +
+
+ ); +}; \ No newline at end of file