# defines the parameters for quests and spawning enemies within an area class_name WorldArea extends PanelContainer enum GoalType { KILL, FIND } @export var area_type := Globals.World.AreaType.WILDS @export var spawnTimerValue = 10.0 var middleX : float var playerPos : Vector2 func _ready() -> void: middleX = get_viewport_rect().size.x / 2 playerPos = Vector2(middleX, get_viewport_rect().size.y * (0.75)) _generate_quest() $SpawnTimer.start(spawnTimerValue) _spawn_enemies(randi_range(1, 5)) # _spawn_enemies(5) func _process(_delta: float) -> void: playerPos = Vector2(middleX, get_viewport_rect().size.y * (0.75)) # instantiate Quest func _generate_quest() -> void: var quest = load("res://scenes/quest.tscn").instantiate() # quest.goalType = GoalType.FIND SignalBus.quest_generated.emit(quest) # spawn appropriate enemies func _create_enemy(): var enemy = load("res://scenes/enemy.tscn").instantiate() enemy.scale = Vector2.ONE * 0.5 enemy.position = Vector2(randf_range(0, get_viewport_rect().size.x), -50.0) enemy.speed *= randf_range(0.67, 1.5) enemy.target = playerPos return enemy func _get_enemies() -> Array: var enemies := get_tree().get_nodes_in_group("enemies") return enemies func _get_num_enemies() -> int: var enemies := get_tree().get_nodes_in_group("enemies") return len(enemies) func _spawn_enemies(numEnemies: int) -> void: #await get_tree().create_timer(time).timeout # var numEnemies = randi_range(1, maxEnemies) for i in range(numEnemies): var enemy = _create_enemy() add_child(enemy) # var randEnemyMoveSpeed := randf_range(0.5, 2.0)*enemyMoveSpeed # create_tween().tween_property(enemy, "position", playerPos, randEnemyMoveSpeed) func _on_spawn_timer_timeout() -> void: _spawn_enemies(randi_range(1, 5))