space-ace/main/main.gd

51 lines
1.1 KiB
GDScript

extends Node2D
@onready var start_button = $CanvasLayer/CenterContainer/Start
@onready var game_over = $CanvasLayer/CenterContainer/GameOver
var enemy: PackedScene = preload("res://enemy/enemy.tscn")
var score: int = 0
var enemies_count: int = 0
func _ready():
game_over.hide()
start_button.show()
func new_game():
score = 0
$CanvasLayer/UI.update_score(score)
$Player.start()
spawn_enemies()
func spawn_enemies():
for x in range(9):
for y in range(3):
var e = enemy.instantiate()
var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16)
add_child(e)
e.call_deferred("start", pos)
e.connect("died", Callable(self, "_on_enemy_died"))
e.add_to_group("enemies")
enemies_count = 27
func _on_enemy_died(value):
score += value
$CanvasLayer/UI.update_score(score)
enemies_count -= 1
if enemies_count == 0:
call_deferred("spawn_enemies")
func _on_start_pressed():
start_button.hide()
new_game()
func _on_player_died():
get_tree().call_group("enemies", "queue_free")
game_over.show()
await get_tree().create_timer(2).timeout
game_over.hide()
start_button.show()