48 lines
1.0 KiB
GDScript
48 lines
1.0 KiB
GDScript
extends StaticBody2D
|
|
|
|
|
|
@export var biscuit_increment: float
|
|
|
|
|
|
@onready var sequence: Array[int] = []
|
|
@onready var is_active: bool = false
|
|
@onready var biscuit_fraction: float = 0.0
|
|
var hud: Panel
|
|
var player: CharacterBody2D
|
|
|
|
|
|
func _process(delta: float):
|
|
$ProgressBar.value = biscuit_fraction * 100
|
|
if biscuit_fraction < 1.0:
|
|
biscuit_fraction += biscuit_increment * delta
|
|
biscuit_fraction = min(biscuit_fraction, 1.0)
|
|
|
|
if not hud: return
|
|
|
|
if hud.is_fully_completed() && is_active:
|
|
sequence = hud.generate_sequence(5)
|
|
hud.set_sequence(sequence)
|
|
biscuit_fraction = 0.0
|
|
hud.hide()
|
|
player.try_add_biscuit()
|
|
|
|
if is_active && biscuit_fraction >= 1.0: hud.show()
|
|
|
|
if sequence.is_empty():
|
|
sequence = hud.generate_sequence(5)
|
|
hud.set_sequence(sequence)
|
|
|
|
|
|
func _on_trigger_body_entered(body: Node2D):
|
|
if body is not CharacterBody2D: return
|
|
is_active = true
|
|
|
|
if not hud: hud = body.get_node("KeySequence")
|
|
if not player: player = body
|
|
|
|
|
|
func _on_trigger_body_exited(body: Node2D):
|
|
if body is not CharacterBody2D: return
|
|
is_active = false
|
|
hud.hide()
|