123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- extends Node2D
- @onready var outline := $Outline
- @onready var qte := $qte
- @onready var label := $qte/Label
- @onready var timer := $Timer
- var initial_time = 0
- var success_callback: Callable
- var fail_callback: Callable
- var keycode = KEY_0
- func set_time(time):
- timer.wait_time = time
- func set_text(text):
- label.text = text
- func set_key(key):
- keycode = key
- func set_success_callback(cbk):
- success_callback = cbk
- func set_fail_callback(cbk):
- fail_callback = cbk
- var failed = false
- func fail():
- if not failed:
- failed = true
- qte.self_modulate = Color(255, 0, 0)
- fail_callback.call()
- await get_tree().create_timer(1).timeout
- queue_free()
- # Called when the node enters the scene tree for the first time.
- func _ready():
- initial_time = timer.wait_time
- # Called every frame. 'delta' is the elapsed time since the previous frame.
- var min_scale = 0.334
- var max_scale = 1.304
- func _process(_delta):
- if timer.time_left <= 0:
- fail()
- else:
- if Input.is_key_pressed(keycode):
- success_callback.call()
- queue_free()
-
- var final_scale = Vector2(min_scale, min_scale)
- var initial_scale = Vector2(max_scale, max_scale)
- var progress = timer.time_left / initial_time
-
- # Set the scale directly based on progress
- outline.scale = initial_scale.lerp(final_scale, 1.0 - progress)
-
- func _on_touch_screen_button_pressed():
- if timer.time_left > 0:
- success_callback.call()
- queue_free()
|