32 lines
879 B
GDScript3
32 lines
879 B
GDScript3
|
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
|