class_name DialogicAnimation
extends Node

## Class that can be used to animate portraits. Can be extended to create animations.

signal finished_once
signal finished

## Set at runtime, will be the node to animate.
var node :Node
## Set at runtime, will be the length of the animation.
var time : float
## Set at runtime, will be the position at which to end the animation.
var end_position : Vector2
## Set at runtime. The position the node started at.
var orig_pos : Vector2

## Used to repeate the animation for a number of times.
var repeats : int


func _ready():
	connect('finished_once', finished_one_loop)


## To be overridden. Do the actual animating/tweening in here.
## Use the properties [node], [time], [end_position], [orig_pos].
func animate():
	pass


func finished_one_loop():
	repeats -= 1
	if repeats > 0:
		animate()
	elif repeats == 0:
		emit_signal("finished")


func pause():
	if node:
		node.process_mode = Node.PROCESS_MODE_DISABLED


func resume():
	if node:
		node.process_mode = Node.PROCESS_MODE_INHERIT
