39 lines
1.0 KiB
GDScript
39 lines
1.0 KiB
GDScript
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
|