class_name SceneManager extends Node2D const bullet_scene = preload("res://scenes/bullet.tscn") @onready var game: Node2D = $".." @onready var triggers: Node2D = $"../triggers" var MAX_BULLET := 50 var available_bullets = [] func _ready() -> void: for i in range(MAX_BULLET): var new_bullet = bullet_scene.instantiate() new_bullet.bulletHitSignal.connect(game.onBulletHitSignal) available_bullets.push_front(new_bullet) if triggers: for trig in triggers.get_children(): if trig is Trigger: trig.areaTriggerSignal.connect(game._on_trigger) func make_bullet(start_position: Transform2D, speed: int): var new_bullet = bullet_factory(start_position, speed) if new_bullet: owner.add_child(new_bullet) func reload_bullet(bullet: Bullet): available_bullets.push(bullet) func bullet_factory(start_position: Transform2D, speed: int) -> Bullet: var shot_bullet = available_bullets.pop_back() shot_bullet.global_transform = start_position shot_bullet.setSpeed(speed) available_bullets.push_front(shot_bullet) return shot_bullet