Files
ScrapFrontier/game/passage.gd
T
2025-12-12 12:00:29 +03:00

51 lines
1.1 KiB
GDScript

class_name Passage
extends Node2D
signal player_died
signal completed
@export var data : PassageData:
set = _set_data
var _current_progress := 0.0
@onready var enemy_swamp_controller : EnemySwampController = $EnemySwampController
@onready var enemy_timer : Timer = $EnemyTimer
@onready var progress_bar : TextureProgressBar = $ProgressBar
func _physics_process(delta: float) -> void:
_current_progress += delta
_update_progress_indicator()
if _current_progress >= data.length:
completed.emit()
func _set_data(new_data: PassageData) -> void:
data = new_data
if data and progress_bar:
_update_progress_indicator()
func _update_progress_indicator() -> void:
progress_bar.value = _current_progress
progress_bar.max_value = data.length
func _on_enemy_timer_timeout() -> void:
var enemies := get_tree().get_nodes_in_group("enemies")
if enemies.size() < 25:
enemy_swamp_controller.create_enemy()
var factor := maxi(enemies.size(), 1) * 0.5
enemy_timer.start(randf_range(1 * factor, 2 * factor))
func _on_player_ship_destroyed() -> void:
player_died.emit()