the-third-place/scenes/sink.gd

76 lines
2 KiB
GDScript

extends Area2D
var enemy_type: String = "mirror"
var tween_speed: float = 1.4
var start_pos = Vector2.ZERO
var exploding = false
var health: int = 3
var pause: bool = false
@onready var screensize = get_viewport_rect().size
@onready var sink_player = $AnimationPlayer
@onready var impact_sound = $ImpactSound
func _ready() -> void:
sink_player.seek(randf_range(5, sink_player.current_animation_length))
EventBus.flash_screen.emit(0.15)
func start(pos):
position = Vector2(pos.x, -pos.y)
start_pos = pos
var tween = create_tween().set_trans(Tween.TRANS_BACK)
tween.tween_property(self, "position:y", start_pos.y, tween_speed)
#func _process(delta):
#if pause == true: return
func hit_detection():
if exploding: return
if health != 0:
health -= 1
EventBus.enemy_hit.emit(5)
var current_frame = get_node("Sprite").frame
impact_sound.play()
$Sprite.frame = current_frame + 1
#$AnimationPlayer.play("explode")
#set_deferred("monitoring", false)
#await $AnimationPlayer.animation_finished
var tween = create_tween().set_parallel(false)
tween.tween_property($Sprite, "position:y", -2, 0.1)
tween.tween_property($Sprite, "position:y", 0, 0.05)
await tween.finished
sink_player.pause()
await get_tree().create_timer(0.25).timeout
sink_player.play()
if health == 0:
exploding = true
EventBus.flash_screen.emit(0.25)
impact_sound.play()
#await impact_sound.finished
#find all nodes in group "shards" and then queue_free.
var nodes = get_tree().get_nodes_in_group("shards")
for node in nodes:
node.queue_free()
EventBus.enemy_died.emit()
queue_free()
func explode():
if exploding: return
#exploding = true
EventBus.enemy_hit.emit(5)
hit_detection()
#$ImpactCRT.play()
#$AnimationPlayer.play("explode")
#set_deferred("monitoring", false)
#await $AnimationPlayer.animation_finished
#queue_free()
#EventBus.enemy_died.emit()