diff --git a/code/modules/research/designs/wiremod_designs.dm b/code/modules/research/designs/wiremod_designs.dm index 86ecfdb14a8..e98c663b850 100644 --- a/code/modules/research/designs/wiremod_designs.dm +++ b/code/modules/research/designs/wiremod_designs.dm @@ -113,6 +113,11 @@ id = "comp_tostring" build_path = /obj/item/circuit_component/tostring +/datum/design/component/tonumber + name = "To Number" + id = "comp_tonumber" + build_path = /obj/item/circuit_component/tonumber + /datum/design/component/typecheck name = "Typecheck Component" id = "comp_typecheck" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 095cbbac001..4cbf41979b0 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -245,6 +245,7 @@ "comp_string_contains", "comp_tempsensor", "comp_textcase", + "comp_tonumber", "comp_tostring", "comp_typecheck", "compact_remote_shell", diff --git a/code/modules/wiremod/components/string/tonumber.dm b/code/modules/wiremod/components/string/tonumber.dm new file mode 100644 index 00000000000..c809f4d70f9 --- /dev/null +++ b/code/modules/wiremod/components/string/tonumber.dm @@ -0,0 +1,34 @@ +/** + * #To Number Component + * + * Converts a string into a Number + */ +/obj/item/circuit_component/tonumber + display_name = "To Number" + display_desc = "A component that converts its input (a string) to a number. If there's text in the input, it'll only consider it if it starts with a number. It will take that number and ignore the rest." + + /// The input port + var/datum/port/input/input_port + + /// The result from the output + var/datum/port/output/output + + circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL + +/obj/item/circuit_component/tonumber/Initialize() + . = ..() + input_port = add_input_port("Input", PORT_TYPE_STRING) + + output = add_output_port("Output", PORT_TYPE_NUMBER) + +/obj/item/circuit_component/tonumber/Destroy() + input_port = null + output = null + return ..() + +/obj/item/circuit_component/tonumber/input_received(datum/port/input/port) + . = ..() + if(.) + return + + output.set_output(text2num(input_port.input_value)) diff --git a/tgstation.dme b/tgstation.dme index 8ffc8cccc35..c5c8e9a44c4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3652,6 +3652,7 @@ #include "code\modules\wiremod\components\string\concat.dm" #include "code\modules\wiremod\components\string\contains.dm" #include "code\modules\wiremod\components\string\textcase.dm" +#include "code\modules\wiremod\components\string\tonumber.dm" #include "code\modules\wiremod\components\string\tostring.dm" #include "code\modules\wiremod\components\utility\clock.dm" #include "code\modules\wiremod\components\utility\combiner.dm"