Added enemy movement randomization

This commit is contained in:
2025-11-25 23:56:51 +03:00
parent 0d2eab4e0a
commit af8c90be1e
5 changed files with 72 additions and 13 deletions
@@ -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))
@@ -0,0 +1 @@
uid://drxv4egqcamtw
@@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cpn5x0ijgl7ei"]
[ext_resource type="Script" uid="uid://drxv4egqcamtw" path="res://game/controllers/enemy_swamp_controller.gd" id="1_ol8cy"]
[node name="EnemySwampController" type="Node"]
script = ExtResource("1_ol8cy")
[node name="EnemyUpdateTimer" type="Timer" parent="."]
one_shot = true
autostart = true
[connection signal="timeout" from="EnemyUpdateTimer" to="." method="_on_enemy_update_timer_timeout"]