diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b61b8f0b3f6..f562a47dcdf 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -465,7 +465,7 @@ add_fingerprint(user) ui_interact(user) -/obj/item/ui_act(action, list/params) +/obj/item/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) add_fingerprint(usr) return ..() diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index 76106a37566..f4d9f147b18 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -73,7 +73,9 @@ var/datum/computer_file/program/robotact/program = modularInterface.get_robotact() if(program) - program.force_full_update() + var/datum/tgui/active_ui = SStgui.get_open_ui(src, program.computer) + if(active_ui) + active_ui.send_full_update() picturesync() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index d963b45f8cf..69859f0094b 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -460,7 +460,9 @@ modularInterface.borglog += "[station_time_timestamp()] - [string]" var/datum/computer_file/program/robotact/program = modularInterface.get_robotact() if(program) - program.force_full_update() + var/datum/tgui/active_ui = SStgui.get_open_ui(src, program.computer) + if(active_ui) + active_ui.send_full_update() /// Same as the normal character name replacement, but updates the contents of the modular interface. /mob/living/silicon/fully_replace_character_name(oldname, newname) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index ff5174752b6..0cb3f7ca19d 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -453,7 +453,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar enabled = TRUE update_appearance() if(open_ui) - ui_interact(user) + update_tablet_open_uis(user) return TRUE else // Unpowered if(issynth) @@ -581,11 +581,8 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar // Relays kill program request to currently active program. Use this to quit current program. /obj/item/modular_computer/proc/kill_program(forced = FALSE) wipe_program(forced) - var/mob/user = usr - if(user && istype(user)) - //Here to prevent programs sleeping in destroy - INVOKE_ASYNC(src, TYPE_PROC_REF(/datum, ui_interact), user) // Re-open the UI on this computer. It should show the main screen now. update_appearance() + update_tablet_open_uis(usr) /obj/item/modular_computer/proc/open_program(mob/user, datum/computer_file/program/program) if(program.computer != src) @@ -621,7 +618,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar active_program = program program.alert_pending = FALSE update_appearance() - ui_interact(user) + update_tablet_open_uis(user) return TRUE // Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on) diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index fb90a50604f..9b8dc2d0ea4 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -1,3 +1,33 @@ +/** + * update_tablet_open_uis + * + * Will search the user to see if they have the tablet open. + * If they don't, we'll open a new UI depending on the tab the tablet is meant to be on. + * If they do, we'll update the interface and title, then update all static data and re-send assets. + * + * This is best called when you're actually changing the app, as we don't check + * if we're swapping to the current UI repeatedly. + * Args: + * user - The person whose UI we're updating. + */ +/obj/item/modular_computer/proc/update_tablet_open_uis(mob/user) + var/datum/tgui/active_ui = SStgui.get_open_ui(user, src) + if(!active_ui) + if(active_program) + active_ui = new(user, src, active_program.tgui_id, active_program.filedesc) + else + active_ui = new(user, src, "NtosMain") + return active_ui.open() + + if(active_program) + active_ui.interface = active_program.tgui_id + active_ui.title = active_program.filedesc + else + active_ui.interface = "NtosMain" + + update_static_data(user, active_ui) + active_ui.send_assets() + /obj/item/modular_computer/interact(mob/user) if(enabled) ui_interact(user) @@ -23,23 +53,7 @@ ui = SStgui.try_update_ui(user, src, ui) if(!ui) - if(active_program) - ui = new(user, src, active_program.tgui_id, active_program.filedesc) - else - ui = new(user, src, "NtosMain") - ui.open() - return - - var/old_open_ui = ui.interface - if(active_program) - ui.interface = active_program.tgui_id - ui.title = active_program.filedesc - else - ui.interface = "NtosMain" - //opened a new UI - if(old_open_ui != ui.interface) - update_static_data(user, ui) - ui.send_assets() + update_tablet_open_uis(user) /obj/item/modular_computer/ui_assets(mob/user) var/list/data = list() @@ -49,14 +63,12 @@ return data /obj/item/modular_computer/ui_static_data(mob/user) - . = ..() var/list/data = list() if(active_program) data += active_program.ui_static_data(user) return data data["show_imprint"] = istype(src, /obj/item/modular_computer/pda) - return data /obj/item/modular_computer/ui_data(mob/user) @@ -65,6 +77,11 @@ data += active_program.ui_data(user) return data + data["pai"] = inserted_pai + data["has_light"] = has_light + data["light_on"] = light_on + data["comp_light_color"] = comp_light_color + data["login"] = list( IDName = saved_identification || "Unknown", IDJob = saved_job || "Unknown", @@ -93,10 +110,6 @@ "alert" = program.alert_pending, )) - data["has_light"] = has_light - data["light_on"] = light_on - data["comp_light_color"] = comp_light_color - data["pai"] = inserted_pai return data // Handles user's GUI input @@ -105,15 +118,12 @@ if(.) return - if(ishuman(usr) && !allow_chunky) //in /datum/computer_file/program/ui_act() too + if(ishuman(usr) && !allow_chunky) var/mob/living/carbon/human/human_user = usr if(human_user.check_chunky_fingers()) balloon_alert(human_user, "fingers are too big!") return TRUE - if(active_program) - active_program.ui_act(action, params, ui, state) - switch(action) if("PC_exit") kill_program() @@ -134,6 +144,7 @@ active_program = null update_appearance() + return TRUE if("PC_killprogram") var/prog = params["name"] @@ -144,12 +155,15 @@ killed_program.kill_program(forced = TRUE) to_chat(usr, span_notice("Program [killed_program.filename].[killed_program.filetype] with PID [rand(100,999)] has been killed.")) + return TRUE if("PC_runprogram") open_program(usr, find_file_by_name(params["name"])) + return TRUE if("PC_toggle_light") - return toggle_flashlight() + toggle_flashlight() + return TRUE if("PC_light_color") var/mob/user = usr @@ -161,7 +175,8 @@ if(is_color_dark(new_color, 50) ) //Colors too dark are rejected to_chat(user, span_warning("That color is too dark! Choose a lighter one.")) new_color = null - return set_flashlight_color(new_color) + set_flashlight_color(new_color) + return TRUE if("PC_Eject_Disk") var/param = params["name"] @@ -205,7 +220,10 @@ update_appearance(UPDATE_ICON) if("interact") inserted_pai.attack_self(usr) - return UI_UPDATE + return TRUE + + if(active_program) + return active_program.ui_act(action, params, ui, state) /obj/item/modular_computer/ui_host() if(physical) diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 71b5c6173ae..4c73862c0c5 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -53,6 +53,10 @@ temp.usage_flags = usage_flags return temp +///We are not calling parent as it's handled by the computer itself, this is only called after. +/datum/computer_file/program/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) + SHOULD_CALL_PARENT(FALSE) + // Relays icon update to the computer. /datum/computer_file/program/proc/update_computer_icon() if(computer) diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm index 0fac55e26b1..5ba7670267a 100644 --- a/code/modules/modular_computers/file_system/programs/airestorer.dm +++ b/code/modules/modular_computers/file_system/programs/airestorer.dm @@ -98,11 +98,7 @@ return TRUE -/datum/computer_file/program/ai_restorer/ui_act(action, params) - . = ..() - if(.) - return - +/datum/computer_file/program/ai_restorer/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_beginReconstruction") if(!stored_card || !stored_card.AI) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index 0a80f1834ea..0cf205b98c1 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -40,10 +40,7 @@ ..() -/datum/computer_file/program/ntnet_dos/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/ntnet_dos/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_target_relay") for(var/obj/machinery/ntnet_relay/relays as anything in GLOB.ntnet_relays) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index 172fdc7fc42..88aa48d0c31 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -39,10 +39,7 @@ var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread spark_system.start() -/datum/computer_file/program/revelation/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/revelation/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_arm") armed = !armed diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index 70e12343c2f..a51d3345d10 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -94,11 +94,7 @@ return data /datum/computer_file/program/arcade/ui_act(action, list/params) - . = ..() - if(.) - return usr.played_game() - var/gamerSkillLevel = 0 var/gamerSkill = 0 if(usr?.mind) diff --git a/code/modules/modular_computers/file_system/programs/atmosscan.dm b/code/modules/modular_computers/file_system/programs/atmosscan.dm index b0a7c08a049..6264531428f 100644 --- a/code/modules/modular_computers/file_system/programs/atmosscan.dm +++ b/code/modules/modular_computers/file_system/programs/atmosscan.dm @@ -68,9 +68,6 @@ return data /datum/computer_file/program/atmosscan/ui_act(action, list/params) - . = ..() - if(.) - return switch(action) if("scantoggle") if(atmozphere_mode == ATMOZPHERE_SCAN_CLICK) diff --git a/code/modules/modular_computers/file_system/programs/borg_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_monitor.dm index a94497b5a34..763db0cdb8b 100644 --- a/code/modules/modular_computers/file_system/programs/borg_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/borg_monitor.dm @@ -62,8 +62,7 @@ loglist.Insert(1,"System log of unit [DL_source.name]") DL_progress = -1 DL_source = null - for(var/datum/tgui/window in SStgui.open_uis_by_src[REF(src)]) - window.send_full_update() + update_static_data_for_all_viewers() return DL_progress += 25 @@ -108,10 +107,7 @@ data["borglog"] = loglist return data -/datum/computer_file/program/borg_monitor/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/borg_monitor/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("messagebot") var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs diff --git a/code/modules/modular_computers/file_system/programs/bounty_board.dm b/code/modules/modular_computers/file_system/programs/bounty_board.dm index 095f1a6e27b..e24de13947a 100644 --- a/code/modules/modular_computers/file_system/programs/bounty_board.dm +++ b/code/modules/modular_computers/file_system/programs/bounty_board.dm @@ -58,9 +58,6 @@ return data /datum/computer_file/program/bounty_board/ui_act(action, list/params) - . = ..() - if(.) - return var/current_ref_num = params["request"] var/current_app_num = params["applicant"] var/datum/bank_account/request_target diff --git a/code/modules/modular_computers/file_system/programs/budgetordering.dm b/code/modules/modular_computers/file_system/programs/budgetordering.dm index 41cb1638695..780463f3085 100644 --- a/code/modules/modular_computers/file_system/programs/budgetordering.dm +++ b/code/modules/modular_computers/file_system/programs/budgetordering.dm @@ -121,18 +121,31 @@ if(SSshuttle.supply_blocked) message = blockade_warning data["message"] = message - data["cart"] = list() - for(var/datum/supply_order/SO in SSshuttle.shopping_list) - data["cart"] += list(list( - "cost_type" = SO.cost_type, - "object" = SO.pack.name, - "cost" = SO.pack.get_cost(), - "id" = SO.id, - "orderer" = SO.orderer, - "paid" = !isnull(SO.paying_account), //paid by requester - "dep_order" = !!SO.department_destination, - "can_be_cancelled" = SO.can_be_cancelled, + var/cart_list = list() + for(var/datum/supply_order/order in SSshuttle.shopping_list) + if(cart_list[order.pack.name]) + cart_list[order.pack.name][1]["amount"]++ + cart_list[order.pack.name][1]["cost"] += order.get_final_cost() + if(order.department_destination) + cart_list[order.pack.name][1]["dep_order"]++ + if(!isnull(order.paying_account)) + cart_list[order.pack.name][1]["paid"]++ + continue + + cart_list[order.pack.name] = list(list( + "cost_type" = order.cost_type, + "object" = order.pack.name, + "cost" = order.get_final_cost(), + "id" = order.id, + "amount" = 1, + "orderer" = order.orderer, + "paid" = !isnull(order.paying_account) ? 1 : 0, //number of orders purchased privatly + "dep_order" = order.department_destination ? 1 : 0, //number of orders purchased by a department + "can_be_cancelled" = order.can_be_cancelled, )) + data["cart"] = list() + for(var/item_id in cart_list) + data["cart"] += cart_list[item_id] data["requests"] = list() for(var/datum/supply_order/SO in SSshuttle.request_list) @@ -147,9 +160,6 @@ return data /datum/computer_file/program/budgetorders/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("send") if(!SSshuttle.supply.canMove()) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index b1c51a8c558..33373e0fc66 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -87,10 +87,7 @@ return ..() -/datum/computer_file/program/card_mod/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/card_mod/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) var/mob/user = usr var/obj/item/card/id/inserted_auth_card = computer.computer_id_slot diff --git a/code/modules/modular_computers/file_system/programs/cargoship.dm b/code/modules/modular_computers/file_system/programs/cargoship.dm index 9e8c6430af1..462c17aba70 100644 --- a/code/modules/modular_computers/file_system/programs/cargoship.dm +++ b/code/modules/modular_computers/file_system/programs/cargoship.dm @@ -27,9 +27,6 @@ return data /datum/computer_file/program/shipping/ui_act(action, list/params) - . = ..() - if(.) - return if(!computer.computer_id_slot) //We need an ID to successfully run return FALSE diff --git a/code/modules/modular_computers/file_system/programs/crewmanifest.dm b/code/modules/modular_computers/file_system/programs/crewmanifest.dm index a69791ae4da..e0f26173001 100644 --- a/code/modules/modular_computers/file_system/programs/crewmanifest.dm +++ b/code/modules/modular_computers/file_system/programs/crewmanifest.dm @@ -17,9 +17,6 @@ return data /datum/computer_file/program/crew_manifest/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("PRG_print") if(computer) //This option should never be called if there is no printer diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index 377f469518c..78b2f83ec1b 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -13,10 +13,7 @@ var/open_file var/error -/datum/computer_file/program/filemanager/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/filemanager/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_deletefile") var/datum/computer_file/file = computer.find_file_by_name(params["name"]) diff --git a/code/modules/modular_computers/file_system/programs/frontier.dm b/code/modules/modular_computers/file_system/programs/frontier.dm index 9e33256da74..778fbab578e 100644 --- a/code/modules/modular_computers/file_system/programs/frontier.dm +++ b/code/modules/modular_computers/file_system/programs/frontier.dm @@ -164,10 +164,7 @@ data["purchaseableBoosts"][partner.type] += node_id return data -/datum/computer_file/program/scipaper_program/ui_act(action, params) - . = ..() - if (.) - return +/datum/computer_file/program/scipaper_program/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("et_alia") paper_to_be.et_alia = !paper_to_be.et_alia diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm index 8f9895ceefd..784a434a94d 100644 --- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm +++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm @@ -15,7 +15,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/change_position_cooldown = 30 ///Jobs blacklisted from having their slots edited. - var/list/blacklisted = list( + var/static/list/blacklisted = list( JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY, @@ -39,7 +39,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/list/opened_positions = list() /datum/computer_file/program/job_management/New() - ..() + . = ..() change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay) @@ -70,9 +70,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /datum/computer_file/program/job_management/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return var/obj/item/card/id/user_id = computer.computer_id_slot if(!user_id || !(ACCESS_CHANGE_IDS in user_id.access)) return TRUE diff --git a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm index 548dda4a750..50276a1bcd8 100644 --- a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm +++ b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm @@ -49,9 +49,6 @@ return data /datum/computer_file/program/maintenance/camera/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return var/mob/living/user = usr switch(action) if("print_photo") diff --git a/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm b/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm index 253048eec55..02ee0dd69ef 100644 --- a/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm +++ b/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm @@ -42,7 +42,4 @@ return controlled_suit?.ui_static_data() /datum/computer_file/program/maintenance/modsuit_control/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) - return - controlled_suit.ui_act(action, params, ui, state) + return controlled_suit?.ui_act(action, params, ui, state) diff --git a/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm b/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm index 5162aa7ddc0..4c332d0d7d8 100644 --- a/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm +++ b/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm @@ -18,9 +18,11 @@ var/mob/living/carbon/carbon = tapped_atom carbon.visible_message(span_notice("[user] analyzes [tapped_atom]'s vitals.")) last_record = healthscan(user, carbon, 1, tochat = FALSE) + var/datum/tgui/active_ui = SStgui.get_open_ui(user, computer) + if(active_ui) + active_ui.send_full_update(force = TRUE) -/datum/computer_file/program/maintenance/phys_scanner/ui_data(mob/user) +/datum/computer_file/program/maintenance/phys_scanner/ui_static_data(mob/user) var/list/data = list() - data["last_record"] = last_record return data diff --git a/code/modules/modular_computers/file_system/programs/newscasterapp.dm b/code/modules/modular_computers/file_system/programs/newscasterapp.dm index 0f0861ad9f1..47e4f65d48f 100644 --- a/code/modules/modular_computers/file_system/programs/newscasterapp.dm +++ b/code/modules/modular_computers/file_system/programs/newscasterapp.dm @@ -22,16 +22,10 @@ return ..() /datum/computer_file/program/newscaster/ui_data(mob/user) - var/list/data = list() - data += newscaster_ui.ui_data(user) - return data + return newscaster_ui.ui_data(user) /datum/computer_file/program/newscaster/ui_static_data(mob/user) - var/list/data = newscaster_ui.ui_static_data(user) - return data + return newscaster_ui.ui_static_data(user) -/datum/computer_file/program/newscaster/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return - return newscaster_ui.ui_act(action, params, ui) +/datum/computer_file/program/newscaster/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) + return newscaster_ui.ui_act(action, params, ui, state) diff --git a/code/modules/modular_computers/file_system/programs/notepad.dm b/code/modules/modular_computers/file_system/programs/notepad.dm index aa5cbf94f35..2e1eb52add5 100644 --- a/code/modules/modular_computers/file_system/programs/notepad.dm +++ b/code/modules/modular_computers/file_system/programs/notepad.dm @@ -13,13 +13,10 @@ bringing you the best in electronics and software since 2467!" /datum/computer_file/program/notepad/ui_act(action, list/params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("UpdateNote") written_note = params["newnote"] - return UI_UPDATE + return TRUE /datum/computer_file/program/notepad/ui_data(mob/user) var/list/data = list() diff --git a/code/modules/modular_computers/file_system/programs/nt_pay.dm b/code/modules/modular_computers/file_system/programs/nt_pay.dm index 0204f704fe5..bec8cebc05e 100644 --- a/code/modules/modular_computers/file_system/programs/nt_pay.dm +++ b/code/modules/modular_computers/file_system/programs/nt_pay.dm @@ -18,9 +18,6 @@ var/wanted_token /datum/computer_file/program/nt_pay/ui_act(action, list/params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("Transaction") token = params["token"] diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index 852987dc440..e3b0cf72000 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -98,10 +98,7 @@ download_netspeed = NTNETSPEED_ETHERNET download_completion += download_netspeed -/datum/computer_file/program/ntnetdownload/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/ntnetdownload/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_downloadfile") if(!downloaded_file) @@ -150,7 +147,7 @@ "installed" = !!computer.find_file_by_name(programs.filename), "compatible" = check_compatibility(programs), "size" = programs.size, - "access" = (computer.obj_flags & EMAGGED) && programs.available_on_syndinet ? TRUE : programs.can_run(user,transfer = TRUE, access = access), + "access" = (computer.obj_flags & EMAGGED) && programs.available_on_syndinet ? TRUE : programs.can_run(user, transfer = TRUE, access = access), "verifiedsource" = programs.available_on_ntnet, )) diff --git a/code/modules/modular_computers/file_system/programs/ntmessenger.dm b/code/modules/modular_computers/file_system/programs/ntmessenger.dm index a0cdf0a1645..9fcd4535a86 100644 --- a/code/modules/modular_computers/file_system/programs/ntmessenger.dm +++ b/code/modules/modular_computers/file_system/programs/ntmessenger.dm @@ -105,9 +105,6 @@ return GLOB.default_state /datum/computer_file/program/messenger/ui_act(action, list/params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("PDA_ringSet") var/new_ringtone = tgui_input_text(usr, "Enter a new ringtone", "Ringtone", ringtone, MESSENGER_RINGTONE_MAX_LENGTH) @@ -119,27 +116,27 @@ return ringtone = new_ringtone - return UI_UPDATE + return TRUE if("PDA_ringer_status") ringer_status = !ringer_status - return UI_UPDATE + return TRUE if("PDA_sAndR") sending_and_receiving = !sending_and_receiving - return UI_UPDATE + return TRUE if("PDA_viewMessages") viewing_messages = !viewing_messages - return UI_UPDATE + return TRUE if("PDA_clearMessages") messages = list() - return UI_UPDATE + return TRUE if("PDA_changeSortStyle") sort_by_job = !sort_by_job - return UI_UPDATE + return TRUE if("PDA_sendEveryone") if(!sending_and_receiving) @@ -158,7 +155,7 @@ if(targets.len > 0) send_message(usr, targets, TRUE) - return UI_UPDATE + return TRUE if("PDA_sendMessage") if(!sending_and_receiving) @@ -182,19 +179,20 @@ var/obj/item/computer_disk/virus/disk = computer.inserted_disk if(istype(disk)) disk.send_virus(computer, target, usr) - return UI_UPDATE + update_static_data(usr, ui) + return TRUE send_message(usr, list(target)) - return UI_UPDATE + return TRUE if("PDA_clearPhoto") saved_image = null photo_path = null - return UI_UPDATE + return TRUE if("PDA_toggleVirus") sending_virus = !sending_virus - return UI_UPDATE + return TRUE if("PDA_selectPhoto") if(!issilicon(usr)) @@ -210,18 +208,15 @@ return TRUE /datum/computer_file/program/messenger/ui_static_data(mob/user) - var/list/data = ..() - + var/list/data = list() data["owner"] = computer.saved_identification - data["sortByJob"] = sort_by_job - data["isSilicon"] = issilicon(user) - return data /datum/computer_file/program/messenger/ui_data(mob/user) var/list/data = list() - data["messages"] = messages + data["sortByJob"] = sort_by_job + data["isSilicon"] = issilicon(user) data["messengers"] = ScrubMessengerList() data["ringer_status"] = ringer_status data["sending_and_receiving"] = sending_and_receiving @@ -233,7 +228,6 @@ if(disk && istype(disk)) data["virus_attach"] = TRUE data["sending_virus"] = sending_virus - return data ////////////////////// diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 3e7b8f19f13..903293c62ae 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -47,10 +47,7 @@ active_channel = new_converstaion.id return new_converstaion -/datum/computer_file/program/chatclient/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/chatclient/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) var/datum/ntnet_conversation/channel = SSmodular_computers.get_chat_channel_by_id(active_channel) var/authed = FALSE if(channel && ((channel.channel_operator == src) || netadmin_mode)) @@ -101,13 +98,13 @@ if(netadmin_mode) netadmin_mode = FALSE channel?.add_client(src) - return UI_UPDATE + return TRUE var/mob/living/user = usr - if(can_run(user, TRUE, ACCESS_NETWORK)) + if(can_run(user, TRUE, list(ACCESS_NETWORK))) for(var/datum/ntnet_conversation/channels as anything in SSmodular_computers.chat_channels) channels.remove_client(src) netadmin_mode = TRUE - return UI_UPDATE + return TRUE if("PRG_changename") var/newname = reject_bad_chattext(params["new_name"], USERNAME_SIZE) newname = replacetext(newname, " ", "_") @@ -117,7 +114,7 @@ if(src in anychannel.active_clients) anychannel.add_status_message("[username] is now known as [newname].") username = newname - return UI_UPDATE + return TRUE if("PRG_savelog") if(!channel) return @@ -209,16 +206,11 @@ /datum/computer_file/program/chatclient/ui_static_data(mob/user) var/list/data = list() - data["can_admin"] = can_run(user, FALSE, ACCESS_NETWORK) data["selfref"] = REF(src) //used to verify who is you, as usernames can be copied. - data["username"] = username - data["adminmode"] = netadmin_mode return data /datum/computer_file/program/chatclient/ui_data(mob/user) var/list/data = list() - if(!SSmodular_computers.chat_channels) - return data var/list/all_channels = list() for(var/datum/ntnet_conversation/conversations as anything in SSmodular_computers.chat_channels) @@ -261,6 +253,9 @@ data["messages"] = messages data["is_operator"] = (channel.channel_operator == src) || netadmin_mode + data["username"] = username + data["adminmode"] = netadmin_mode + data["can_admin"] = can_run(user, FALSE, list(ACCESS_NETWORK)) data["authed"] = authed return data diff --git a/code/modules/modular_computers/file_system/programs/portrait_printer.dm b/code/modules/modular_computers/file_system/programs/portrait_printer.dm index b7ff4ca20a1..68c94e87e8d 100644 --- a/code/modules/modular_computers/file_system/programs/portrait_printer.dm +++ b/code/modules/modular_computers/file_system/programs/portrait_printer.dm @@ -43,10 +43,7 @@ get_asset_datum(/datum/asset/simple/portraits) ) -/datum/computer_file/program/portrait_printer/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/portrait_printer/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("search") if(search_string != params["to_search"]) diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index d5e78f23fd3..d711d4c59e6 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -62,10 +62,7 @@ data["target"] = trackinfo return data -/datum/computer_file/program/radar/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/radar/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("selecttarget") selected = params["ref"] diff --git a/code/modules/modular_computers/file_system/programs/records.dm b/code/modules/modular_computers/file_system/programs/records.dm index 0d8cec96378..960702d608c 100644 --- a/code/modules/modular_computers/file_system/programs/records.dm +++ b/code/modules/modular_computers/file_system/programs/records.dm @@ -63,9 +63,7 @@ return all_records - - -/datum/computer_file/program/records/ui_data(mob/user) +/datum/computer_file/program/records/ui_static_data(mob/user) var/list/data = list() data["records"] = GetRecordsReadable() data["mode"] = mode diff --git a/code/modules/modular_computers/file_system/programs/robocontrol.dm b/code/modules/modular_computers/file_system/programs/robocontrol.dm index 9d1f1542ae7..cf094e683a9 100644 --- a/code/modules/modular_computers/file_system/programs/robocontrol.dm +++ b/code/modules/modular_computers/file_system/programs/robocontrol.dm @@ -14,7 +14,7 @@ ///Access granted by the used to summon robots. var/list/current_access = list() ///List of all ping types you can annoy drones with. - var/list/drone_ping_types = list( + var/static/list/drone_ping_types = list( "Low", "Medium", "High", @@ -84,18 +84,15 @@ return data /datum/computer_file/program/robocontrol/ui_act(action, list/params, datum/tgui/ui) - . = ..() - if (.) - return var/mob/current_user = ui.user var/obj/item/card/id/id_card = computer?.computer_id_slot - var/list/standard_actions = list( + var/static/list/standard_actions = list( "patroloff", "patrolon", "ejectpai", ) - var/list/MULE_actions = list( + var/static/list/MULE_actions = list( "stop", "go", "home", @@ -110,13 +107,13 @@ ) var/mob/living/simple_animal/bot/simple_bot = locate(params["robot"]) in GLOB.bots_list if (action in standard_actions) - simple_bot.bot_control(action, current_user, current_access) + simple_bot.bot_control(action, current_user, id_card?.GetAccess()) if (action in MULE_actions) - simple_bot.bot_control(action, current_user, current_access, TRUE) + simple_bot.bot_control(action, current_user, id_card?.GetAccess(), TRUE) switch(action) if("summon") - simple_bot.bot_control(action, current_user, id_card ? id_card.access : current_access) + simple_bot.bot_control(action, current_user, id_card ? id_card.access : id_card?.GetAccess()) if("ejectcard") if(!computer || !computer.computer_id_slot) return diff --git a/code/modules/modular_computers/file_system/programs/robotact.dm b/code/modules/modular_computers/file_system/programs/robotact.dm index b218aad9113..e64691ccba2 100644 --- a/code/modules/modular_computers/file_system/programs/robotact.dm +++ b/code/modules/modular_computers/file_system/programs/robotact.dm @@ -84,10 +84,7 @@ data["borgUpgrades"] = cyborg.upgrades return data -/datum/computer_file/program/robotact/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/robotact/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) //Implied type, memes var/obj/item/modular_computer/pda/silicon/tablet = computer var/mob/living/silicon/robot/cyborg = tablet.silicon_owner @@ -140,17 +137,3 @@ return if(cyborg.emagged || istype(cyborg, /mob/living/silicon/robot/model/syndicate)) //This option shouldn't even be showing otherwise cyborg.self_destruct(cyborg) - -/** - * Forces a full update of the UI, if currently open. - * - * Forces an update that includes refreshing ui_static_data. Called by - * law changes and borg log additions. - */ -/datum/computer_file/program/robotact/proc/force_full_update() - if(!istype(computer, /obj/item/modular_computer/pda/silicon)) - return - var/obj/item/modular_computer/pda/silicon/tablet = computer - var/datum/tgui/active_ui = SStgui.get_open_ui(tablet.silicon_owner, src) - if(active_ui) - active_ui.send_full_update() diff --git a/code/modules/modular_computers/file_system/programs/secureye.dm b/code/modules/modular_computers/file_system/programs/secureye.dm index dc680c435f9..5c97cd16147 100644 --- a/code/modules/modular_computers/file_system/programs/secureye.dm +++ b/code/modules/modular_computers/file_system/programs/secureye.dm @@ -83,7 +83,7 @@ ) return data -/datum/computer_file/program/secureye/ui_static_data() +/datum/computer_file/program/secureye/ui_static_data(mob/user) var/list/data = list() data["mapRef"] = cam_screen.assigned_map var/list/cameras = get_available_cameras() @@ -96,7 +96,7 @@ return data -/datum/computer_file/program/secureye/ui_act(action, params) +/datum/computer_file/program/secureye/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) . = ..() if(.) return diff --git a/code/modules/modular_computers/file_system/programs/signalcommander.dm b/code/modules/modular_computers/file_system/programs/signalcommander.dm index a92d744e525..b82518dc6b2 100644 --- a/code/modules/modular_computers/file_system/programs/signalcommander.dm +++ b/code/modules/modular_computers/file_system/programs/signalcommander.dm @@ -32,9 +32,6 @@ return data /datum/computer_file/program/signal_commander/ui_act(action, list/params) - . = ..() - if(.) - return switch(action) if("signal") INVOKE_ASYNC(src, PROC_REF(signal)) diff --git a/code/modules/modular_computers/file_system/programs/skill_tracker.dm b/code/modules/modular_computers/file_system/programs/skill_tracker.dm index a3ba60acde8..c68cffb3374 100644 --- a/code/modules/modular_computers/file_system/programs/skill_tracker.dm +++ b/code/modules/modular_computers/file_system/programs/skill_tracker.dm @@ -51,9 +51,6 @@ return null /datum/computer_file/program/skill_tracker/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("PRG_reward") var/skill_type = find_skilltype(params["skill"]) diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm index 876ebe61204..d9d830c3b63 100644 --- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm @@ -54,10 +54,7 @@ data["focus_uid"] = focused_supermatter?.uid return data -/datum/computer_file/program/supermatter_monitor/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/supermatter_monitor/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_refresh") refresh() diff --git a/code/modules/modular_computers/file_system/programs/statusdisplay.dm b/code/modules/modular_computers/file_system/programs/statusdisplay.dm index 737ed0eda51..9259e6fd468 100644 --- a/code/modules/modular_computers/file_system/programs/statusdisplay.dm +++ b/code/modules/modular_computers/file_system/programs/statusdisplay.dm @@ -63,9 +63,6 @@ log_game("[key_name(usr)] has changed the station status display message to \"[picture]\" [loc_name(usr)]") /datum/computer_file/program/status/ui_act(action, list/params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("setStatusMessage") upper_text = reject_bad_text(params["upperText"] || "", MAX_STATUS_LINE_LENGTH) @@ -78,7 +75,6 @@ /datum/computer_file/program/status/ui_static_data(mob/user) var/list/data = list() data["maxStatusLineLength"] = MAX_STATUS_LINE_LENGTH - return data /datum/computer_file/program/status/ui_data(mob/user) diff --git a/code/modules/modular_computers/file_system/programs/techweb.dm b/code/modules/modular_computers/file_system/programs/techweb.dm index 6b370162b7a..e1db7d6f708 100644 --- a/code/modules/modular_computers/file_system/programs/techweb.dm +++ b/code/modules/modular_computers/file_system/programs/techweb.dm @@ -89,9 +89,6 @@ return data /datum/computer_file/program/science/ui_act(action, list/params) - . = ..() - if (.) - return // Check if the console is locked to block any actions occuring if (locked && action != "toggleLock") computer.say("Console is locked, cannot perform further actions.") diff --git a/code/modules/modular_computers/file_system/programs/theme_selector.dm b/code/modules/modular_computers/file_system/programs/theme_selector.dm index 45972a76136..7700f508924 100644 --- a/code/modules/modular_computers/file_system/programs/theme_selector.dm +++ b/code/modules/modular_computers/file_system/programs/theme_selector.dm @@ -24,10 +24,7 @@ return data -/datum/computer_file/program/themeify/ui_act(action, params) - . = ..() - if(.) - return +/datum/computer_file/program/themeify/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) switch(action) if("PRG_change_theme") var/selected_theme = params["selected_theme"] diff --git a/code/modules/modular_computers/file_system/programs/wirecarp.dm b/code/modules/modular_computers/file_system/programs/wirecarp.dm index f33660a3752..9045fcc76b2 100644 --- a/code/modules/modular_computers/file_system/programs/wirecarp.dm +++ b/code/modules/modular_computers/file_system/programs/wirecarp.dm @@ -12,9 +12,6 @@ program_icon = "network-wired" /datum/computer_file/program/ntnetmonitor/ui_act(action, list/params, datum/tgui/ui) - . = ..() - if(.) - return switch(action) if("resetIDS") SSmodular_computers.intrusion_detection_alarm = FALSE