extends LimboState

func _setup() -> void:
	self.add_event_handler(&"completed_climb",_handler_completed_climb)

func _enter() -> void:
	agent.locomotion_comp.suspend_movement()
	agent.locomotion_comp.stop_dash(true)
	agent.locomotion_comp.start_climb(true)
	
	get_root().blackboard.set_var(&"lock_direction_changed",true)

func _exit() -> void:
	agent.locomotion_comp.enable_movement()
	agent.locomotion_comp.suspend_climb()
	
	get_root().blackboard.set_var(&"lock_direction_changed",false)

func _update(delta: float) -> void:	
	var climb_dir = Input.get_axis("move_up","move_down") as float
	agent.locomotion_comp.add_climb_input(climb_dir)
	
	var _enter_climb_hop = not agent.wall_detector.up_ray_on_wall and not agent.wall_detector.mid_ray_on_wall and agent.wall_detector.down_ray_on_wall and climb_dir< 0
	if _enter_climb_hop:
		agent.locomotion_comp.climb_hop()
		self.dispatch(self.EVENT_FINISHED)

func _handler_completed_climb() -> bool:
	self.dispatch(self.EVENT_FINISHED)
	return true
