52 lines
1.1 KiB
GDScript
52 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.start(pos)
|
|
e.died.connect(_on_enemy_died)
|
|
|
|
func _on_enemy_died(value):
|
|
score += value
|
|
$CanvasLayer/UI.update_score(score)
|
|
|
|
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()
|
|
|
|
|
|
func _on_child_entered_tree(node):
|
|
if node.is_in_group("enemies"):
|
|
enemies_count += 1
|
|
|
|
func _on_child_exiting_tree(node):
|
|
if node.is_in_group("enemies"):
|
|
enemies_count -= 1
|