42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
class_name SceneManager extends Node2D
 | 
						|
 | 
						|
var bullet = preload("res://scenes/bullet.tscn")
 | 
						|
var grenade = preload("res://scenes/grenade.tscn")
 | 
						|
 | 
						|
@onready var game = $".."
 | 
						|
var bulletArray = []
 | 
						|
var totalAllowedBullets = 7
 | 
						|
 | 
						|
# Called when the node enters the scene tree for the first time.
 | 
						|
func _ready():
 | 
						|
	pass # Replace with function body.
 | 
						|
 | 
						|
 | 
						|
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
						|
func _process(delta):
 | 
						|
	pass
 | 
						|
func bulletFactory()->Bullet:
 | 
						|
	var myBullet:Bullet
 | 
						|
	if bulletArray.size() < totalAllowedBullets:
 | 
						|
		#make a new bullet
 | 
						|
		myBullet = bullet.instantiate()
 | 
						|
		game.add_child(myBullet)
 | 
						|
	else:
 | 
						|
		myBullet = bulletArray.pop_back()
 | 
						|
		
 | 
						|
	bulletArray.push_front(myBullet)
 | 
						|
	return myBullet
 | 
						|
	
 | 
						|
func makeBullet(_bulletPosition, _bulletSpeed)->void:
 | 
						|
	print("make a bullet, put it in the world")
 | 
						|
	var myBullet = bulletFactory()
 | 
						|
	myBullet.transform = _bulletPosition
 | 
						|
	myBullet.setSpeed(_bulletSpeed)
 | 
						|
 | 
						|
func makeGrenade(_grenadePosition, _grenadeDirection)->void:
 | 
						|
	print("SM make a grenade")
 | 
						|
	var myGrenade:Grenade = grenade.instantiate()
 | 
						|
	game.add_child(myGrenade)
 | 
						|
	myGrenade.apply_central_impulse(Vector2(_grenadeDirection, -1)*200)
 | 
						|
	myGrenade.transform = _grenadePosition
 |