diff --git a/enemy.gd b/enemy.gd index 088c688..f2a5df3 100644 --- a/enemy.gd +++ b/enemy.gd @@ -43,9 +43,10 @@ func explode(): if exploding: return exploding = true print_debug("Enemy explode!") + EventBus.enemy_hit.emit(5) speed = 0 $AnimationPlayer.play("explode") set_deferred("monitoring", false) - EventBus.enemy_died.emit(5) await $AnimationPlayer.animation_finished queue_free() + EventBus.enemy_died.emit() diff --git a/event_bus.gd b/event_bus.gd index ff7fa67..8327477 100644 --- a/event_bus.gd +++ b/event_bus.gd @@ -4,7 +4,8 @@ extends Node signal shield_changed(max_value: int, old_value: int, new_value: int) signal player_died() -signal enemy_died(value: int) +signal enemy_died() +signal enemy_hit(value: int) signal initialize_shieldbar() signal start_game() diff --git a/main.gd b/main.gd index 486cca8..92826d5 100644 --- a/main.gd +++ b/main.gd @@ -8,8 +8,12 @@ var enemy_count: int = 0: set(value): if value < 0: print_debug("Enemy value set to below zero: ", get_stack()) + if value > 27: + print_debug("Enemy value set to above 27!: ", get_stack()) enemy_count = value +const COLS: int = 9 +const ROWS: int = 3 @onready var start_button = $CanvasLayer/CenterContainer/Start @onready var game_over = $CanvasLayer/CenterContainer/GameOver @@ -19,36 +23,39 @@ func _ready(): start_button.show() EventBus.player_died.connect(_on_player_died) EventBus.enemy_died.connect(_on_enemy_died) + EventBus.enemy_hit.connect(_on_enemy_hit) func spawn_enemies(): - # enemy_count = get_tree().get_nodes_in_group("enemies").size() # print("Remaining enemies: ", enemy_count) # await get_tree().process_frame - get_tree().get_nodes_in_group("enemies").size() - for x in range(9): - for y in range(3): + for x in range(COLS): + for y in range(ROWS): var e = enemy.instantiate() var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16) add_child(e) e.start(pos) + enemy_count = ROWS * COLS + await get_tree().process_frame print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) -func _on_enemy_died(value: int): - Global.score += value +func _on_enemy_died(): enemy_count -= 1 - $CanvasLayer/UI.update_score(Global.score) print_debug(enemy_count) if enemy_count == 0: print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) win_game() +func _on_enemy_hit(value: int): + Global.score += value + $CanvasLayer/UI.update_score(Global.score) + func _on_player_died(): # get_tree().call_group("enemies", "queue_free") - enemy_win() # $Player.set_process(false) # get_tree().call_group("enemies", "set_process", false) + enemy_win() instance.queue_free() game_over.show() await get_tree().create_timer(2).timeout @@ -61,6 +68,7 @@ func new_game(): get_tree().call_group("enemies", "queue_free") get_tree().call_group("enemy_bullets", "queue_free") # print("Number of enemies at new_game: ",enemy_count) + enemy_count = 0 await get_tree().process_frame # Reset score.