mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 04:28:12 +01:00
Fixing client eye (#18577)
* signal foundation * reset_perspective implemented * you too * setting mob * no * fix * tweak * remote view element * these too * use element * cleanup more manual code * fix element * mutation signal * handle being dropped from holders, and fix pai hud * handle qdel * it's a component now * ugly holder fix * another fix * follow view target * item remote view * doc update * unneeded * this needs a recode to work better * many fixes * these are all unneeded * almost working viewerlist remotes * this uses component too * this needs to die to it's item * don't allow spamming tgui menus * tg style args * fixing behaviors * fuk * working view release from holders * only final matters * comment order and disposal fix * cryotube loc fix * no mob should reset its view every life tick * major improvements * still forbid z level change even if we allow moving * this too * don't doubledip * qdel on self is unneeded * wipe remote views on logout * vore bellies need to manually clear views * fixAI hud * belly release fixes * cannot use binoculars in a vore belly * pai card can be picked up and dropped correctly * ventcrawl fix and distracted fix * this is better * forcemove * vr console fix * use flag for this * belly stuff * various cleanups * oops * fixes statue spell * unneeded perspective clear * automatic instead * continued cleanup * that was dumb * needed * none of this works * are these even needed * lets lock down to these * lets try to make this work * extremely close to working * needs to solve final pai issues * mob eye change signal * Revert "mob eye change signal" This reverts commiteedd5da934. * significant progress * safety * expected to be not null * likely not needed * don't spam component changes * endview on logout * accessors * egg fixing * Revert "egg fixing" This reverts commit6a54049c69. * getting closer * even closer * needs type * close... * extremely close to working * fixing pai stuff * this too * promising fixes * docs * this is recursive move's responsibility tbh * unneeded now * oops * better decouple * topmost check * cleanup * holder released from egg fix * pai fix for reset view * debug info * some better pai ejection code * better way * unneeded * needs to be null * better vision restore * use correct handling * no longer needed * required * handle decouple on mecha too * name clarity * do not allow double dipping zoom items * ethereal jaunt needs a full cleanup later * fix blackscreen flicker * remove set machine from pda * Update code/game/objects/items.dm * Update code/game/objects/items.dm * Update code/game/objects/items.dm * Update code/game/objects/items.dm --------- Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
@@ -73,19 +73,18 @@
|
||||
if(current_uav.check_eye(ui.user) < 0)
|
||||
to_chat(ui.user,span_warning("The screen freezes for a moment, before returning to the UAV selection menu. It's not able to connect to that UAV."))
|
||||
else
|
||||
viewing_uav(ui.user) ? unlook(ui.user) : look(ui.user)
|
||||
if(!viewing_uav(ui.user))
|
||||
if(!viewers) viewers = list() // List must exist for pass by reference to work
|
||||
start_coordinated_remoteview(ui.user, current_uav, viewers)
|
||||
else
|
||||
ui.user.reset_perspective()
|
||||
return TRUE
|
||||
|
||||
if("power_uav")
|
||||
if(!current_uav)
|
||||
return FALSE
|
||||
else if(current_uav.toggle_power())
|
||||
//Clean up viewers faster
|
||||
if(LAZYLEN(viewers))
|
||||
for(var/datum/weakref/W in viewers)
|
||||
var/M = W.resolve()
|
||||
if(M)
|
||||
unlook(M)
|
||||
SEND_SIGNAL(src,COMSIG_REMOTE_VIEW_CLEAR)
|
||||
return TRUE
|
||||
|
||||
/datum/tgui_module/uav/proc/set_current(var/obj/item/uav/U)
|
||||
@@ -95,12 +94,7 @@
|
||||
signal_strength = 0
|
||||
current_uav = U
|
||||
RegisterSignal(U, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(current_uav_changed_z))
|
||||
|
||||
if(LAZYLEN(viewers))
|
||||
for(var/datum/weakref/W in viewers)
|
||||
var/M = W.resolve()
|
||||
if(M)
|
||||
look(M)
|
||||
SEND_SIGNAL(src,COMSIG_REMOTE_VIEW_CLEAR)
|
||||
|
||||
/datum/tgui_module/uav/proc/clear_current()
|
||||
if(!current_uav)
|
||||
@@ -109,13 +103,7 @@
|
||||
UnregisterSignal(current_uav, COMSIG_MOVABLE_Z_CHANGED)
|
||||
signal_strength = 0
|
||||
current_uav = null
|
||||
|
||||
if(LAZYLEN(viewers))
|
||||
for(var/datum/weakref/W in viewers)
|
||||
var/M = W.resolve()
|
||||
if(M)
|
||||
to_chat(M, span_warning("You're disconnected from the UAV's camera!"))
|
||||
unlook(M)
|
||||
SEND_SIGNAL(src,COMSIG_REMOTE_VIEW_CLEAR)
|
||||
|
||||
/datum/tgui_module/uav/proc/current_uav_changed_z(old_z, new_z)
|
||||
SIGNAL_HANDLER
|
||||
@@ -170,31 +158,16 @@
|
||||
else
|
||||
return max(our_signal, their_signal)
|
||||
|
||||
/* All handling viewers */
|
||||
/datum/tgui_module/uav/Destroy()
|
||||
if(LAZYLEN(viewers))
|
||||
for(var/datum/weakref/W in viewers)
|
||||
var/M = W.resolve()
|
||||
if(M)
|
||||
unlook(M)
|
||||
. = ..()
|
||||
|
||||
/datum/tgui_module/uav/tgui_status(mob/user)
|
||||
. = ..()
|
||||
if(. > STATUS_DISABLED)
|
||||
if(viewing_uav(user))
|
||||
look(user)
|
||||
return
|
||||
unlook(user)
|
||||
|
||||
/datum/tgui_module/uav/tgui_close(mob/user)
|
||||
. = ..()
|
||||
unlook(user)
|
||||
user.reset_perspective()
|
||||
|
||||
/datum/tgui_module/uav/proc/viewing_uav(mob/user)
|
||||
return (WEAKREF(user) in viewers)
|
||||
|
||||
/datum/tgui_module/uav/proc/look(mob/user)
|
||||
/datum/tgui_module/uav/look(mob/user)
|
||||
if(issilicon(user)) //Too complicated for me to want to mess with at the moment
|
||||
to_chat(user, span_warning("Regulations prevent you from controlling several corporeal forms at the same time!"))
|
||||
return
|
||||
@@ -204,25 +177,27 @@
|
||||
|
||||
if(user.machine != tgui_host())
|
||||
user.set_machine(tgui_host())
|
||||
user.reset_view(current_uav)
|
||||
current_uav.add_master(user)
|
||||
LAZYDISTINCTADD(viewers, WEAKREF(user))
|
||||
|
||||
/datum/tgui_module/uav/proc/unlook(mob/user)
|
||||
/datum/tgui_module/uav/unlook(mob/user)
|
||||
user.unset_machine()
|
||||
user.reset_view()
|
||||
if(current_uav)
|
||||
current_uav.remove_master(user)
|
||||
LAZYREMOVE(viewers, WEAKREF(user))
|
||||
|
||||
/datum/tgui_module/uav/tgui_close(mob/user)
|
||||
. = ..()
|
||||
user.reset_perspective()
|
||||
|
||||
/datum/tgui_module/uav/check_eye(mob/user)
|
||||
if(get_dist(user, tgui_host()) > 1 || user.blinded || !current_uav)
|
||||
unlook(user)
|
||||
user.reset_perspective()
|
||||
return -1
|
||||
|
||||
var/viewflag = current_uav.check_eye(user)
|
||||
if(viewflag < 0) //camera doesn't work
|
||||
unlook(user)
|
||||
user.reset_perspective()
|
||||
return -1
|
||||
|
||||
return viewflag
|
||||
|
||||
@@ -10,14 +10,6 @@
|
||||
if(linked)
|
||||
name = "[linked.name] [name]"
|
||||
|
||||
/datum/tgui_module/ship/Destroy()
|
||||
if(LAZYLEN(viewers))
|
||||
for(var/datum/weakref/W in viewers)
|
||||
var/M = W.resolve()
|
||||
if(M)
|
||||
unlook(M)
|
||||
. = ..()
|
||||
|
||||
/datum/tgui_module/ship/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
@@ -39,19 +31,14 @@
|
||||
|
||||
/datum/tgui_module/ship/tgui_status(mob/user)
|
||||
. = ..()
|
||||
if(. > STATUS_DISABLED)
|
||||
if(viewing_overmap(user))
|
||||
look(user)
|
||||
return
|
||||
unlook(user)
|
||||
if(viewing_overmap(user) && (user.machine != src))
|
||||
user.reset_perspective()
|
||||
|
||||
/datum/tgui_module/ship/tgui_close(mob/user)
|
||||
. = ..()
|
||||
user.unset_machine()
|
||||
unlook(user)
|
||||
|
||||
// Unregister map objects
|
||||
user.client?.clear_map(linked?.map_name)
|
||||
user.reset_perspective()
|
||||
|
||||
/datum/tgui_module/ship/proc/sync_linked()
|
||||
var/obj/effect/overmap/visitable/ship/sector = get_overmap_sector(get_z(tgui_host()))
|
||||
@@ -73,32 +60,22 @@
|
||||
linked = sector
|
||||
return 1
|
||||
|
||||
/datum/tgui_module/ship/proc/look(var/mob/user)
|
||||
if(linked)
|
||||
user.set_machine(src)
|
||||
user.reset_view(linked)
|
||||
/datum/tgui_module/ship/look(var/mob/user)
|
||||
user.set_viewsize(world.view + extra_view)
|
||||
user.AddComponent(/datum/component/recursive_move)
|
||||
if(!map_view_used)
|
||||
RegisterSignal(user, COMSIG_OBSERVER_MOVED, /datum/tgui_module/ship/proc/unlook)
|
||||
map_view_used = TRUE
|
||||
LAZYDISTINCTADD(viewers, WEAKREF(user))
|
||||
|
||||
/datum/tgui_module/ship/proc/unlook(var/mob/user)
|
||||
SIGNAL_HANDLER
|
||||
user.reset_view()
|
||||
/datum/tgui_module/ship/unlook(var/mob/user)
|
||||
user.set_viewsize() // reset to default
|
||||
if(map_view_used)
|
||||
UnregisterSignal(user, COMSIG_OBSERVER_MOVED)
|
||||
map_view_used = FALSE
|
||||
LAZYREMOVE(viewers, WEAKREF(user))
|
||||
|
||||
/datum/tgui_module/ship/proc/viewing_overmap(mob/user)
|
||||
return (WEAKREF(user) in viewers)
|
||||
|
||||
/datum/tgui_module/ship/check_eye(var/mob/user)
|
||||
if(!get_dist(user, tgui_host()) > 1 || user.blinded || !linked)
|
||||
unlook(user)
|
||||
user.reset_perspective()
|
||||
return -1
|
||||
else
|
||||
return 0
|
||||
@@ -159,7 +136,11 @@
|
||||
return FALSE
|
||||
|
||||
if(action == "viewing")
|
||||
viewing_overmap(ui.user) ? unlook(ui.user) : look(ui.user)
|
||||
if(!viewing_overmap(ui.user))
|
||||
if(!viewers) viewers = list() // List must exist for pass by reference to work
|
||||
start_coordinated_remoteview(ui.user, linked, viewers)
|
||||
else
|
||||
ui.user.reset_perspective()
|
||||
return TRUE
|
||||
|
||||
/datum/tgui_module/ship/nav/ntos
|
||||
@@ -419,7 +400,11 @@
|
||||
. = TRUE
|
||||
|
||||
if("manual")
|
||||
viewing_overmap(ui.user) ? unlook(ui.user) : look(ui.user)
|
||||
if(!viewing_overmap(ui.user))
|
||||
if(!viewers) viewers = list()
|
||||
start_coordinated_remoteview(ui.user, linked, viewers)
|
||||
else
|
||||
ui.user.reset_perspective()
|
||||
. = TRUE
|
||||
/* END HELM */
|
||||
/* ENGINES */
|
||||
|
||||
Reference in New Issue
Block a user