feat: 1.添加统计面板, 2. 游戏暂停标志 Global.paused
This commit is contained in:
+46
-4
@@ -10,7 +10,7 @@ class_name Spawner
|
||||
|
||||
var wave_index := 1
|
||||
var current_wave_data: WaveData
|
||||
var spawned_enemiese: Array[Enemy] = []
|
||||
var spawned_enemies: Array[Enemy] = []
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@@ -27,7 +27,7 @@ func find_wave_data() -> WaveData:
|
||||
|
||||
func start_wave() -> void:
|
||||
current_wave_data = find_wave_data()
|
||||
if not current_wave_data :
|
||||
if not current_wave_data:
|
||||
printerr("No valid wave.")
|
||||
spawn_timer.stop()
|
||||
wave_timer.stop()
|
||||
@@ -50,16 +50,58 @@ func set_spawn_timer() -> void:
|
||||
if spawn_timer.is_stopped():
|
||||
spawn_timer.start()
|
||||
|
||||
func get_random_spawn_position() -> Vector2:
|
||||
var random_x := randf_range(-spawn_area_size.x, spawn_area_size.x)
|
||||
var random_y := randf_range(-spawn_area_size.y, spawn_area_size.y)
|
||||
return Vector2(random_x, random_y)
|
||||
|
||||
func spawn_enemy() -> void:
|
||||
var enemy_scene := current_wave_data.get_randon_unit_scene() as PackedScene
|
||||
if enemy_scene:
|
||||
var spawn_pos := get_random_spawn_position()
|
||||
var enemy_instance := enemy_scene.instantiate() as Enemy
|
||||
enemy_instance.global_position = Vector2.ZERO
|
||||
enemy_instance.global_position = spawn_pos
|
||||
get_parent().add_child(enemy_instance)
|
||||
spawned_enemiese.append(enemy_instance)
|
||||
spawned_enemies.append(enemy_instance)
|
||||
|
||||
set_spawn_timer()
|
||||
|
||||
func update_enemies_new_wave() -> void:
|
||||
for stat: UnitStats in enemy_collection:
|
||||
stat.health += stat.health_increase_per_wave
|
||||
stat.damage += stat.damage_increase_per_wave
|
||||
|
||||
func clear_enemies() -> void:
|
||||
if spawned_enemies.size()>0:
|
||||
for enemy: Enemy in spawned_enemies:
|
||||
if is_instance_valid(enemy):
|
||||
enemy.destroy_enemy()
|
||||
|
||||
spawned_enemies.clear()
|
||||
|
||||
func get_wave_text() -> String:
|
||||
return "Wave %s" % wave_index
|
||||
|
||||
func get_wave_timer_text() -> String:
|
||||
return str(max(0, int(wave_timer.time_left)))
|
||||
|
||||
|
||||
func _on_spawn_timer_timeout() -> void:
|
||||
if not current_wave_data or wave_timer.is_stopped():
|
||||
spawn_timer.stop()
|
||||
return
|
||||
|
||||
spawn_enemy()
|
||||
|
||||
|
||||
func _on_wave_timer_timeout() -> void:
|
||||
Global.game_paused = true
|
||||
spawn_timer.stop()
|
||||
clear_enemies()
|
||||
update_enemies_new_wave()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user