From 91a45a4e391c44585f7915981ffd5ad50c00a582 Mon Sep 17 00:00:00 2001 From: Geeves Date: Sun, 31 Dec 2023 20:06:23 +0200 Subject: [PATCH] Ship Sensor View Fix (#18030) * Ship Sensor View Fix * copy paste error * Update code/modules/mob/living/carbon/human/life.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * dmdoc'd --------- Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> --- code/__defines/dcs/signals.dm | 3 +++ code/modules/mob/living/carbon/human/life.dm | 21 +++++++------------ code/modules/overmap/ships/computers/helm.dm | 1 + .../overmap/ships/computers/sensors.dm | 1 + code/modules/overmap/ships/computers/ship.dm | 6 ++++++ code/modules/tgui/tgui.dm | 1 + .../geeves-ship_sensor_view_fix.yml | 6 ++++++ 7 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 html/changelogs/geeves-ship_sensor_view_fix.yml diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index 2bf44bee8df..7b2e2dd1101 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -85,4 +85,7 @@ /// updates sprites #define COMSIG_ITEM_ICON_UPDATE "icon_update" +// tgui signals +#define COMSIG_TGUI_CLOSE "tgui_close" + /*******Component Specific Signals*******/ diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index a384adeebfe..34866ebde53 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1402,21 +1402,14 @@ if(viewflags < 0) reset_view(null, 0) else if(viewflags) - set_sight(sight, viewflags) + set_sight(sight|viewflags) machine_has_equipment_vision = machine.grants_equipment_vision(src) - else if(eyeobj) - if(eyeobj.owner != src) - reset_view(null) - else - var/isRemoteObserve = 0 - if(z_eye && client?.eye == z_eye && !is_physically_disabled()) - isRemoteObserve = 1 - if(remoteview_target) - if(remoteview_target.stat==CONSCIOUS) - isRemoteObserve = 1 - if(!isRemoteObserve && client && !client.adminobs) - remoteview_target = null - reset_view(null, 0) + if(eyeobj && eyeobj.owner != src) + reset_view(null) + + if((mRemote in mutations) && remoteview_target && remoteview_target.stat != CONSCIOUS) + remoteview_target = null + reset_view(null, 0) update_equipment_vision(machine_has_equipment_vision) species.handle_vision(src) diff --git a/code/modules/overmap/ships/computers/helm.dm b/code/modules/overmap/ships/computers/helm.dm index b5780f81636..db09025fafb 100644 --- a/code/modules/overmap/ships/computers/helm.dm +++ b/code/modules/overmap/ships/computers/helm.dm @@ -116,6 +116,7 @@ ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "Helm", capitalize_first_letters(name)) + RegisterSignal(ui, COMSIG_TGUI_CLOSE, PROC_REF(handle_unlook_signal)) ui.open() /obj/machinery/computer/ship/helm/ui_data(mob/user) diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index 73ff71e5aa9..11bec3e79d7 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -84,6 +84,7 @@ ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "Sensors", capitalize_first_letters(name)) + RegisterSignal(ui, COMSIG_TGUI_CLOSE, PROC_REF(handle_unlook_signal)) ui.open() /obj/machinery/computer/ship/sensors/ui_data(mob/user) diff --git a/code/modules/overmap/ships/computers/ship.dm b/code/modules/overmap/ships/computers/ship.dm index 0bd0e49c0a2..28ae325e490 100644 --- a/code/modules/overmap/ships/computers/ship.dm +++ b/code/modules/overmap/ships/computers/ship.dm @@ -60,6 +60,12 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov LAZYDISTINCTADD(linked.navigation_viewers, WEAKREF(user)) ADD_TRAIT(user, TRAIT_COMPUTER_VIEW, ref(src)) +/// Handles disabling the user's overmap view when a signal comes in, primarily used when the TGUI is closed, see helm.dm and sensors.dm +/obj/machinery/computer/ship/proc/handle_unlook_signal(var/datum/source, var/mob/user) + SIGNAL_HANDLER + + unlook(user) + /obj/machinery/computer/ship/proc/unlook(var/mob/user) user.reset_view() var/client/c = user.client diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 70d7e9bbeb8..213bbde9e34 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -143,6 +143,7 @@ window.release_lock() window.close(can_be_suspended) src_object.ui_close(user) + SEND_SIGNAL(src, COMSIG_TGUI_CLOSE, user) SStgui.on_close(src) state = null qdel(src) diff --git a/html/changelogs/geeves-ship_sensor_view_fix.yml b/html/changelogs/geeves-ship_sensor_view_fix.yml new file mode 100644 index 00000000000..ce71496a5b8 --- /dev/null +++ b/html/changelogs/geeves-ship_sensor_view_fix.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Interacting with other ship UIs will no longer drop the sensor view randomly." \ No newline at end of file