Files
Bubberstation/code/modules/wiremod/components/admin/setvar.dm
Y0SH1M4S73R b7ed43d7a8 Adds a Datum port type for Admin Circuits (#61582)
Admin circuit components were limited in their utility due to the setvar, getvar, proccall, and signal handler components only being able to operate on atoms. I have improved them by adding the datum datatype, which is used exclusively by the aforementioned components in place of the atom datatype their target port currently uses. Furthermore, an option for the expected output type has been added to the getvar and proccall components. This option defaults to any.
2021-09-22 08:04:05 +01:00

33 lines
966 B
Plaintext

/**
* # Set Variable Component
*
* A component that sets a variable on an object
*/
/obj/item/circuit_component/set_variable
display_name = "Set Variable"
desc = "A component that sets a variable on an object."
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL|CIRCUIT_FLAG_ADMIN
/// Entity to set variable of
var/datum/port/input/entity
/// Variable name
var/datum/port/input/variable_name
/// New value to set the variable name to.
var/datum/port/input/new_value
/obj/item/circuit_component/set_variable/populate_ports()
entity = add_input_port("Target", PORT_TYPE_DATUM)
variable_name = add_input_port("Variable Name", PORT_TYPE_STRING)
new_value = add_input_port("New Value", PORT_TYPE_ANY)
/obj/item/circuit_component/set_variable/input_received(datum/port/input/port)
var/atom/object = entity.value
var/var_name = variable_name.value
if(!var_name || !object)
return
object.vv_edit_var(var_name, new_value.value)