Ver código fonte

:wrench: Permet d'avoir une arborescence de briques

Autorise ConteneurDeBriques d'avoir des ConteneurDeBriques comme enfant.

Cela permet d'avoir un arbre de briques, afin de pouvoir affecter un
comportement à une partie des briques (mouvement par exemple).
DricomDragon 10 meses atrás
pai
commit
dbbca899de

+ 14 - 9
godot/composants/objets/brique/conteneur_briques.gd

@@ -1,19 +1,24 @@
+class_name ConteneurDeBriques
 extends Node2D
 
 
-signal partie_gagnee
+signal plus_de_briques
 
-@onready var nombre_briques: int = get_children().size()
+@onready var nombre_enfants: int = get_children().size()
 
 
 func _ready() -> void:
 	for node: Node in get_children():
-		assert(node is Brique, "Ce conteneur ne peut contenir que des briques")
-		var brique: Brique = node as Brique
-		brique.eclatee.connect(_quand_brique_eclatee)
+		assert(node is Brique or node is ConteneurDeBriques, "Ne peut contenir que des briques")
+		if node is Brique:
+			var brique: Brique = node as Brique
+			brique.eclatee.connect(_quand_enfant_detruit)
+		elif node is ConteneurDeBriques:
+			var contenant: ConteneurDeBriques = node as ConteneurDeBriques
+			contenant.plus_de_briques.connect(_quand_enfant_detruit)
 
 
-func _quand_brique_eclatee() -> void:
-	nombre_briques -= 1
-	if nombre_briques <= 0:
-		partie_gagnee.emit()
+func _quand_enfant_detruit() -> void:
+	nombre_enfants -= 1
+	if nombre_enfants <= 0:
+		plus_de_briques.emit()

+ 1 - 1
godot/composants/objets/planete/planete.gd

@@ -7,6 +7,6 @@ signal niveau_choisi(PackedScene)
 @export var niveau: PackedScene
 
 
-func _quand_cliquable_recoit_evenement(_vue: Node, evenement: InputEvent, _index_forme: int):
+func _quand_cliquable_recoit_evenement(_vue: Node, evenement: InputEvent, _index_forme: int) -> void:
 	if evenement.is_action_released("ui_clic"):
 		niveau_choisi.emit(niveau)

+ 3 - 3
godot/exec/niveaux/blob_facile.tscn

@@ -96,7 +96,7 @@ offset_bottom = 420.0
 [connection signal="nb_balles_change" from="Lanceur" to="Stock" method="_quand_nombre_balles_change"]
 [connection signal="partie_perdue" from="Lanceur" to="Message" method="show"]
 [connection signal="partie_perdue" from="Lanceur" to="Message/Perdu" method="show"]
-[connection signal="partie_gagnee" from="Briques" to="Lanceur" method="queue_free"]
-[connection signal="partie_gagnee" from="Briques" to="Message" method="show"]
-[connection signal="partie_gagnee" from="Briques" to="Message/Gagne" method="show"]
+[connection signal="plus_de_briques" from="Briques" to="Lanceur" method="queue_free"]
+[connection signal="plus_de_briques" from="Briques" to="Message" method="show"]
+[connection signal="plus_de_briques" from="Briques" to="Message/Gagne" method="show"]
 [connection signal="balle_detruite" from="Arene" to="Lanceur" method="_quand_balle_detruite"]

+ 3 - 3
godot/exec/niveaux/carre_simple.tscn

@@ -168,7 +168,7 @@ offset_bottom = 420.0
 [connection signal="nb_balles_change" from="Lanceur" to="Stock" method="_quand_nombre_balles_change"]
 [connection signal="partie_perdue" from="Lanceur" to="Message" method="show"]
 [connection signal="partie_perdue" from="Lanceur" to="Message/Perdu" method="show"]
-[connection signal="partie_gagnee" from="Briques" to="Lanceur" method="queue_free"]
-[connection signal="partie_gagnee" from="Briques" to="Message" method="show"]
-[connection signal="partie_gagnee" from="Briques" to="Message/Gagne" method="show"]
+[connection signal="plus_de_briques" from="Briques" to="Lanceur" method="queue_free"]
+[connection signal="plus_de_briques" from="Briques" to="Message" method="show"]
+[connection signal="plus_de_briques" from="Briques" to="Message/Gagne" method="show"]
 [connection signal="balle_detruite" from="Arene" to="Lanceur" method="_quand_balle_detruite"]

+ 3 - 3
godot/exec/niveaux/mini_centre.tscn

@@ -47,7 +47,7 @@ offset_bottom = 420.0
 [connection signal="nb_balles_change" from="Lanceur" to="Stock" method="_quand_nombre_balles_change"]
 [connection signal="partie_perdue" from="Lanceur" to="Message" method="show"]
 [connection signal="partie_perdue" from="Lanceur" to="Message/Perdu" method="show"]
-[connection signal="partie_gagnee" from="Briques" to="Lanceur" method="queue_free"]
-[connection signal="partie_gagnee" from="Briques" to="Message" method="show"]
-[connection signal="partie_gagnee" from="Briques" to="Message/Gagne" method="show"]
+[connection signal="plus_de_briques" from="Briques" to="Lanceur" method="queue_free"]
+[connection signal="plus_de_briques" from="Briques" to="Message" method="show"]
+[connection signal="plus_de_briques" from="Briques" to="Message/Gagne" method="show"]
 [connection signal="balle_detruite" from="Arene" to="Lanceur" method="_quand_balle_detruite"]