diff --git a/classes/deck/nodes/general/expression_node.gd b/classes/deck/nodes/general/expression_node.gd index 9724744..221bf84 100644 --- a/classes/deck/nodes/general/expression_node.gd +++ b/classes/deck/nodes/general/expression_node.gd @@ -5,18 +5,17 @@ extends DeckNode var expr = Expression.new() + func _init(): name = "Expression" - node_type = name.to_snake_case() + node_type = "expression" description = "A node returning the result of a mathematical expression." - props_to_serialize = [] - # TODO: order of ports is changed # due to https://github.com/godotengine/godot/issues/85558 # when it's fixed, switch it back add_input_port( - DeckType.Types.DICTIONARY, + DeckType.Types.ANY, "Expression Input", ) @@ -27,30 +26,28 @@ func _init(): ) -func parse(input: Dictionary) -> Variant: +func parse(input: Variant) -> Variant: var text = get_output_ports()[0].value - var err = expr.parse(text, ["deck_var", "input"]) + var err := expr.parse(text, ["deck_var", "input"]) if err != OK: - DeckHolder.logger.log_node("Expression parse failed: %s" % err, Logger.LogType.ERROR) - printerr(err) return null var res = expr.execute([_belonging_to.variable_stack, input]) if expr.has_execute_failed(): - - DeckHolder.logger.log_node("Expression Execution Failed: %s" % text, Logger.LogType.ERROR) + DeckHolder.logger.log_node("Expression Execution Failed: %s" % expr.get_error_text(), Logger.LogType.ERROR) return null return res + func _value_request(_from_port : int) -> Variant: var input = await request_value_async(0) if input != null: return parse(input) else: - return parse({}) + return parse(null) func _receive(_on_input_port: int, data: Variant) -> void: