-
-
Notifications
You must be signed in to change notification settings - Fork 444
/
Copy pathcameras.dm
35 lines (29 loc) · 1.19 KB
/
cameras.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* get_camera_list
*
* Builds a list of all available cameras that can be seen to networks_available
* Args:
* networks_available - List of networks that we use to see which cameras are visible to it.
*/
/proc/get_camera_list(list/networks_available)
var/list/all_camera_list = list()
for(var/obj/machinery/camera/camera as anything in GLOB.cameranet.cameras)
all_camera_list.Add(camera)
camera_sort(all_camera_list)
var/list/usable_camera_list = list()
for(var/obj/machinery/camera/camera as anything in all_camera_list)
var/list/tempnetwork = camera.network & networks_available
if(length(tempnetwork))
usable_camera_list["[camera.c_tag][camera.can_use() ? null : " (Deactivated)"]"] = camera
return usable_camera_list
///Sorts the list of cameras by their c_tag to display to players.
/proc/camera_sort(list/camera_list)
var/obj/machinery/camera/camera_comparing_a
var/obj/machinery/camera/camera_comparing_b
for(var/i = length(camera_list), i > 0, i--)
for(var/j = 1 to i - 1)
camera_comparing_a = camera_list[j]
camera_comparing_b = camera_list[j + 1]
if(sorttext(camera_comparing_a.c_tag, camera_comparing_b.c_tag) < 0)
camera_list.Swap(j, j + 1)
return camera_list