@tool
extends "ValueConditionEditor.gd"

@onready var integer_value = $MarginContainer/IntegerValue

var _old_value = 0


func _ready():
	super._ready()
	
	integer_value.text_submitted.connect(_on_integer_value_text_submitted)
	integer_value.focus_entered.connect(_on_integer_value_focus_entered)
	integer_value.focus_exited.connect(_on_integer_value_focus_exited)
	set_process_input(false)

func _input(event):
	super._input(event)
	
	if event is InputEventMouseButton:
		if event.pressed:
			if get_viewport().gui_get_focus_owner() == integer_value:
				var local_event = integer_value.make_input_local(event)
				if not integer_value.get_rect().has_point(local_event.position):
					integer_value.release_focus()

func _on_value_changed(new_value):
	integer_value.text = str(new_value)

func _on_integer_value_text_submitted(new_text):
	change_value_action(_old_value, int(new_text))
	integer_value.release_focus()

func _on_integer_value_focus_entered():
	set_process_input(true)
	_old_value = int(integer_value.text)

func _on_integer_value_focus_exited():
	set_process_input(false)
	change_value_action(_old_value, int(integer_value.text))

func _on_condition_changed(new_condition):
	super._on_condition_changed(new_condition)
	if new_condition:
		integer_value.text = str(new_condition.value)