extends Node @export_group("Main") @export var room_lockdown : bool = false @export var number_of_enemies : int = 20 @export var spawnable_enemies = preload("res://assets/spider2.tscn") @export_group("Key") @export var key_drop : bool = false @export_enum("Silver", "Gold", "Special") var key_type: int @export var special_key_name : String @export_group("Item Drops") @export var number_of_drops = 5 var enemies = [] var doors = [] var room_checks = [] var enemy_spawners = [] var number_enemies : int var rot_amount : float # Called when the node enters the scene tree for the first time. func _ready(): SignalBus.enemy_killed.connect(enemy_in_room_killed) SignalBus.game_loaded.connect(assign_elements) assign_elements() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): pass func assign_elements(): for i in self.get_children(): if i is Enemy: enemies.append(i) if i.is_in_group("door"): doors.append(i) if i.is_in_group("room_check"): room_checks.append(i) i.room_entered.connect(room_entered) i.room_exited.connect(room_exited) if i is EnemySpawner: enemy_spawners.append(i) if enemy_spawners.size() > 0: spawn_enemies() func enemy_in_room_killed(): var enemy_count = 0 for i in self.get_children(): if i.is_in_group("enemy") and i.health > 0: enemy_count += 1 if enemy_count <= 0: if room_lockdown: room_lockdown = false for i in doors: if !i.door_open: i.open() func room_entered(): if room_lockdown: for i in doors: if i.door_open: i.close() func room_exited(): if room_lockdown: for i in doors: if !i.door_open: i.open() func spawn_enemies(): while number_of_enemies >= 0: number_of_enemies -= 1 var random_spawner = enemy_spawners.pick_random() var spawn_offset = random_spawner.random_box_pos() var set_pos = random_spawner.global_position + spawn_offset var enemy = spawnable_enemies.instantiate() #turn into an array of available enemies later add_child(enemy) enemy.global_position = set_pos await number_enemies == 0 for i in self.get_children(): if i is Enemy: enemies.append(i)