Binary and Decimal Conversion Components. (#61889)

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.
This commit is contained in:
Ghom
2021-10-23 08:03:26 +01:00
committed by GitHub
parent e596e24f53
commit 585f1119e3
7 changed files with 145 additions and 0 deletions
@@ -0,0 +1,26 @@
/**
* # 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)))