Untitled
unknown
plain_text
2 years ago
2.3 kB
6
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...