mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-20 15:12:57 +00:00
Ports PsiOmegaDelta's port of integrated circuits, which has several improvements in code quality. Ports a few small things like the weakref datum and some macros.
101 lines
3.1 KiB
Plaintext
101 lines
3.1 KiB
Plaintext
//These circuits convert one variable to another.
|
|
/obj/item/integrated_circuit/converter
|
|
complexity = 2
|
|
inputs = list("input")
|
|
outputs = list("output")
|
|
activators = list("convert")
|
|
category = /obj/item/integrated_circuit/converter
|
|
|
|
/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/do_work()
|
|
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/do_work()
|
|
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/do_work()
|
|
var/result = null
|
|
var/datum/integrated_io/incoming = inputs[1]
|
|
var/datum/integrated_io/outgoing = outputs[1]
|
|
var/atom/A = incoming.data_as_type(/atom)
|
|
result = A && 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/do_work()
|
|
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/do_work()
|
|
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
|
|
inputs = list("A","B","C","D","E","F","G","H")
|
|
outputs = list("result")
|
|
activators = list("concatenate")
|
|
|
|
/obj/item/integrated_circuit/converter/concatenatior/do_work()
|
|
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() |