mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-26 09:03:37 +00:00
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.
33 lines
966 B
Plaintext
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)
|