/
access_reader.dm
32 lines (24 loc) · 1.1 KB
/
access_reader.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
/obj/item/circuit_component/id_access_reader
display_name = "Read ID Access"
desc = "A component that reads the access on an ID."
category = "ID"
/// The input port
var/datum/port/input/target
/// A list of the accesses on the ID
var/datum/port/output/access_port
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
var/max_range = 1
/obj/item/circuit_component/id_access_reader/get_ui_notices()
. = ..()
. += create_ui_notice("Maximum Range: [max_range] tiles.", "orange", "info")
/obj/item/circuit_component/id_access_reader/populate_ports()
target = add_input_port("Target", PORT_TYPE_ATOM)
access_port = add_output_port("Access", PORT_TYPE_LIST(PORT_TYPE_STRING))
/obj/item/circuit_component/id_access_reader/input_received(datum/port/input/port)
var/obj/item/card/id/target_item = target.value
var/turf/current_turf = get_location()
var/turf/target_turf = get_turf(target_item)
if(!istype(target_item) || get_dist(current_turf, target_turf) > max_range || current_turf.z != target_turf.z)
access_port.set_output(null)
return
access_port.set_output(target_item.GetAccess())