42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GDScript3
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GDScript3
		
	
	
	
	
	
| 
								 | 
							
								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
							 |