mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-29 10:31:34 +00:00
Added a couple components that convert a number into an array of binary digits and viceversa. May help players mak more complex and advanced components without filtering those lacking knowledge in the binary field.
27 lines
1.0 KiB
Plaintext
27 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."
|
|
|
|
/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)))
|