class_name SceneManager extends Node2D const bullet_scene = preload("res://scenes/bullet.tscn") @onready var game: Node2D = $".." 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) 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