From 674a231847a54efdb5f98aeaf2f87ef1a7a91f6d Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 13 Feb 2026 00:20:41 +0000 Subject: [PATCH] Migrated current spawning logic to dedicated wave node. --- scenes/main.gd | 89 +++++++++++++++++----------------- scenes/main.tscn | 11 +++-- scenes/parallax_starfield.tscn | 2 +- scenes/wave.tscn | 6 +++ wave.gd | 52 ++++++++++++++++++++ wave.gd.uid | 1 + 6 files changed, 112 insertions(+), 49 deletions(-) create mode 100644 scenes/wave.tscn create mode 100644 wave.gd create mode 100644 wave.gd.uid diff --git a/scenes/main.gd b/scenes/main.gd index da0bcf7..e70f498 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -24,51 +24,51 @@ func _ready(): game_over.hide() start_button.show() EventBus.player_died.connect(_on_player_died) - EventBus.enemy_died.connect(_on_enemy_died) + #EventBus.enemy_died.connect(_on_enemy_died) EventBus.enemy_hit.connect(_on_enemy_hit) -func spawn_enemies(): - # print("Remaining enemies: ", enemy_count) - # await get_tree().process_frame - enemy_wave += 1 - print("Enemy Wave: ", enemy_wave) - 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(): - enemy_count -= 1 - print_debug(enemy_count) - if enemy_count == 0: - print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) - # win_game() - await get_tree().create_timer(2).timeout - spawn_enemies() - if enemy_count == ROWS * COLS / 2: - print_debug("Enemy count is 50%") - update_enemy_aggression(2,10) - EventBus.goose_talk.emit() - if enemy_count == ROWS * COLS / 4: - print_debug("Enemy count is 25%") - update_enemy_aggression(1,1) - -func update_enemy_aggression(low,high): - var nodes = get_tree().get_nodes_in_group("enemies") - - for node in nodes: - if node is Area2D: - node.enemy_move_aggression = randf_range(low,high) - node.enemy_shoot_aggression = randf_range(low,high) - node.tween_speed = min(low,high) - .75 +#func spawn_enemies(): + ## print("Remaining enemies: ", enemy_count) + ## await get_tree().process_frame + #enemy_wave += 1 + #print("Enemy Wave: ", enemy_wave) + #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(): + ##enemy_count -= 1 + ##print_debug(enemy_count) + ##if enemy_count == 0: + ##print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) + ### win_game() + ##await get_tree().create_timer(2).timeout + ##$Wave.spawn_enemies() + ##if enemy_count == ROWS * COLS / 2: + ##print_debug("Enemy count is 50%") + ##update_enemy_aggression(2,10) + ##EventBus.goose_talk.emit() + ##if enemy_count == ROWS * COLS / 4: + ##print_debug("Enemy count is 25%") + ##update_enemy_aggression(1,1) +# +##func update_enemy_aggression(low,high): + ##var nodes = get_tree().get_nodes_in_group("enemies") +## + ##for node in nodes: + ##if node is Area2D: + ##node.enemy_move_aggression = randf_range(low,high) + ##node.enemy_shoot_aggression = randf_range(low,high) + ##node.tween_speed = min(low,high) - .75 func _on_enemy_hit(value: int): Global.score += value @@ -107,13 +107,13 @@ func new_game(): # instantiate the Player # await get_tree().create_timer(1).timeout - instance = player.instantiate() + instance = player.instantiate() add_child(instance) $Player.start() # Tell the enemies to spawn! #await get_tree().create_timer(.5).timeout - spawn_enemies() + $Wave.spawn_enemies() # Tell the game we're playing. @@ -130,6 +130,7 @@ func _input(EventInput): func _on_start_pressed(): start_button.hide() + $Welcome.play() new_game() func win_game(): diff --git a/scenes/main.tscn b/scenes/main.tscn index 3a1242a..15af6bb 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -10,6 +10,7 @@ [ext_resource type="Texture2D" uid="uid://bubqwoum50gf8" path="res://_graphics/Mini Pixel Pack 3/UI objects/GAME_OVER (72 x 8).png" id="6_7mycd"] [ext_resource type="PackedScene" uid="uid://cd1kwb8klcsb5" path="res://scenes/goose.tscn" id="9_85g3d"] [ext_resource type="AudioStream" uid="uid://c3e8sdfqcikp6" path="res://sounds/welcome.wav" id="10_choun"] +[ext_resource type="PackedScene" uid="uid://drf1k1iulvy6f" path="res://scenes/wave.tscn" id="11_ya4ey"] [sub_resource type="Animation" id="Animation_1bvp3"] length = 0.001 @@ -78,10 +79,10 @@ offset_bottom = 36.0 [node name="Title" type="TextureRect" parent="CanvasLayer" unique_id=561106216] self_modulate = Color(0.015236704, 0.015236706, 0.0152367065, 1) material = SubResource("ShaderMaterial_kek77") -offset_left = 50.0 -offset_top = 50.0 -offset_right = 146.0 -offset_bottom = 117.0 +offset_left = 70.0 +offset_top = 58.0 +offset_right = 166.0 +offset_bottom = 125.0 texture = ExtResource("5_tipki") [node name="CenterContainer" type="CenterContainer" parent="CanvasLayer" unique_id=1787047882] @@ -119,4 +120,6 @@ position = Vector2(118, 162) stream = ExtResource("10_choun") volume_db = -0.5 +[node name="Wave" parent="." unique_id=2117861058 instance=ExtResource("11_ya4ey")] + [connection signal="pressed" from="CanvasLayer/CenterContainer/Start" to="." method="_on_start_pressed"] diff --git a/scenes/parallax_starfield.tscn b/scenes/parallax_starfield.tscn index 476e9d4..5c27de5 100644 --- a/scenes/parallax_starfield.tscn +++ b/scenes/parallax_starfield.tscn @@ -85,7 +85,7 @@ region_rect = Rect2(0, 0, 64, 64) scroll_scale = Vector2(1.5, 1) scroll_offset = Vector2(-89, -27) repeat_size = Vector2(0, 32) -autoscroll = Vector2(0, 2) +autoscroll = Vector2(0, 3) repeat_times = 11 [node name="Sprite2D" type="Sprite2D" parent="Background Nothing" unique_id=2117909699] diff --git a/scenes/wave.tscn b/scenes/wave.tscn new file mode 100644 index 0000000..41da3a7 --- /dev/null +++ b/scenes/wave.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://drf1k1iulvy6f"] + +[ext_resource type="Script" uid="uid://cqnotqarpsavn" path="res://wave.gd" id="1_y5ysc"] + +[node name="Wave" type="Node2D" unique_id=2117861058] +script = ExtResource("1_y5ysc") diff --git a/wave.gd b/wave.gd new file mode 100644 index 0000000..ec53e7f --- /dev/null +++ b/wave.gd @@ -0,0 +1,52 @@ +extends Node2D + +var wave_count: int = 0 +var enemy_count: int = 0 +var enemy = preload("res://scenes/enemy.tscn") + +const COLS: int = 9 +const ROWS: int = 3 + +func _ready(): + wave_count += 1 + EventBus.enemy_died.connect(_on_enemy_died) + + +func spawn_enemies(): + print("Enemy Wave: ", wave_count) + 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(): + enemy_count -= 1 + print_debug(enemy_count) + if enemy_count == 0: + print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) + # win_game() + await get_tree().create_timer(2).timeout + wave_count += 1 + spawn_enemies() + if enemy_count == ROWS * COLS / 2: + print_debug("Enemy count is 50%") + update_enemy_aggression(2,10) + EventBus.goose_talk.emit() + if enemy_count == ROWS * COLS / 4: + print_debug("Enemy count is 25%") + update_enemy_aggression(1,1) + +func update_enemy_aggression(low,high): + var nodes = get_tree().get_nodes_in_group("enemies") + + for node in nodes: + if node is Area2D: + node.enemy_move_aggression = randf_range(low,high) + node.enemy_shoot_aggression = randf_range(low,high) + node.tween_speed = min(low,high) - .75 diff --git a/wave.gd.uid b/wave.gd.uid new file mode 100644 index 0000000..4a41701 --- /dev/null +++ b/wave.gd.uid @@ -0,0 +1 @@ +uid://cqnotqarpsavn