Files
Polaris/code/modules/integrated_electronics/converters.dm
Neerti faa797b23a Even More Sodding Circuits
Adds new RNG circuit, to make random numbers each time.
Adds new Concatenating circuit, so you can make lots of small strings into one big one.
Adds new light and advanced light circuit.  Basic just has a normal light that can be toggled.  Advanced allows it to be any color using RGB, and a brightness between 0 and 6.
New sprites for the debugger and wirer, by Mechoid.
Hopefully finally fixes smoke generator from being unobtainable.
2016-09-17 12:36:46 -04:00

133 lines
3.4 KiB
Plaintext

//These circuits convert one variable to another.
/obj/item/integrated_circuit/converter
complexity = 2
number_of_inputs = 1
number_of_outputs = 1
number_of_activators = 1
input_names = list(
"input",
)
output_names = list(
"result"
)
activator_names = list(
"convert"
)
/obj/item/integrated_circuit/converter/num2text
name = "number to string"
desc = "This circuit can convert a number variable into a string."
icon_state = "num-string"
/obj/item/integrated_circuit/converter/num2text/work()
if(..())
var/result = null
var/datum/integrated_io/incoming = inputs[1]
var/datum/integrated_io/outgoing = outputs[1]
if(incoming.data && isnum(incoming.data))
result = num2text(incoming.data)
outgoing.data = result
outgoing.push_data()
/obj/item/integrated_circuit/converter/text2num
name = "string to number"
desc = "This circuit can convert a string variable into a number."
icon_state = "string-num"
/obj/item/integrated_circuit/converter/text2num/work()
if(..())
var/result = null
var/datum/integrated_io/incoming = inputs[1]
var/datum/integrated_io/outgoing = outputs[1]
if(incoming.data && istext(incoming.data))
result = text2num(incoming.data)
outgoing.data = result
outgoing.push_data()
/obj/item/integrated_circuit/converter/ref2text
name = "reference to string"
desc = "This circuit can convert a reference to something else to a string, specifically the name of that reference."
icon_state = "ref-string"
/obj/item/integrated_circuit/converter/ref2text/work()
if(..())
var/result = null
var/datum/integrated_io/incoming = inputs[1]
var/datum/integrated_io/outgoing = outputs[1]
if(incoming.data && istype(incoming.data, /atom/))
var/atom/A = incoming.data
result = A.name
outgoing.data = result
outgoing.push_data()
/obj/item/integrated_circuit/converter/lowercase
name = "lowercase string converter"
desc = "this will cause a string to come out in all lowercase."
icon_state = "lowercase"
/obj/item/integrated_circuit/converter/lowercase/work()
if(..())
var/result = null
var/datum/integrated_io/incoming = inputs[1]
var/datum/integrated_io/outgoing = outputs[1]
if(incoming.data && istext(incoming.data))
result = lowertext(incoming.data)
outgoing.data = result
outgoing.push_data()
/obj/item/integrated_circuit/converter/uppercase
name = "uppercase string converter"
desc = "THIS WILL CAUSE A STRING TO COME OUT IN ALL UPPERCASE."
icon_state = "uppercase"
/obj/item/integrated_circuit/converter/uppercase/work()
if(..())
var/result = null
var/datum/integrated_io/incoming = inputs[1]
var/datum/integrated_io/outgoing = outputs[1]
if(incoming.data && istext(incoming.data))
result = uppertext(incoming.data)
outgoing.data = result
outgoing.push_data()
/obj/item/integrated_circuit/converter/concatenatior
name = "concatenatior"
desc = "This joins many strings together to get one big string."
complexity = 4
number_of_inputs = 8
number_of_outputs = 1
number_of_activators = 1
input_names = list(
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H"
)
output_names = list(
"result"
)
activator_names = list(
"concatenate"
)
/obj/item/integrated_circuit/converter/concatenatior/work()
if(..())
var/result = null
for(var/datum/integrated_io/input/I in inputs)
I.pull_data()
if(istext(I.data))
result = result + I.data
var/datum/integrated_io/outgoing = outputs[1]
outgoing.data = result
outgoing.push_data()