# (c) 2023-present Eroax # (c) 2023-present Yagich # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) extends DeckNode func _init() -> void: name = "Set Deck Var" node_type = name.to_snake_case() description = "Set a deck variable on trigger." 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 = resolve_input_port_value(0) var var_value: Variant = resolve_input_port_value(1) #_belonging_to.variable_stack[var_name] = var_value _belonging_to.set_variable(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 # EDIT: done, see DeckNode#resolve_input_port_value 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