extends DeckNode func _init() -> void: name = "Set Deck Var" node_type = name.to_snake_case() description = "set deck variable" category = "general" add_input_port( DeckType.Types.STRING, "Variable Name", "field" ) add_input_port( DeckType.Types.ANY, "Value", "field" ) add_input_port( DeckType.Types.BOOL, "Set", "button" ) add_output_port( DeckType.Types.ANY, "Value", "label" ) func _receive(to_input_port: int, data: Variant, extra_data: Array = []) -> void: if to_input_port != 2: return var var_name: String = get_value_for_port(0) var var_value: Variant = get_value_for_port(1) _belonging_to.variable_stack[var_name] = var_value send(0, var_value) # this can probably go into DeckNode with a different name that makes it clear # that it prioritizes call-time resolution func get_value_for_port(port: int) -> Variant: if request_value(port) != null: return request_value(port) elif get_input_ports()[port].value_callback.get_object() && get_input_ports()[port].value_callback.call() != null: return get_input_ports()[port].value_callback.call() else: return null