wave_manager.gd 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. extends Node2D
  2. class_name WaveManager
  3. var timer: Timer = Timer.new()
  4. var current_wave: int = -1
  5. var done = false
  6. @onready var log = $"../../../UILayer/UI/Log/PC/MC/Label"
  7. @onready var time_label = $"../../../UILayer/UI/NextWave/HB/Label"
  8. var power_level: float = 1.0
  9. func _ready():
  10. add_child(timer)
  11. timer.set_one_shot(true)
  12. timer.connect("timeout", next_wave)
  13. log.set_text("")
  14. next_wave()
  15. $"../../../UILayer/UI/NextWave/HB/Button".connect("pressed", next_wave)
  16. func _process(delta: float):
  17. time_label.set_text("in " + str(round(timer.get_time_left())) + "s")
  18. func _input(input: InputEvent):
  19. if input.is_action_pressed("wave_cheat"):
  20. current_wave += 1
  21. print("Skipped wave ", current_wave + 1)
  22. func next_wave():
  23. current_wave += 1
  24. if current_wave < get_children().size() - 1:
  25. var wave = get_child(current_wave)
  26. power_level = wave.power_level
  27. wave.activate()
  28. timer.set_wait_time(wave.duration)
  29. timer.start()
  30. if wave.title:
  31. log.append_text("[color=#ffcccc]Wave" + str(current_wave + 1) + ":[/color] " + wave.title + "\n")
  32. else:
  33. log.append_text("[color=#ffcccc]Wave" + str(current_wave + 1) + "[/color] " + "\n")
  34. log.append_text(wave.get_log_data())
  35. else:
  36. done = true
  37. log.append_text("[color=#ccffcc]No waves left[/color]\n")
  38. func is_done():
  39. return done