Compare commits

..

No commits in common. "5b994b91d14336ba1165205d29c8b5ab4481da22" and "7301dfed0f782fbd0c9fa0622ab0c6ce0fb97984" have entirely different histories.

8 changed files with 84 additions and 111 deletions

View file

@ -3,4 +3,4 @@ extends Node3D
var selected_collider : CollisionObject3D
func _ready() -> void:
$WaveManager.spawn_next_wave()
$Spawner.spawn_next_wave()

View file

@ -1,17 +1,15 @@
[gd_scene load_steps=25 format=3 uid="uid://ky0uewndeuwv"]
[gd_scene load_steps=20 format=3 uid="uid://ky0uewndeuwv"]
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://Levels/world.gd" id="1_fj7yv"]
[ext_resource type="PackedScene" uid="uid://d1f6m15niwgt" path="res://Tiles/tile.tscn" id="3_aqk2v"]
[ext_resource type="Script" uid="uid://caf3yamufmhd4" path="res://Scripts/PlayerManager.gd" id="3_ju8gl"]
[ext_resource type="PackedScene" uid="uid://d17sleiqkdoo2" path="res://Assets/GLB format/selection-a.glb" id="3_tlwt5"]
[ext_resource type="PackedScene" uid="uid://do7gm1gjhu1t5" path="res://Tiles/road.tscn" id="4_036b0"]
[ext_resource type="Script" uid="uid://tpon511km4al" path="res://Scripts/WaveManager.gd" id="5_036b0"]
[ext_resource type="Script" uid="uid://tpon511km4al" path="res://spawner.gd" id="5_036b0"]
[ext_resource type="PackedScene" uid="uid://dpjfo15otkfru" path="res://Tiles/cube.tscn" id="5_wse8f"]
[ext_resource type="Script" uid="uid://chu8s12rtdeqx" path="res://Scripts/Wave.gd" id="6_gbfbk"]
[ext_resource type="Resource" uid="uid://dkbuy7fetnihs" path="res://Waves/wave_1.tres" id="7_ioo17"]
[ext_resource type="PackedScene" uid="uid://djyye2otjju2d" path="res://game_menu.tscn" id="9_44brb"]
[ext_resource type="Script" uid="uid://blxx3vs2wnfet" path="res://Scripts/Troop.gd" id="10_oyb16"]
[ext_resource type="PackedScene" uid="uid://dknt1oiyei5e5" path="res://enemies/enemy-a.tscn" id="11_43wwi"]
[ext_resource type="PackedScene" uid="uid://c54881eookjth" path="res://Assets/Meshes/SM_B26.glb" id="12_44brb"]
[ext_resource type="Script" uid="uid://xkk2pxkrwsq8" path="res://bullet_container.gd" id="12_k3n1d"]
[ext_resource type="PackedScene" uid="uid://dxeb1kk5ieix2" path="res://Assets/Meshes/SM_MiniHouse.glb" id="13_ju8gl"]
@ -26,34 +24,6 @@ _data = {
}
point_count = 2
[sub_resource type="Resource" id="Resource_1mf3x"]
script = ExtResource("10_oyb16")
enemy = ExtResource("11_43wwi")
number_to_spawn = 2
spawn_delay = 0.0
metadata/_custom_type_script = "uid://blxx3vs2wnfet"
[sub_resource type="Resource" id="Resource_3i3vq"]
script = ExtResource("10_oyb16")
enemy = ExtResource("11_43wwi")
number_to_spawn = 1
spawn_delay = 1.0
metadata/_custom_type_script = "uid://blxx3vs2wnfet"
[sub_resource type="Resource" id="Resource_qdqr3"]
script = ExtResource("10_oyb16")
enemy = ExtResource("11_43wwi")
number_to_spawn = 1
spawn_delay = 1.0
metadata/_custom_type_script = "uid://blxx3vs2wnfet"
[sub_resource type="Resource" id="Resource_gtojq"]
script = ExtResource("6_gbfbk")
troops = Array[ExtResource("10_oyb16")]([SubResource("Resource_1mf3x"), SubResource("Resource_3i3vq"), SubResource("Resource_qdqr3")])
wait_time_before_launch_wave = 5
wait_for_enemy_kills = true
metadata/_custom_type_script = "uid://chu8s12rtdeqx"
[sub_resource type="Environment" id="Environment_036b0"]
background_mode = 1
background_color = Color(0.924338, 0.849272, 0.847318, 1)
@ -66,6 +36,22 @@ adjustment_enabled = true
adjustment_contrast = 1.3
adjustment_saturation = 1.2
[sub_resource type="GDScript" id="GDScript_ju8gl"]
script/source = "extends Node3D
class_name TowerList
func _ready() -> void:
child_entered_tree.connect(_on_child_entered_tree)
child_exiting_tree.connect(_on_child_exiting_tree)
func _on_child_entered_tree(child):
EventBus.tower_count_changed.emit(get_children().count())
func _on_child_exiting_tree(child):
EventBus.team_in_action_changed.emit(get_children().count())
"
[node name="World" type="Node3D"]
script = ExtResource("1_fj7yv")
@ -189,17 +175,13 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 9.5, 0
unique_name_in_owner = true
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 10.1496, 0.209118, 0.497613)
[node name="WaveManager" type="Path3D" parent="."]
[node name="Spawner" type="Path3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
curve = SubResource("Curve3D_aqk2v")
script = ExtResource("5_036b0")
waves = Array[ExtResource("6_gbfbk")]([ExtResource("7_ioo17"), SubResource("Resource_gtojq")])
waves = Array[ExtResource("6_gbfbk")]([ExtResource("7_ioo17")])
[node name="WaveTimer" type="Timer" parent="WaveManager"]
one_shot = true
[node name="TroopTimer" type="Timer" parent="WaveManager"]
one_shot = true
[node name="SpawnTimer" type="Timer" parent="Spawner"]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_036b0")
@ -234,6 +216,6 @@ transform = Transform3D(-0.0471892, 0, 1.99944, 0, 2, 0, -1.99944, 0, -0.0471892
transform = Transform3D(1.08365, 0, 1.68098, 0, 2, 0, -1.68098, 0, 1.08365, 1.44235, 0, 4.63481)
[node name="Towers" type="Node3D" parent="."]
script = SubResource("GDScript_ju8gl")
[connection signal="timeout" from="WaveManager/WaveTimer" to="WaveManager" method="_on_wave_timer_timeout"]
[connection signal="timeout" from="WaveManager/TroopTimer" to="WaveManager" method="_on_troop_timer_timeout"]
[connection signal="timeout" from="Spawner/SpawnTimer" to="Spawner" method="_on_spawn_timer_timeout"]

View file

@ -3,4 +3,3 @@ class_name Troop
@export var enemy : PackedScene
@export var number_to_spawn : int = 1
@export var spawn_delay : float = 1

View file

@ -2,5 +2,4 @@ extends Resource
class_name Wave
@export var troops : Array[Troop]
@export var wait_time_before_launch_wave : int = 3
@export var wait_for_enemy_kills : bool = true
@export var wait_time_before_next_wave : int = 3

View file

@ -1,60 +0,0 @@
extends Path3D
class_name WaveManager
@export var waves : Array[Wave]
var current_wave : Wave
var current_troop : Troop
var enemies_to_spawn : int = 0
var wave_on_going : bool = false
var game_has_start : bool = false
func _process(delta: float) -> void:
if GameManager.wave > 0:
spawn_manager()
func spawn_next_wave() -> void:
if waves.is_empty():
EventBus.player_has_won.emit()
return
current_wave = waves.pop_front()
GameManager.wave += 1
$WaveTimer.start(current_wave.wait_time_before_launch_wave)
func spawn_troop() -> void:
for n in current_troop.number_to_spawn:
var tempEnemy = current_troop.enemy.instantiate()
add_child(tempEnemy)
GameManager.enemies_alive += 1
func spawn_manager() -> void:
#Send next troop
if !$WaveTimer.is_stopped() || !$TroopTimer.is_stopped():
return
if !current_wave.troops.is_empty():
current_troop = current_wave.troops.pop_front()
if (current_troop.spawn_delay == 0):
spawn_troop()
else:
$TroopTimer.wait_time = current_troop.spawn_delay
$TroopTimer.start()
wave_on_going = true
if GameManager.enemies_alive == 0 && current_wave.troops.is_empty():
wave_on_going = false
spawn_next_wave()
elif !current_wave.wait_for_enemy_kills:
spawn_next_wave()
func _on_wave_timer_timeout() -> void:
pass
func _on_troop_timer_timeout() -> void:
spawn_troop()

View file

@ -7,27 +7,23 @@
[sub_resource type="Resource" id="Resource_1mf3x"]
script = ExtResource("2_mn2od")
enemy = ExtResource("3_40llc")
number_to_spawn = 2
spawn_delay = 1.0
number_to_spawn = 1
metadata/_custom_type_script = "uid://blxx3vs2wnfet"
[sub_resource type="Resource" id="Resource_3i3vq"]
script = ExtResource("2_mn2od")
enemy = ExtResource("3_40llc")
number_to_spawn = 1
spawn_delay = 3.0
metadata/_custom_type_script = "uid://blxx3vs2wnfet"
[sub_resource type="Resource" id="Resource_qdqr3"]
script = ExtResource("2_mn2od")
enemy = ExtResource("3_40llc")
number_to_spawn = 1
spawn_delay = 1.0
metadata/_custom_type_script = "uid://blxx3vs2wnfet"
[resource]
script = ExtResource("1_bubg8")
troops = Array[ExtResource("2_mn2od")]([SubResource("Resource_1mf3x"), SubResource("Resource_3i3vq"), SubResource("Resource_qdqr3")])
wait_time_before_launch_wave = 5
wait_for_enemy_kills = true
wait_time_before_next_wave = 3
metadata/_custom_type_script = "uid://chu8s12rtdeqx"

57
spawner.gd Normal file
View file

@ -0,0 +1,57 @@
extends Path3D
class_name Spawner
@export var waves : Array[Wave]
var current_wave : Wave
var current_troop : Troop
var enemies_to_spawn : int = 0
var can_spawn : bool = false
var wave_on_going : bool = false
func spawn_next_wave() -> void:
if waves.is_empty():
EventBus.player_has_won.emit()
return
current_wave = waves.pop_front()
$SpawnTimer.start(current_wave.wait_time_before_next_wave)
func _process(delta: float) -> void:
spawn_manager()
func spawn() -> void:
$SpawnTimer.start()
var tempEnemy = current_troop.enemy.instantiate()
add_child(tempEnemy)
enemies_to_spawn -= 1
GameManager.enemies_alive += 1
can_spawn = false
func spawn_manager() -> void:
if !can_spawn:
return
#Send next troop
if !current_wave.troops.is_empty() and enemies_to_spawn == 0:
current_troop = current_wave.troops.pop_front()
enemies_to_spawn = current_troop.number_to_spawn
if enemies_to_spawn > 0:
spawn()
if GameManager.enemies_alive > 0:
wave_on_going = true
else:
wave_on_going = false
spawn_next_wave()
func _on_spawn_timer_timeout() -> void:
can_spawn = true
$SpawnTimer.wait_time = 1.0