diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 406a0fb4423..719f7718977 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -163,12 +163,10 @@ /* AI Turrets */ /obj/machinery/turretid/AIAltClick() //toggles lethal on turrets - if(can_be_used_by(usr)) - toggle_lethal() + toggle_lethal() add_fingerprint(usr) /obj/machinery/turretid/AICtrlClick() //turns off/on Turrets - if(can_be_used_by(usr)) - toggle_on() + toggle_on() add_fingerprint(usr) // diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index 0b7dd2a688c..97c36b241bc 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -304,8 +304,13 @@ var/list/wire_color_directory = list() /datum/wires/ui_host() return holder +/datum/wires/ui_status(mob/user) + if(interactable(user)) + return ..() + return UI_CLOSE + /datum/wires/ui_interact(mob/user, ui_key = "wires", datum/tgui/ui = null, force_open = 0, \ - datum/tgui/master_ui = null, datum/ui_state/state = wire_state) + datum/tgui/master_ui = null, datum/ui_state/state = physical_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if (!ui) ui = new(user, src, ui_key, "wires", "[holder.name] wires", 350, 150 + wires.len * 30, master_ui, state) diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 2f652080af0..e83bff6774a 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -94,10 +94,6 @@ var/list/announcement_systems = list() return ..() -/obj/machinery/announcement_system/attack_hand(mob/user) - if(can_be_used_by(user)) - Interact(user) - /obj/machinery/announcement_system/proc/CompileText(str, user, rank) //replaces user-given variables with actual thingies. str = replacetext(str, "%PERSON", "[user]") str = replacetext(str, "%RANK", "[rank]") @@ -123,10 +119,7 @@ var/list/announcement_systems = list() //config stuff -/obj/machinery/announcement_system/proc/Interact(mob/user) - if(!can_be_used_by(user)) - return - +/obj/machinery/announcement_system/interact(mob/user) if(broken) visible_message("[src] buzzes.", "You hear a faint buzz.") playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1) @@ -141,8 +134,6 @@ var/list/announcement_systems = list() popup.open() /obj/machinery/announcement_system/Topic(href, href_list) - if(!can_be_used_by(usr) || usr.lying || usr.stat || usr.stunned) - return if(broken) visible_message("[src] buzzes.", "You hear a faint buzz.") playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1) @@ -169,7 +160,7 @@ var/list/announcement_systems = list() update_icon() add_fingerprint(usr) - Interact(usr) + interact(usr) return /obj/machinery/announcement_system/attack_ai(mob/living/silicon/ai/user) @@ -178,7 +169,7 @@ var/list/announcement_systems = list() if(broken) user << "[src]'s firmware appears to be malfunctioning!" return - Interact(user) + interact(user) /obj/machinery/announcement_system/proc/act_up() //does funny breakage stuff broken = 1 diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index dd750ee02a6..25ec855e7a5 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -202,32 +202,39 @@ Class Procs: use_power(active_power_usage,power_channel) return 1 -/obj/machinery/Topic(href, href_list) - ..() - if(!can_be_used_by(usr)) - return 1 - add_fingerprint(usr) - return 0 - -/obj/machinery/ui_act(action, params) - ..() - if(!can_be_used_by(usr)) - return TRUE - add_fingerprint(usr) - -/obj/machinery/proc/can_be_used_by(mob/user) - if(!interact_offline && stat & (NOPOWER|BROKEN)) - return 0 - if(!user.canUseTopic(src)) - return 0 - return 1 - /obj/machinery/proc/is_operational() return !(stat & (NOPOWER|BROKEN|MAINT)) +/obj/machinery/proc/is_interactable() + if((stat & (NOPOWER|BROKEN)) && !interact_offline) + return FALSE + return TRUE + //////////////////////////////////////////////////////////////////////////////////////////// +/obj/machinery/interact(mob/user) + ui_interact(user) + +/obj/machinery/Topic(href, href_list) + ..() + if(!is_interactable()) + return 1 + if(!usr.canUseTopic(src)) + return 1 + add_fingerprint(usr) + return 0 + +/obj/machinery/ui_status(mob/user) + if(is_interactable() && !panel_open) + return ..() + return UI_CLOSE + +/obj/machinery/ui_act(action, params) + ..() + add_fingerprint(usr) + +//////////////////////////////////////////////////////////////////////////////////////////// /obj/machinery/attack_ai(mob/user) if(isrobot(user)) @@ -273,10 +280,6 @@ Class Procs: add_fingerprint(user) return 0 -/obj/machinery/interact(mob/user) - if(is_operational()) - ui_interact(user) - /obj/machinery/CheckParts() RefreshParts() return diff --git a/code/modules/tgui/states/wire.dm b/code/modules/tgui/states/wire.dm deleted file mode 100644 index 5d31c4c7637..00000000000 --- a/code/modules/tgui/states/wire.dm +++ /dev/null @@ -1,13 +0,0 @@ - /** - * tgui state: wire_state - * - * Checks specifically designed for wire datums. - **/ - -/var/global/datum/ui_state/wire_state/wire_state = new() - -/datum/ui_state/wire_state/can_use_topic(atom/src_object, mob/user) - var/datum/wires/W = src_object.wires - if(istype(W) && user.Adjacent(W.holder) && W.interactable(user)) - return UI_INTERACTIVE - return UI_CLOSE \ No newline at end of file diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index c2b7b1ee1de..0de72fd2609 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -316,14 +316,13 @@ /datum/tgui/proc/push_data(data, force = 0) update_status(push = 0) // Update the window state. if(!initialized) - return // Cannot upadte UI if it is not set up yet. + return // Cannot update UI if it is not set up yet. if(status <= UI_DISABLED && !force) return // Cannot update UI, we have no visibility. // Send the new JSON to the update() Javascript function. user << output(url_encode(get_json(data)), "[window_id].browser:update") - /** * private * @@ -343,8 +342,7 @@ * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). **/ /datum/tgui/proc/update_status(push = 0) - var/datum/host = src_object.ui_host() - var/status = host.ui_status(user, state) + var/status = src_object.ui_status(user, state) if(master_ui) status = min(status, master_ui.status) diff --git a/tgstation.dme b/tgstation.dme index 86563f04e9a..242e2b93b06 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1603,7 +1603,6 @@ #include "code\modules\tgui\states\notcontained.dm" #include "code\modules\tgui\states\physical.dm" #include "code\modules\tgui\states\self.dm" -#include "code\modules\tgui\states\wire.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tooltip\tooltip.dm" #include "code\modules\uplink\uplink.dm"