diff --git a/enemy.gd b/enemy.gd index 088c688..d2966b5 100644 --- a/enemy.gd +++ b/enemy.gd @@ -8,6 +8,8 @@ var exploding = false @onready var screensize = get_viewport_rect().size +func _ready() -> void: + EventBus.enemy_win.connect(_on_enemy_win) func start(pos): speed = 0 @@ -22,6 +24,8 @@ func start(pos): $ShootTimer.wait_time = randf_range(4, 20) $ShootTimer.start() +func _on_enemy_win() -> void: + print("Enemy win!") func _on_timer_timeout() -> void: speed = randf_range(75, 100) diff --git a/event_bus.gd b/event_bus.gd index ff7fa67..dac12af 100644 --- a/event_bus.gd +++ b/event_bus.gd @@ -5,6 +5,7 @@ extends Node signal shield_changed(max_value: int, old_value: int, new_value: int) signal player_died() signal enemy_died(value: int) +signal enemy_win() signal initialize_shieldbar() signal start_game() diff --git a/main.gd b/main.gd index 486cca8..13f955d 100644 --- a/main.gd +++ b/main.gd @@ -4,12 +4,7 @@ var enemy = preload("res://enemy.tscn") var player = preload("res://player.tscn") var instance = null var playing = false -var enemy_count: int = 0: - set(value): - if value < 0: - print_debug("Enemy value set to below zero: ", get_stack()) - enemy_count = value - +var enemy_count: int = 0 @onready var start_button = $CanvasLayer/CenterContainer/Start @onready var game_over = $CanvasLayer/CenterContainer/GameOver @@ -22,17 +17,15 @@ func _ready(): 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() + get_tree().call_group("enemies", "queue_free") 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) - print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) + enemy_count = get_tree().get_nodes_in_group("enemies").size() + print("Remaining enemies: ", enemy_count) func _on_enemy_died(value: int): @@ -41,12 +34,12 @@ func _on_enemy_died(value: int): $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() + print("All enemies defeated!") + win_game() func _on_player_died(): # get_tree().call_group("enemies", "queue_free") - enemy_win() + EventBus.enemy_win.emit() # $Player.set_process(false) # get_tree().call_group("enemies", "set_process", false) instance.queue_free() @@ -58,18 +51,16 @@ func _on_player_died(): func new_game(): # Ensure enemies are cleared. + enemy_count = 0 get_tree().call_group("enemies", "queue_free") get_tree().call_group("enemy_bullets", "queue_free") - # print("Number of enemies at new_game: ",enemy_count) - await get_tree().process_frame + print("Number of enemies at new_game: ",enemy_count) # Reset score. Global.score = 0 $CanvasLayer/UI.update_score(Global.score) - # instantiate the Player - # await get_tree().create_timer(1).timeout instance = player.instantiate() add_child(instance) $Player.start() @@ -78,7 +69,6 @@ func new_game(): EventBus.initialize_shieldbar.emit() # Tell the enemies to spawn! - #await get_tree().create_timer(.5).timeout spawn_enemies() # Tell the game we're playing. @@ -103,6 +93,3 @@ func win_game(): await get_tree().create_timer(2).timeout game_over.hide() start_button.show() - -func enemy_win() -> void: - print("Enemy win!") diff --git a/player.gd b/player.gd index f7c688f..11696ed 100644 --- a/player.gd +++ b/player.gd @@ -30,17 +30,15 @@ func start(): print(shield) shader_active = false $Ship.frame = 1 - $Ship/Boosters.hide() $Ship.show() position = Vector2(screensize.x / 2, screensize.y) var tween = create_tween() - tween.tween_property(self, "position:y", 48 * -1, .75).as_relative() + tween.tween_property(self, "position:y", 32 * -1, .25).as_relative() $GunCooldown.wait_time = cooldown set_shield(max_shield) print(shield) await get_tree().create_timer(2).timeout set_process(true) - $Ship/Boosters.show() can_shoot = true # EventBus.shield_changed.emit(max_shield, old_value, shield) @@ -79,14 +77,13 @@ func set_shield(value: int): print("Shield set to:", shield) if shield <= 0: print("Shader deactivated!") + EventBus.player_died.emit() set_process(false) $Ship.hide() - shader_active = false $Explosion.show() $Explosion/AnimationPlayer.play("explosion-one-shot") await $Explosion/AnimationPlayer.animation_finished - EventBus.player_died.emit() - + shader_active = false func _on_gun_cooldown_timeout() -> void: can_shoot = true