class_name SceneManager extends Node2D var bullet = preload("res://scenes/bullet.tscn") var grenade = preload("res://scenes/grenade.tscn") var bullet_array = [] var total_allowed_bullets : int = 7 @onready var game: Node2D = $".." func make_bullet(_bullet_position, _bullet_speed) -> void: print("make a bullet; put it in the world") var my_bullet = bullet_factory() game.add_child(my_bullet) my_bullet.transform = _bullet_position my_bullet.set_speed(_bullet_speed) func make_grenade(_grenade_position, _grenade_direction) -> void: print("SM make a grenade") var my_grenade : Grenade = grenade.instantiate() game.add_child(my_grenade) my_grenade.transform = _grenade_position my_grenade.apply_central_impulse(Vector2(_grenade_direction, -1) * 200) func bullet_factory() -> Bullet: var my_bullet : Bullet if bullet_array.size() < total_allowed_bullets: # make a new bullet my_bullet = bullet.instantiate() game.add_child(my_bullet) else: my_bullet = bullet_array.pop_back() bullet_array.push_front(my_bullet) return my_bullet