Files
OpenSS13/Code/ai_area_selection.dm

37 lines
882 B
Plaintext

/proc/get_area(area/A)
while(!istype(A, /area) && A)
A = A.loc
return A
/var/const/INFINITY = 1e20 //close enough
/turf/DblClick()
if(usr.stat || !istype(usr, /mob/ai))
return ..()
if (world.time <= usr:lastDblClick+2)
return ..()
//try to find the closest working camera in the same area, switch to it
var/area/A = get_area(src)
var/best_dist = INFINITY
var/best_cam = null
for(var/obj/machinery/camera/C in A)
if(usr:network != C.network)
continue // different network (syndicate)
if(C.z != usr.z)
continue // different viewing plane
if(!C.status)
continue // ignore disabled cameras
var/dist = get_dist(src, C)
if(dist < best_dist)
best_dist = dist
best_cam = C
if(!best_cam)
return ..()
usr:lastDblClick = world.time
usr:current = best_cam
usr:reset_view(best_cam)
usr:cameraFollow = null