game.gd 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. extends Node2D
  2. @onready var health_bar: HealthBar = $HealthBar
  3. @onready var transition: Transition = $Overlay/Transition
  4. @onready var spawn_timer: Timer = $Timer
  5. @onready var base_hit_sound: AudioStreamPlayer = $BaseHitSound
  6. @onready var main_menu: PackedScene = load("res://screens/main_menu.tscn")
  7. @onready var bot_scene: PackedScene = load("res://assets/scenes/bot.tscn")
  8. @onready var spawn_points: Array[Marker2D] = [
  9. $EnemySpawn_1,
  10. $EnemySpawn_2,
  11. $EnemySpawn_3,
  12. ]
  13. func _ready() -> void:
  14. transition.slide_out()
  15. await transition.game_fully_visible
  16. spawn_bot()
  17. func _process(_delta: float) -> void:
  18. if Input.is_action_pressed("ui_cancel"):
  19. var tree = get_tree()
  20. transition.text = ""
  21. transition.slide_in()
  22. await transition.game_fully_hidden
  23. tree.change_scene_to_packed(main_menu)
  24. func spawn_bot() -> void:
  25. var spawn = spawn_points.pick_random()
  26. var bot = bot_scene.instantiate()
  27. bot.global_position = spawn.global_position
  28. add_child(bot)
  29. func _on_timer_timeout() -> void:
  30. spawn_bot()
  31. func base_hit() -> void:
  32. base_hit_sound.play()
  33. health_bar.health -= 1
  34. if health_bar.health == 0:
  35. spawn_timer.stop()
  36. var foes = get_tree().get_nodes_in_group("foe")
  37. for foe in foes:
  38. foe.queue_free()
  39. func _on_base_area_entered(area: Area2D) -> void:
  40. if area.is_in_group("foe") || area.is_in_group("foe_weapons"):
  41. base_hit()