Files
Bubberstation/code/modules/wiremod/components/math/binary_conversion.dm

28 lines
1.0 KiB
Plaintext

/**
* # Binary Conversion Component
*
* Return an array of binary digits from a number input.
*/
/obj/item/circuit_component/binary_decimal/binary_conversion
display_name = "Binary Conversion"
desc = "Splits a decimal number into an array of binary digits, or bits, represented as 1 or 0 and often used in boolean or binary operations like AND, OR and XOR."
category = "Math"
/obj/item/circuit_component/binary_decimal/binary_conversion/populate_ports()
. = ..()
number = add_input_port("Number", PORT_TYPE_NUMBER)
/obj/item/circuit_component/binary_decimal/binary_conversion/add_bit_port(index)
return add_output_port("Bit [index]", PORT_TYPE_NUMBER)
/obj/item/circuit_component/binary_decimal/binary_conversion/remove_bit_port(datum/port/to_remove)
return remove_output_port(to_remove)
/obj/item/circuit_component/binary_decimal/binary_conversion/input_received(datum/port/input/port)
if(!array_size)
return
for(var/iteration in 1 to array_size)
var/datum/port/output/bit = bit_array[iteration]
bit.set_output(number.value & (2 ** (iteration - 1)))