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