extends DeckNode


func _init() -> void:
	name = "Subtract Vectors"
	node_type = "vector_subtract"
	description = ""
	category = "math"

	add_input_port(
		DeckType.Types.DICTIONARY,
		"Vector A"
	)
	add_input_port(
		DeckType.Types.DICTIONARY,
		"Vector B"
	)
	add_output_port(
		DeckType.Types.DICTIONARY,
		"Result"
	)


func _value_request(_on_port: int) -> Variant:
	var va = request_value(0)
	var vb = request_value(1)

	if !va || !vb:
		return null

	if !(va as Dictionary).has("x") || !(va as Dictionary).has("y"):
		return null

	if !(vb as Dictionary).has("x") || !(vb as Dictionary).has("y"):
		return null

	var res := {}
	res["x"] = va["x"] - vb["x"]
	res["y"] = va["y"] - vb["y"]

	return res