This repository has been archived on 2023-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
Boups/Characters/Villain.gd

57 lines
1.4 KiB
GDScript
Executable file

extends Node2D
onready var me = $AnimatedSprite
onready var timer
var limit_random
var rng = RandomNumberGenerator.new()
onready var button = $"../Button"
export(Array, String) var animations = ["green", "orange", "red"]
# True if animation should change
var next = false
# Called when the node enters the scene tree for the first time.
func _ready():
rng.randomize()
reset_timer()
me.play(animations[0])
func reset_timer():
timer = 0
limit_random = rng.randi_range(2, 10)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
timer += delta
var max_frame = me.frames.get_frame_count(me.animation) - 1
var current_anim_idx = animations.find(me.animation)
if current_anim_idx >= animations.size() - 1:
# Last animation reached
check_next_animframe(max_frame, animations[0])
else:
check_next_animframe(max_frame, animations[current_anim_idx + 1])
# Jump to next animation at the end of the current one
func check_next_animframe(max_frame, next_animation):
if me.frame == 0 and next:
me.play(next_animation)
next = false
if next_animation == animations[0]:
# Reset random for first animation
reset_timer()
return
if max_frame == me.frame:
# Last frame of animation reached
next = true
return
if max_frame == -1 and timer >= limit_random:
# No frame in animation, use time
next = true
return