extends Tween

class_name ArrayTween

var index = 0

var values : Array

# 单个节点动画时间
export var duration: float = 1.0
# 动画步进回调
signal array_value_step(step)
# 所有节点动画播放完成
signal array_completed

func _ready():
	connect("tween_completed",self,"on_tween_completed")
	pass

# 使用节点进行动画
func interpolate_array(values:Array) -> void:
	if values.size() < 2:
		return
	if is_active():
		stop_all()
	self.index = 0
	self.values = values
	play_step()

# 播放其中一节
func play_step():
	var start_value = values[index]
	var end_value = values[index + 1]
	self.interpolate_method(self,"on_step",start_value,end_value,duration)
	self.start()

# 程序内步进回调
func on_step(step):
	emit_signal("array_value_step",step)
	pass

# 动画完成回调
func on_tween_completed(object: Object, key: NodePath):
	if index + 2 < values.size():
		index += 1
		play_step()
	else:
		emit_signal("array_completed")
