69 lines
2.5 KiB
GDScript
69 lines
2.5 KiB
GDScript
extends Node2D
|
|
@onready var obstaclesSpawnTimer = $obstaclesSpawnTimer
|
|
|
|
@onready var shotgunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/shotgunEnemy/shotgunEnemy.tscn")
|
|
@onready var minigunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/minigunEnemy/minigunEnemy.tscn")
|
|
@onready var railgunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/railgunEnemy/railgunEnemy.tscn")
|
|
@onready var meteor: PackedScene = preload("res://scenes/obstacle/meteor/meteor.tscn")
|
|
@onready var radiation: PackedScene = preload("res://scenes/obstacle/radiation/radiation.tscn")
|
|
|
|
@onready var endScreen: PackedScene = preload("res://scenes/UI/loseScreen/endScreen.tscn")
|
|
|
|
var minigunRatio = 5
|
|
var railgunRatio = 10
|
|
var endedRound = false
|
|
|
|
@onready var player = $Player
|
|
|
|
func _ready() -> void:
|
|
obstaclesSpawnTimer.autostart = true
|
|
obstaclesSpawnTimer.start()
|
|
Globals.setPlayer(player)
|
|
Globals.waveComplete.connect(nextWave)
|
|
player.destroyed.connect(endRound)
|
|
nextWave()
|
|
|
|
|
|
func spawnObstacle(_obstacle: PackedScene, _position: Vector2):
|
|
var newObstacle = _obstacle.instantiate()
|
|
newObstacle.global_position = _position
|
|
if get_tree().get_first_node_in_group("obstaclePool") != null:
|
|
get_tree().get_first_node_in_group("obstaclePool").add_child(newObstacle)
|
|
|
|
func spawnEnemy(_enemy: PackedScene, _position: Vector2):
|
|
Globals.enemyCount += 1
|
|
var newEnemy = _enemy.instantiate()
|
|
newEnemy.global_position = _position
|
|
if get_tree().get_first_node_in_group("enemyPool") != null:
|
|
get_tree().get_first_node_in_group("enemyPool").add_child(newEnemy)
|
|
|
|
#newEnemy.destroyed.connect(startEnemySpawnTimer)
|
|
|
|
func _on_obstacles_spawn_timer_timeout() -> void:
|
|
var rng = RandomNumberGenerator.new()
|
|
var number = rng.randi_range(0, 10)
|
|
if number == 10:
|
|
if Globals.getPlayer() != null:
|
|
spawnObstacle(radiation, Globals.getPlayer().getRandomSpawnPointPosition())
|
|
else:
|
|
if Globals.getPlayer() != null:
|
|
spawnObstacle(meteor, Globals.getPlayer().getRandomSpawnPointPosition())
|
|
|
|
|
|
func nextWave():
|
|
Globals.enemyCount = 0
|
|
Globals.currentWave += 1
|
|
if Globals.getPlayer() != null:
|
|
for i in range(1, Globals.currentWave+1):
|
|
if i % railgunRatio == 0:
|
|
spawnEnemy(railgunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
|
elif i % minigunRatio == 0:
|
|
spawnEnemy(minigunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
|
else:
|
|
spawnEnemy(shotgunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
|
|
|
func endRound():
|
|
if not endedRound:
|
|
endedRound = true
|
|
get_tree().get_root().add_child(endScreen.instantiate())
|
|
self.queue_free()
|