Untitled
unknown
plain_text
3 years ago
2.3 kB
12
Indexable
extends Node2D
class_name WaveSystem
var cash_gained = 0
var xp_gained = 0
signal wave_changed
export(Array, int) var waves
export(Array, float) var spawn_rate
export(Array, PackedScene) var enemies
export(Array, NodePath) var spawn_positions_paths
var spawn_positions = []
var enemies_spawned = 0
var current_enemies = 0
var wave_enemies = -1
export var current_wave = 0
var wave_spawn_rate = -1
var current_wave_spawn_rate = 0
func _ready():
Global.cash_gained = 0
Global.xp_gained = 0
for i in spawn_positions_paths.size():
spawn_positions.append(get_node(spawn_positions_paths[i]).position)
start_next_wave()
func _process(_delta):
# print(cash_gained)
if current_wave == waves.size() && current_enemies == 0:
waves_completed()
return
# print(waves)
# print("Enemies spawned: : ",enemies_spawned)
# print ("Current wave: ",current_wave)
# print("Current enemies in current wave: ",waves[wave_enemies])
# print("enemies current wave: ", enemies_current_wave)
# print("Enemeis to spawn: ",enemies_spawned)
# print("MAX WAVES: ",waves.size())
func start_next_wave():
emit_signal("wave_changed")
enemies_spawned = 0
$SpawnRate.start()
if current_wave < waves.size():
current_wave += 1
wave_enemies += 1
wave_spawn_rate += 1
current_wave_spawn_rate = spawn_rate[wave_spawn_rate]
$SpawnRate.wait_time = current_wave_spawn_rate
current_enemies = waves[wave_enemies]
func spawn_enemy():
enemies_spawned += 1
var select_random_enemy = rand_range(0, enemies.size())
var enemy = enemies[select_random_enemy].instance()
enemy.position = spawn_positions[randi() % spawn_positions.size()]
add_child(enemy)
func waves_completed():
Global.cash_gained = cash_gained
Global.cash += cash_gained
Global.cash + Global.cash_gained
Global.update_data()
Global.save_game()
get_tree().change_scene("res://Scenes/Menu/MapCompleted.tscn")
# get_tree().get_root().get_node("/root/Game/WaveSystem").call_deferred("_enemy_died")
func _enemy_died():
current_enemies -= 1
func _on_SpawnRate_timeout():
if enemies_spawned < waves[wave_enemies]:
spawn_enemy()
elif current_enemies == 0:
start_next_wave()
elif current_enemies != 0:
return
Editor is loading...