mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
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:
@@ -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)))
|
||||
Reference in New Issue
Block a user