57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
| extends Node
 | |
| @onready var game: Node2D = $".."
 | |
| @onready var crates: Node2D = $"../crates"
 | |
| 
 | |
| var bullet = preload("res://scenes/bullet.tscn")
 | |
| var bulletArray:Array = []
 | |
| var bulletsMadeTotal :=0
 | |
| 
 | |
| var totalCrates := 0
 | |
| # Called when the node enters the scene tree for the first time.
 | |
| func _ready() -> void:
 | |
| 	game.destroyBox.connect(boxDestroy)
 | |
| 	for obj in crates.get_children():
 | |
| 		if obj.is_in_group("destructable"):
 | |
| 			#increase the box counter
 | |
| 			totalCrates +=1
 | |
| 			
 | |
| 	
 | |
| 		
 | |
| 	
 | |
| 
 | |
| 
 | |
| # Called every frame. 'delta' is the elapsed time since the previous frame.
 | |
| func _process(delta: float) -> void:
 | |
| 	pass
 | |
| 
 | |
| func bulletFactory():
 | |
| 	print("Factory will make a bullet")
 | |
| 	var myBullet
 | |
| 	if bulletArray.size() < 4:
 | |
| 		myBullet = bullet.instantiate()
 | |
| 		myBullet.connect("hit", onBulletHit)
 | |
| 		owner.add_child(myBullet)
 | |
| 	else:
 | |
| 		myBullet = bulletArray.pop_back()
 | |
| 	
 | |
| 	bulletArray.push_front(myBullet)
 | |
| 	
 | |
| 	return myBullet
 | |
| 	
 | |
| func makeBullet(position, speed):
 | |
| 	var myBullet = bulletFactory()
 | |
| 	myBullet.transform = position
 | |
| 	myBullet.setSpeed(speed)
 | |
| 	return myBullet
 | |
| 	
 | |
| func onBulletHit(bullet, body):
 | |
| 	bullet.position = Vector2(-100,-100)
 | |
| 	bullet.setSpeed(0)
 | |
| 	
 | |
| 	print("Scene manager knows bullet hit")
 | |
| 	game.bulletHit(body)
 | |
| 	
 | |
| func boxDestroy(body):
 | |
| 	body.queue_free()
 | |
| 	
 |