diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 50572535..a8e03946 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -25,6 +25,8 @@ GLOBAL_LIST_EMPTY(uplinks) var/unlock_code var/failsafe_code var/datum/ui_state/checkstate + var/compact_mode = FALSE + var/debug = FALSE /datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20, datum/ui_state/_checkstate) if(!isitem(parent)) @@ -121,7 +123,7 @@ GLOBAL_LIST_EMPTY(uplinks) active = TRUE ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "uplink", name, 450, 750, master_ui, state) + ui = new(user, src, ui_key, "uplink", name, 620, 580, master_ui, state) ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input. ui.set_style("syndicate") ui.open() @@ -138,29 +140,35 @@ GLOBAL_LIST_EMPTY(uplinks) var/list/data = list() data["telecrystals"] = telecrystals data["lockable"] = lockable + data["compact_mode"] = compact_mode + return data + +/datum/component/uplink/ui_static_data(mob/user) + var/list/data = list() data["categories"] = list() for(var/category in uplink_items) var/list/cat = list( "name" = category, "items" = (category == selected_cat ? list() : null)) - if(category == selected_cat) - for(var/item in uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - if(I.limited_stock == 0) + for(var/item in uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(I.limited_stock == 0) + continue + if(I.restricted_roles.len) + var/is_inaccessible = TRUE + for(var/R in I.restricted_roles) + if(R == user.mind.assigned_role || debug) + is_inaccessible = FALSE + if(is_inaccessible) continue - if(I.restricted_roles.len) - var/is_inaccessible = 1 - for(var/R in I.restricted_roles) - if(R == user.mind.assigned_role) - is_inaccessible = 0 if(is_inaccessible) continue - cat["items"] += list(list( - "name" = I.name, - "cost" = I.cost, - "desc" = I.desc, - )) + cat["items"] += list(list( + "name" = I.name, + "cost" = I.cost, + "desc" = I.desc, + )) data["categories"] += list(cat) return data @@ -188,6 +196,8 @@ GLOBAL_LIST_EMPTY(uplinks) SStgui.close_uis(src) if("select") selected_cat = params["category"] + if("compact_toggle") + compact_mode = !compact_mode return TRUE /datum/component/uplink/proc/MakePurchase(mob/user, datum/uplink_item/U) @@ -294,4 +304,4 @@ GLOBAL_LIST_EMPTY(uplinks) if(!T) return explosion(T,1,2,3) - qdel(parent) //Alternatively could brick the uplink. \ No newline at end of file + qdel(parent) //Alternatively could brick the uplink. diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index fe3b5a3a..0d815703 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -381,6 +381,7 @@ playsound(src, 'sound/machines/nuke/confirm_beep.ogg', 50, FALSE) set_active() update_ui_mode() + . = TRUE else playsound(src, 'sound/machines/nuke/angry_beep.ogg', 50, FALSE) if("anchor") diff --git a/tgui-next/packages/tgui/interfaces/Uplink.js b/tgui-next/packages/tgui/interfaces/Uplink.js index 07535522..4f2b047c 100644 --- a/tgui-next/packages/tgui/interfaces/Uplink.js +++ b/tgui-next/packages/tgui/interfaces/Uplink.js @@ -103,6 +103,7 @@ export class Uplink extends Component { compact={compact_mode} items={items} hoveredItem={hoveredItem} + telecrystals={telecrystals} onBuyMouseOver={item => this.setHoveredItem(item)} onBuyMouseOut={item => this.setHoveredItem({})} onBuy={item => act(ref, 'buy', { diff --git a/tgui-next/packages/tgui/routes.js b/tgui-next/packages/tgui/routes.js index 5c0a2d92..838ddde2 100644 --- a/tgui-next/packages/tgui/routes.js +++ b/tgui-next/packages/tgui/routes.js @@ -89,6 +89,7 @@ import { TankDispenser } from './interfaces/TankDispenser'; import { Teleporter } from './interfaces/Teleporter'; import { ThermoMachine } from './interfaces/ThermoMachine'; import { TurbineComputer } from './interfaces/TurbineComputer'; +import { Uplink } from './interfaces/Uplink'; import { VaultController } from './interfaces/VaultController'; import { Wires } from './interfaces/Wires'; import { AtmosRelief } from './interfaces/AtmosRelief'; @@ -490,6 +491,11 @@ const ROUTES = { component: () => TurbineComputer, scrollable: false, }, + uplink: { + component: () => Uplink, + scrollable: true, + theme: 'syndicate', + }, vault_controller: { component: () => VaultController, scrollable: false,