extends DeckNode func _init() -> void: name = "Set Deck Var" node_type = name.to_snake_case() description = "set deck variable" category = "general" add_input_port( Deck.Types.STRING, "Variable Name", "field" ) add_input_port( Deck.Types.STRING, "Value", "field" ) add_input_port( Deck.Types.BOOL, "Set", "button" ) add_output_port( Deck.Types.STRING, "Value", "label" ) func _receive(to_input_port: int, data: DeckType, extra_data: Array = []) -> void: if to_input_port != 2: return var var_name: String = get_value_for_port(0, data) # String for now, until i figure out an Any type var var_value: String = get_value_for_port(1, data) _belonging_to.variable_stack[var_name] = var_value send(0, DeckType.DeckTypeString.new(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, data: DeckType) -> Variant: if request_value(port) != null: return request_value(port) elif ports[port].value_callback.call() != "": return ports[port].value_callback.call() else: return data.get_value()