Added enemy movement randomization
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
class_name EnemySwampController
|
||||
extends Node
|
||||
|
||||
|
||||
@export var passage : Passage
|
||||
|
||||
|
||||
const SMALL_ENEMY = preload("res://game/entities/ships/enemies/small/small_enemy_ship.tscn")
|
||||
const MEDIUM_ENEMY = preload("res://game/entities/ships/enemies/medium/medium_enemy_ship.tscn")
|
||||
const HEAVY_ENEMY = preload("res://game/entities/ships/enemies/heavy/heavy_enemy_ship.tscn")
|
||||
|
||||
const ENEMY_TYPES := [ SMALL_ENEMY, MEDIUM_ENEMY, HEAVY_ENEMY ]
|
||||
|
||||
|
||||
@onready var enemy_update_timer : Timer = $EnemyUpdateTimer
|
||||
|
||||
|
||||
func create_enemy() -> void:
|
||||
var enemy : AbstractEnemyShip = ENEMY_TYPES.pick_random().instantiate()
|
||||
enemy.position = Vector2(750, randi_range(0, 360))
|
||||
passage.add_child(enemy)
|
||||
|
||||
_update_enemy.call_deferred(enemy)
|
||||
|
||||
|
||||
func _on_enemy_update_timer_timeout() -> void:
|
||||
enemy_update_timer.start(randi_range(3, 9))
|
||||
|
||||
var enemies := get_tree().get_nodes_in_group("enemies")
|
||||
if enemies.is_empty(): return
|
||||
|
||||
var enemy : Node = enemies.pick_random()
|
||||
if not enemy is AbstractEnemyShip: return
|
||||
|
||||
_update_enemy(enemy)
|
||||
|
||||
|
||||
func _update_enemy(enemy: AbstractEnemyShip) -> void:
|
||||
enemy.controller.target_position = Vector2(randi_range(300, 600), randi_range(30, 330))
|
||||
Reference in New Issue
Block a user