Look up/down hotkeys and quality of life. (#20355)

- You can now look down open spaces by shift clicking/examining them
when they're next to you.
- You can now look up open spaces by clicking the HUD element at the top
right.
- Fixed inconsistencies with the camera getting stuck while looking up
or down. It should now be much more fluid.

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2025-01-28 17:47:50 +00:00
committed by GitHub
co-authored by Matt Atlas
parent 7539d21711
commit 99ed2bf2f3
7 changed files with 94 additions and 22 deletions
@@ -2259,16 +2259,17 @@
set desc = "If you want to know what's above."
set category = "IC"
look_up_open_space(get_turf(src))
/mob/living/proc/look_up_open_space(var/turf/T)
if(client && !is_physically_disabled())
if(z_eye)
reset_view(null)
QDEL_NULL(z_eye)
return
var/turf/T = get_turf(src)
var/turf/above = GET_TURF_ABOVE(T)
if(TURF_IS_MIMICING(above))
z_eye = new /atom/movable/z_observer/z_up(src, src)
z_eye = new /atom/movable/z_observer/z_up(src, src, T)
visible_message(SPAN_NOTICE("[src] looks up."), SPAN_NOTICE("You look up."))
reset_view(z_eye)
return
@@ -2281,21 +2282,23 @@
set desc = "If you want to know what's below."
set category = "IC"
look_down_open_space(get_turf(src))
/mob/living/proc/look_down_open_space(var/turf/T)
if(client && !is_physically_disabled())
if(z_eye)
reset_view(null)
QDEL_NULL(z_eye)
return
var/turf/T = get_turf(src)
if(TURF_IS_MIMICING(T) && GET_TURF_BELOW(T))
z_eye = new /atom/movable/z_observer/z_down(src, src)
z_eye = new /atom/movable/z_observer/z_down(T, src, T)
visible_message(SPAN_NOTICE("[src] looks below."), SPAN_NOTICE("You look below."))
reset_view(z_eye)
return
else
T = get_step(T, dir)
if(TURF_IS_MIMICING(T) && GET_TURF_BELOW(T))
z_eye = new /atom/movable/z_observer/z_down(src, src, TRUE)
z_eye = new /atom/movable/z_observer/z_down(T, src, T)
visible_message(SPAN_NOTICE("[src] leans over to look below."), SPAN_NOTICE("You lean over to look below."))
reset_view(z_eye)
return
@@ -371,7 +371,7 @@
return M.attackby(W,src)
var/randn = rand(1, 100)
if(z_eye && z_eye.tile_shifted) //They're looking down in front of them.
if(z_eye) //They're looking down in front of them.
var/turf/T = loc
var/obj/structure/railing/problem_railing
var/same_loc = FALSE