extends Node3D

@onready var playback: AnimationNodeStateMachinePlayback = %AnimationTree.get("parameters/playback")
@export var pouncing := false

func _ready() -> void:
	$Breed.paused = true

func idle():
	playback.travel("Idle")
	
func walk():
	playback.travel("Walk")
	
func pounce():
	pass

func is_busy():
	return pouncing

func root_motion():
	return %AnimationTree.get_root_motion_position()

func caught():
	var manager: PlayerManager = $"../.."
	manager.switch_player($"..".input)
	$"..".queue_free()

var can_press: bool = true
func _process(_delta: float) -> void:
	if not visible:
		return
	var input: PlayerInputData = $"..".input
	if input == null:
		$Breed.paused = true
		return
	$Breed.paused = not breeding
	if input.raw_dig or input.raw_jump:
		if can_press:
			var manager: PlayerManager = $"../.."
			manager.switch_player(input)
		can_press = false
	else:
		can_press = true


var breeding = false
func _on_area_3d_on() -> void:
	breeding = true


func _on_area_3d_off() -> void:
	breeding = false

func _on_breed_timeout() -> void:
	if randi_range(0, 2) == 2 or true:
		var new: Player = load("res://player.tscn").instantiate()
		new.transform = get_parent().transform
		new.transform.origin.y += 1.
		new.initial_model = Player.initial.vole
		get_parent().get_parent().add_child(new)