65 lines
1.8 KiB
GDScript
65 lines
1.8 KiB
GDScript
extends Control
|
|
|
|
|
|
@export var debug = false
|
|
@export var spawnTimerValue = 5.0
|
|
|
|
var deltaCount := 0
|
|
var enemyMoveSpeed := 5.0
|
|
var questsComplete := false
|
|
|
|
|
|
func _ready() -> void:
|
|
if not debug:
|
|
$MarginContainer/Menus/MenuButtons/DebugMenu.hide()
|
|
$SpawnArea/SpawnTimer.start(spawnTimerValue)
|
|
|
|
func _create_enemy():
|
|
var enemy = load("res://scenes/npc.tscn").instantiate()
|
|
enemy.scale = Vector2.ONE*0.5
|
|
enemy.position = Vector2(randi_range(0, get_viewport_rect().size.x), -50)
|
|
#enemy.get_node("%NPCNameLabel").text = "Test"
|
|
|
|
return enemy
|
|
|
|
|
|
func _spawn_enemies() -> void:
|
|
#await get_tree().create_timer(time).timeout
|
|
var middleX := get_viewport_rect().size.x/2
|
|
var targetPosition = Vector2(middleX, get_viewport_rect().size.y*(0.75))
|
|
var numEnemies = randi_range(1, 5)
|
|
for i in range(numEnemies):
|
|
var enemy = _create_enemy()
|
|
%SpawnArea.add_child(enemy)
|
|
var randEnemyMoveSpeed := randf_range(0.5, 2.0)*enemyMoveSpeed
|
|
create_tween().tween_property(enemy, "position", targetPosition, randEnemyMoveSpeed)
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
deltaCount += 1
|
|
var enemies := %SpawnArea.get_children()
|
|
var numEnemies := %SpawnArea.get_child_count()
|
|
if numEnemies != 0 and (deltaCount % 60) == 0:
|
|
# change movement test, not sure it's working right...
|
|
#create_tween().tween_property(enemies[randi_range(0, numEnemies-1)], "position", Vector2(100, 100), 1.0)
|
|
pass
|
|
if questsComplete:
|
|
%SpawnArea/SpawnTimer.stop()
|
|
|
|
|
|
func _on_button_test_pressed() -> void:
|
|
# remove all existing enemies from scene and array
|
|
#for enemy in enemies:
|
|
#remove_child(enemy)
|
|
#enemies = []
|
|
|
|
questsComplete = true
|
|
|
|
|
|
func _on_button_exit_pressed() -> void:
|
|
get_tree().quit()
|
|
|
|
|
|
func _on_spawn_timer_timeout() -> void:
|
|
_spawn_enemies()
|