From 63f3e357442b6b5c60d575532dfe67422cdfcaac Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 9 Mar 2026 00:36:28 +0100 Subject: [PATCH] GPS to tgui (#19263) * GPS to tgui * dead code * lol * default should always work --- code/game/objects/items/devices/gps.dm | 313 +++++++----------- code/game/objects/items/stacks/nanopaste.dm | 2 +- .../types/character/pai/01_basic.dm | 2 +- code/modules/compass/compass_holder.dm | 2 +- .../silicon/robot/robot_modules/event.dm | 5 + .../silicon/robot/robot_modules/station.dm | 7 +- .../silicon/robot/robot_modules/syndicate.dm | 5 + .../living/silicon/robot/sprites/command.dm | 2 + code/modules/telesci/gps_advanced.dm | 77 ----- .../tgui/interfaces/ColorPickerModal.tsx | 2 +- tgui/packages/tgui/interfaces/Gps.tsx | 292 +++++++++++----- .../PreferencesMenu/elements/ColorInput.tsx | 18 +- .../VorePanelElements/VorePanelEditColor.tsx | 2 +- .../styles/interfaces/ColorMatrixEditor.scss | 2 +- .../tgui/styles/interfaces/VorePanel.scss | 18 +- vorestation.dme | 1 - 16 files changed, 365 insertions(+), 385 deletions(-) delete mode 100644 code/modules/telesci/gps_advanced.dm diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 7dce82f98da..7810336ec92 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -23,6 +23,7 @@ GLOBAL_LIST_EMPTY(GPS_list) var/list/tracking_devices var/list/showing_tracked_names var/obj/compass_holder/compass + var/theme pickup_sound = 'sound/items/pickup/device.ogg' drop_sound = 'sound/items/drop/device.ogg' @@ -91,7 +92,7 @@ GLOBAL_LIST_EMPTY(GPS_list) return PROCESS_KILL update_holder() if(holder) - update_compass(TRUE) + update_compass(src, TRUE) /obj/item/gps/Destroy() STOP_PROCESSING(SSobj, src) @@ -115,7 +116,7 @@ GLOBAL_LIST_EMPTY(GPS_list) reachable_z_levels = reachable_z_levels || using_map.get_map_levels(origin.z, long_range) return (target.z in reachable_z_levels) -/obj/item/gps/proc/update_compass(var/update_compass_icon) +/obj/item/gps/proc/update_compass(atom/movable/source, var/update_compass_icon) SIGNAL_HANDLER compass.hide_waypoints(FALSE) var/turf/my_turf = get_turf(src) @@ -157,10 +158,11 @@ GLOBAL_LIST_EMPTY(GPS_list) if(!is_in_processing_list) is_in_processing_list = TRUE START_PROCESSING(SSobj, src) + update_compass(src, TRUE) else is_in_processing_list = FALSE STOP_PROCESSING(SSobj, src) - update_compass() + update_compass(src) update_holder() update_icon() @@ -190,173 +192,149 @@ GLOBAL_LIST_EMPTY(GPS_list) return TRUE if(special_handling) return FALSE - display(user) + + tgui_interact(user) + +/obj/item/gps/tgui_state(mob/user) + return GLOB.tgui_inventory_state + +/obj/item/gps/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, custom_state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Gps", name) + ui.open() + +/obj/item/gps/tgui_static_data(mob/user) + . = ..() + var/robot_theme + if(isrobot(loc)) + var/mob/living/silicon/robot/robot_owner = loc + robot_theme = robot_owner.get_ui_theme() + .["theme"] = theme || robot_theme // Compiles all the data not available directly from the GPS // Like the positions and directions to all other GPS units -/obj/item/gps/proc/display_list() - var/list/dat = list() +/obj/item/gps/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/turf/curr = get_turf(src) var/area/my_area = get_area(src) - dat["my_area_name"] = strip_improper(my_area.name) - dat["curr_x"] = curr.x - dat["curr_y"] = curr.y - dat["curr_z"] = curr.z - dat["curr_z_name"] = strip_improper(using_map.get_zlevel_name(curr.z)) - dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range) + var/list/data = list( + "currentArea" = strip_improper(my_area.name), + "power" = tracking, + "tag" = gps_tag, + "localMode" = local_mode, + "currentCoords" = "[curr.x], [curr.y], [curr.z]", + "currentZName" = strip_improper(using_map.get_zlevel_name(curr.z)), + "canHide" = can_hide_signal, + "isHidden" = hide_signal + ) + var/z_level_det = using_map.get_map_levels(curr.z, long_range) var/list/gps_list = list() - for(var/obj/item/gps/G in GLOB.GPS_list - src) + for(var/obj/item/gps/current_gps in GLOB.GPS_list - src) - if(!can_track(G, dat["z_level_detection"])) + if(!can_track(current_gps, z_level_det)) continue - var/gps_data[0] - gps_data["ref"] = G - gps_data["gps_tag"] = G.gps_tag + var/area/gps_area = get_area(current_gps) + var/turf/gps_turf = get_turf(current_gps) - var/area/A = get_area(G) - gps_data["area_name"] = strip_improper(A.get_name()) + var/is_local = (curr.z == gps_turf.z) + var/dist = get_dist(curr, gps_turf) + var/is_poi = istype(current_gps, /obj/item/gps/internal/poi) - var/turf/T = get_turf(G) - gps_data["z_name"] = strip_improper(using_map.get_zlevel_name(T.z)) - gps_data["direction"] = get_adir(curr, T) - gps_data["degrees"] = round(Get_Angle(curr,T)) - gps_data["distX"] = T.x - curr.x - gps_data["distY"] = T.y - curr.y - gps_data["distance"] = get_dist(curr, T) - gps_data["local"] = (curr.z == T.z) - gps_data["x"] = T.x - gps_data["y"] = T.y + if(is_poi && is_local) + dist = round(dist, 10) - gps_list[++gps_list.len] = gps_data + var/list/gps_data = list( + "ref" = "\ref[current_gps]", + "gpsTag" = current_gps.gps_tag, + "areaName" = strip_improper(gps_area.get_name()), + "zName" = strip_improper(using_map.get_zlevel_name(gps_turf.z)), + "local" = is_local, + "trackingColor" = LAZYACCESS(tracking_devices, "\ref[current_gps]"), + "trackingName" = LAZYACCESS(showing_tracked_names, "\ref[current_gps]"), + ) - dat["gps_list"] = gps_list + if(!is_poi || is_local) + gps_data["degrees"] = round(Get_Angle(curr, gps_turf)) + gps_data["coords"] = "[gps_turf.x], [gps_turf.y], [gps_turf.z]" + gps_data["dist"] = dist - return dat + UNTYPED_LIST_ADD(gps_list, gps_data) -/obj/item/gps/proc/display(mob/user) + data["signals"] = gps_list - if(emped) - to_chat(user, span_warning("It's busted!")) + return data + +/obj/item/gps/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + . = ..() + if(.) return - var/list/dat = list() - var/list/gps_data = display_list() - - dat += "" - if(!tracking) - dat += "\[Switch On\]" - else - dat += "\[Switch Off\]" - dat += "" - dat += "" - dat += "" - - var/list/gps_list = gps_data["gps_list"] - if(gps_list.len) - dat += "" - for(var/gps in gps_data["gps_list"]) - dat += "" - var/gps_ref = "\ref[gps["ref"]]" - dat += "" - - if(istype(gps_data["ref"], /obj/item/gps/internal/poi)) - dat += "" - else - dat += "" - - if(gps["local"]) - dat += "" - else - dat += "" - - if(LAZYACCESS(tracking_devices, gps_ref)) - dat += "" - else - dat += "" - dat += "" - else - dat += "" - dat += "
Current location[gps_data["my_area_name"]]([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]])
[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'.\[Change Tag\]\[Toggle Scan Range\][can_hide_signal ? "\[Toggle Signal Visibility\]":""]
Detected signals
[gps["gps_tag"]][gps["area_name"]][gps["local"] ? "[gps["direction"]] Dist: [round(gps["distance"], 10)]m" : "[gps["z_name"]]"]([gps["x"]], [gps["y"]], [gps["z_name"]])[gps["distance"]]m[gps["direction"]]Non-local signal.\[Stop Tracking\] \[Colour [color_square(hex = LAZYACCESS(tracking_devices, gps_ref))]\] Show/Hide Label\[Start Tracking\]
No other signals detected.
" - - var/datum/browser/popup = new(user, "gps_\ref[src]", "Global Positioning System", 700, 1000) - popup.set_content(dat.Join(null)) - popup.open() - -/obj/item/gps/Topic(var/href, var/list/href_list) - if(..()) - return TRUE - - if(href_list["toggle_power"]) - toggle_tracking() - . = TRUE - - if(href_list["track_label"]) - var/gps_ref = href_list["track_label"] - var/obj/item/gps/gps = locate(gps_ref) - if(istype(gps) && !QDELETED(gps) && !LAZYACCESS(showing_tracked_names, gps_ref)) - LAZYSET(showing_tracked_names, gps_ref, TRUE) - else + switch(action) + if("power") + toggle_tracking() + return TRUE + if("rename") + var/new_name = sanitize(params["value"], 11) + if(!new_name) + return FALSE + gps_tag = uppertext(new_name) + name = "global positioning system ([gps_tag])" + return TRUE + if("localMode") + local_mode = !local_mode + return TRUE + if("hideSignal") + if(!can_hide_signal) + return FALSE + hide_signal = !hide_signal + return TRUE + if("trackLabel") + var/gps_ref = params["ref"] + if(!gps_ref) + return FALSE + var/obj/item/gps/gps = locate(gps_ref) + if(istype(gps) && !QDELETED(gps) && !LAZYACCESS(showing_tracked_names, gps_ref)) + LAZYSET(showing_tracked_names, gps_ref, TRUE) + else + LAZYREMOVE(showing_tracked_names, gps_ref) + return TRUE + if("stopTrack") + var/gps_ref = params["ref"] + if(!gps_ref) + return FALSE + compass.clear_waypoint(gps_ref) + LAZYREMOVE(tracking_devices, gps_ref) LAZYREMOVE(showing_tracked_names, gps_ref) - to_chat(usr, span_notice("\The [src] is [LAZYACCESS(showing_tracked_names, gps_ref) ? "now showing" : "no longer showing"] labels for [gps.gps_tag].")) - - if(href_list["stop_track"]) - var/gps_ref = href_list["stop_track"] - var/obj/item/gps/gps = locate(gps_ref) - compass.clear_waypoint(gps_ref) - LAZYREMOVE(tracking_devices, gps_ref) - LAZYREMOVE(showing_tracked_names, gps_ref) - if(istype(gps) && !QDELETED(gps)) - to_chat(usr, span_notice("\The [src] is no longer tracking [gps.gps_tag].")) - update_compass() - . = TRUE - - if(href_list["start_track"]) - var/gps_ref = href_list["start_track"] - var/obj/item/gps/gps = locate(gps_ref) - if(istype(gps) && !QDELETED(gps)) + update_compass(src, TRUE) + return TRUE + if("startTrack") + var/gps_ref = params["ref"] + if(!gps_ref) + return FALSE + var/obj/item/gps/gps = locate(gps_ref) + if(!istype(gps) || QDELETED(gps)) + return FALSE LAZYSET(tracking_devices, gps_ref, "#00ffff") LAZYSET(showing_tracked_names, gps_ref, TRUE) - to_chat(usr, span_notice("\The [src] is now tracking [gps.gps_tag].")) - update_compass() - . = TRUE - - if(href_list["track_color"]) - var/obj/item/gps/gps = locate(href_list["track_color"]) - if(istype(gps) && !QDELETED(gps)) - var/new_colour = tgui_color_picker(usr, "Enter a new tracking color.", "GPS Waypoint Color") - if(new_colour && istype(gps) && !QDELETED(gps) && holder == usr && !usr.incapacitated()) - to_chat(usr, span_notice("You adjust the colour \the [src] is using to highlight [gps.gps_tag].")) - LAZYSET(tracking_devices, href_list["track_color"], new_colour) - update_compass() - . = TRUE - - if(href_list["tag"]) - var/a = tgui_input_text(usr, "Please enter desired tag.", name, gps_tag, 10) - a = uppertext(copytext(a, 1, 11)) - if(in_range(src, usr)) - gps_tag = a - name = "global positioning system ([gps_tag])" - to_chat(usr, "You set your GPS's tag to '[gps_tag]'.") - . = TRUE - - if(href_list["range"]) - local_mode = !local_mode - to_chat(usr, "You set the signal receiver to [local_mode ? "'NARROW'" : "'BROAD'"].") - . = TRUE - - if(href_list["hide"]) - if(!can_hide_signal) - return - hide_signal = !hide_signal - to_chat(usr, "You set the device to [hide_signal ? "not " : ""]broadcast a signal while scanning for other signals.") - . = TRUE - - if(. && loc == usr) - display(usr) + update_compass(src, TRUE) + return TRUE + if("trackColor") + var/gps_ref = params["ref"] + if(!gps_ref) + return FALSE + var/obj/item/gps/gps = locate(gps_ref) + if(!istype(gps) || QDELETED(gps)) + return FALSE + var/new_colour = sanitize_hexcolor(params["color"]) + if(!new_colour) + return FALSE + LAZYSET(tracking_devices, gps_ref, new_colour) + update_compass(src, TRUE) + return TRUE /obj/item/gps/on // Defaults to off to avoid polluting the signal list with a bunch of GPSes without owners. If you need to spawn active ones, use these. tracking = TRUE @@ -478,45 +456,4 @@ GLOBAL_LIST_EMPTY(GPS_list) long_range = TRUE hide_signal = TRUE can_hide_signal = TRUE - -/obj/item/gps/syndie/display(mob/user) - - if(emped) - to_chat(user, "It's busted!") - return - - var/list/dat = list() - var/list/gps_data = display_list() - - dat += "" - if(!tracking) - dat += "\[Switch On\]" - else - dat += "\[Switch Off\]" - dat += "" - dat += "" - dat += "" - - var/list/gps_list = gps_data["gps_list"] - if(gps_list.len) - dat += "" - for(var/gps in gps_data["gps_list"]) - dat += "" - var/gps_ref = "\ref[gps["ref"]]" - dat += "" - if(gps["local"]) - dat += "" - else - dat += "" - if(LAZYACCESS(tracking_devices, gps_ref)) - dat += "" - else - dat += "" - dat += "" - else - dat += "" - dat += "
Current location[gps_data["my_area_name"]]([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]])
[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'.\[Change Tag\]\[Toggle Scan Range\][can_hide_signal ? "\[Toggle Signal Visibility\]":""]
Detected signals
[gps["gps_tag"]][gps["area_name"]] ([gps["x"]], [gps["y"]], [gps["z_name"]])[gps["distance"]]m[gps["direction"]]Non-local signal.\[Stop Tracking\] \[Colour [color_square(hex = LAZYACCESS(tracking_devices, gps_ref))]\] Show/Hide Label\[Start Tracking\]
No other signals detected.
" - - var/datum/browser/popup = new(user, "gps_\ref[src]", "Global Positioning System", 700, 1000) - popup.set_content(dat.Join(null)) - popup.open() + theme = "syndicate" diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 81542d566b7..b5254e4f6ed 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -14,7 +14,7 @@ /obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob) if (!istype(M) || !istype(user)) return 0 - if (istype(M,/mob/living/silicon/robot)) //Repairing cyborgs + if (istype(M,/mob/living/silicon/robot) && can_use(1)) //Repairing cyborgs var/mob/living/silicon/robot/R = M if (R.getBruteLoss() || R.getFireLoss()) if(do_after(user, 7 * toolspeed, target = R)) diff --git a/code/modules/client/preferences/types/character/pai/01_basic.dm b/code/modules/client/preferences/types/character/pai/01_basic.dm index b5df4c5c040..e73672fbe6f 100644 --- a/code/modules/client/preferences/types/character/pai/01_basic.dm +++ b/code/modules/client/preferences/types/character/pai/01_basic.dm @@ -89,7 +89,7 @@ return PAI_DEFAULT_CHASSIS /datum/preference/text/pai_chassis/is_valid(value) - if(!(value in SSpai.get_chassis_list())) + if(!(value in SSpai.get_chassis_list()) && value != PAI_DEFAULT_CHASSIS) return FALSE . = ..() diff --git a/code/modules/compass/compass_holder.dm b/code/modules/compass/compass_holder.dm index d11ceb9e5fd..fa8e9c3e80b 100644 --- a/code/modules/compass/compass_holder.dm +++ b/code/modules/compass/compass_holder.dm @@ -61,7 +61,7 @@ rebuild_overlay_lists(TRUE) /obj/compass_holder/Destroy() - QDEL_NULL_LIST(compass_waypoints) + QDEL_LIST_ASSOC_VAL(compass_waypoints) . = ..() /obj/compass_holder/proc/get_heading() diff --git a/code/modules/mob/living/silicon/robot/robot_modules/event.dm b/code/modules/mob/living/silicon/robot/robot_modules/event.dm index 80da91bb609..04a5e5020d4 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/event.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/event.dm @@ -36,6 +36,11 @@ src.modules += new /obj/item/dogborg/sleeper/lost(src) src.modules += new /obj/item/dogborg/pounce(src) +/obj/item/robot_module/robot/lost/adjust_gps(obj/item/gps/robot/robot_gps) + robot_gps.long_range = TRUE + robot_gps.hide_signal = TRUE + robot_gps.can_hide_signal = TRUE + /obj/item/robot_module/robot/gravekeeper name = "gravekeeper robot module" hide_on_manifest = TRUE diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index e0e94f38fd5..6e246d4b7be 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -174,7 +174,9 @@ // Cyborgs (non-drones), default loadout. This will be given to every module. /obj/item/robot_module/robot/create_equipment(var/mob/living/silicon/robot/robot) ..() - src.modules += new /obj/item/gps/robot(src) + var/obj/item/gps/robot/robot_gps = new /obj/item/gps/robot(src) + adjust_gps(robot_gps) + src.modules += robot_gps src.modules += new /obj/item/boop_module(src) src.modules += new /obj/item/robot_tongue(src) src.modules += new /obj/item/flash/robot(src) @@ -184,6 +186,9 @@ src.modules += new /obj/item/gripper/scene(src) src.modules += new /obj/item/robo_dice(src) +/obj/item/robot_module/robot/proc/adjust_gps(obj/item/gps/robot/robot_gps) + return + /obj/item/robot_module/robot/standard name = "standard robot module" pto_type = PTO_CIVILIAN diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm index 0329c48e8a9..bccf32c0db2 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm @@ -38,6 +38,11 @@ id.forceMove(src) src.modules += id +/obj/item/robot_module/robot/syndicate/adjust_gps(obj/item/gps/robot/robot_gps) + robot_gps.long_range = TRUE + robot_gps.hide_signal = TRUE + robot_gps.can_hide_signal = TRUE + /obj/item/robot_module/robot/syndicate/Destroy() src.modules -= id id = null diff --git a/code/modules/mob/living/silicon/robot/sprites/command.dm b/code/modules/mob/living/silicon/robot/sprites/command.dm index 9802d54a107..367c336b85b 100644 --- a/code/modules/mob/living/silicon/robot/sprites/command.dm +++ b/code/modules/mob/living/silicon/robot/sprites/command.dm @@ -65,11 +65,13 @@ has_eye_light_sprites = TRUE /datum/robot_sprite/dogborg/tall/command + sprite_hud_icon_state = "clerical" module_type = "Command" sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi' pixel_x = 0 /datum/robot_sprite/dogborg/raptor/command + sprite_hud_icon_state = "clerical" module_type = "Command" sprite_icon = 'icons/mob/robot/raptor.dmi' diff --git a/code/modules/telesci/gps_advanced.dm b/code/modules/telesci/gps_advanced.dm deleted file mode 100644 index 4375102d5dd..00000000000 --- a/code/modules/telesci/gps_advanced.dm +++ /dev/null @@ -1,77 +0,0 @@ - -// DEPRECATED - The normal GPS has the advanced features, now. This is obsolete. - -// These are distinguished from the ordinary "Relay Position Devices" that just print your location -// In that they are also all networked with each other to show each other's locations. -/obj/item/gps/advanced - name = "global positioning system" - desc = "Helping lost spacemen find their way through the planets since 1995." - icon = 'icons/obj/telescience.dmi' - icon_state = "gps-c" - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - gps_tag = "COM0" - emped = 0 - - special_handling = TRUE - -/obj/item/gps/advanced/Initialize(mapload) - . = ..() - add_overlay("working") - -/obj/item/gps/advanced/emp_act(severity, recursive) - emped = TRUE - cut_overlay("working") - add_overlay("emp") - spawn(300) - emped = FALSE - cut_overlay("emp") - add_overlay("working") - -/obj/item/gps/advanced/attack_self(mob/user) - . = ..(user) - if(.) - return TRUE - - var/obj/item/gps/advanced/t = "" - if(emped) - t += "ERROR" - else - t += "
Set Tag " - t += "
Tag: [gps_tag]" - - for(var/obj/item/gps/advanced/G in GLOB.GPS_list) - var/turf/pos = get_turf(G) - var/area/gps_area = get_area(G) - var/tracked_gpstag = G.gps_tag - if(G.emped == 1) - t += "
[tracked_gpstag]: ERROR" - else - t += "
[tracked_gpstag]: [strip_improper(gps_area.name)] ([pos.x], [pos.y], [pos.z])" - - var/datum/browser/popup = new(user, "GPS", name, 600, 450) - popup.set_content(t) - popup.open() - -/obj/item/gps/advanced/Topic(href, href_list) - ..() - if(href_list["advtag"] ) - var/a = tgui_input_text(usr, "Please enter desired tag.", name, gps_tag, 4) - a = uppertext(copytext(a, 1, 5)) - if(src.loc == usr) - gps_tag = a - name = "global positioning system ([gps_tag])" - attack_self(usr) - -/obj/item/gps/advanced/science - icon_state = "gps-s" - gps_tag = "SCI0" - -/obj/item/gps/advanced/engineering - icon_state = "gps-e" - gps_tag = "ENG0" - -/obj/item/gps/advanced/security - icon_state = "gps-sec" - gps_tag = "SEC0" diff --git a/tgui/packages/tgui/interfaces/ColorPickerModal.tsx b/tgui/packages/tgui/interfaces/ColorPickerModal.tsx index 0b9dbf0ab0a..b6097f3cb93 100644 --- a/tgui/packages/tgui/interfaces/ColorPickerModal.tsx +++ b/tgui/packages/tgui/interfaces/ColorPickerModal.tsx @@ -260,7 +260,7 @@ const ColorPresets: React.FC = React.memo( ))} - {!!onAllowEditing && ( + {!!onAllowEditing && presetList?.length && ( + } > - {power ? 'On' : 'Off'} - - } - > - - - - - - - - - - - - - {!!power && ( - <> -
- - {currentArea} ({currentCoords}) - -
-
- - - Name - Direction - Coordinates - - {signals.map((signal, index) => ( - + + act('rename', { value })} + value={tag} + /> + + +
+ {isHidden ? 'HIDDEN' : 'VISIBLE'} + + + )} +
- - )} + + {!!power && ( + <> + +
+ + {currentArea} ({currentCoords} | {currentZName}) + +
+
+ +
+ + + Name + Options + Direction + Coordinates + + {signals.length ? ( + signals.map((signal, index) => ( + + + {signal.gpsTag} + + + {signal.trackingColor ? ( + + + + )} + + {signal.local ? ( + + {signal.degrees !== undefined && ( + + )} + {signal.dist !== undefined && `${signal.dist}m`} + + ) : ( + Non-local + )} + + {signal.coords} | {signal.zName} + + + )) + ) : ( + <> + + + + No signals detetcted. + + + + )} +
+
+
+ + )} + ); diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/elements/ColorInput.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/elements/ColorInput.tsx index eaf5d15285a..5a9c8a0a72c 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/elements/ColorInput.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/elements/ColorInput.tsx @@ -145,7 +145,7 @@ export const PreferenceEditColor = ( - - - + {!!tooltip && ( + + + + )} ); }; diff --git a/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelEditColor.tsx b/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelEditColor.tsx index 575ede52072..54c8112fe09 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelEditColor.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelEditColor.tsx @@ -168,7 +168,7 @@ export const VorePanelEditColor = (