Browse Source

Merge branch 'amelioration/perdre-quand-brique-sort'

Permet de mettre fin a la partie quand une brique sort.
DricomDragon 9 months ago
parent
commit
55e5ae4a41

+ 9 - 1
godot/composants/objets/arene/arene.gd

@@ -2,13 +2,21 @@ extends Node2D
 
 
 signal balle_detruite
+signal brique_sortie
 
 
 func _quand_zone_exterieure_detecte_entree(corps: Node2D) -> void:
-	if corps is Balle: # toujours le cas si calque collision bien regle
+	print("Sortie de ", corps.get_name())
+	if corps is Balle:
 		_traiter_balle_sortie(corps)
+	elif corps is Brique:
+		_traiter_brique_sortie(corps)
 
 
 func _traiter_balle_sortie(balle: Balle) -> void:
 	balle.detruire()
 	balle_detruite.emit()
+
+
+func _traiter_brique_sortie(_brique: Brique) -> void:
+	brique_sortie.emit()

+ 11 - 7
godot/composants/objets/arene/arene.tscn

@@ -1,7 +1,8 @@
-[gd_scene load_steps=6 format=3 uid="uid://b28d5a4be36qa"]
+[gd_scene load_steps=7 format=3 uid="uid://b28d5a4be36qa"]
 
 [ext_resource type="PhysicsMaterial" uid="uid://c6bddricwmcxx" path="res://ressources/materiaux/metal.tres" id="1_h5k8j"]
 [ext_resource type="Script" path="res://composants/objets/arene/arene.gd" id="2_4mq1v"]
+[ext_resource type="Script" path="res://composants/objets/arene/hack_detection_statique.gd" id="3_k2opa"]
 
 [sub_resource type="RectangleShape2D" id="RectangleShape2D_cjamf"]
 size = Vector2(820, 200)
@@ -12,27 +13,30 @@ size = Vector2(200, 1200)
 [sub_resource type="RectangleShape2D" id="RectangleShape2D_u5oj2"]
 size = Vector2(420, 420)
 
-[node name="Arene" type="StaticBody2D"]
+[node name="Arene" type="Node2D"]
+script = ExtResource("2_4mq1v")
+
+[node name="Murs" type="StaticBody2D" parent="."]
 collision_layer = 4
 physics_material_override = ExtResource("1_h5k8j")
-script = ExtResource("2_4mq1v")
 
-[node name="Haut" type="CollisionShape2D" parent="."]
+[node name="Haut" type="CollisionShape2D" parent="Murs"]
 position = Vector2(210, -100)
 shape = SubResource("RectangleShape2D_cjamf")
 
-[node name="Droite" type="CollisionShape2D" parent="."]
+[node name="Droite" type="CollisionShape2D" parent="Murs"]
 position = Vector2(520, 400)
 shape = SubResource("RectangleShape2D_d3hv4")
 
-[node name="Gauche" type="CollisionShape2D" parent="."]
+[node name="Gauche" type="CollisionShape2D" parent="Murs"]
 position = Vector2(-100, 400)
 shape = SubResource("RectangleShape2D_d3hv4")
 
 [node name="ZoneExterieure" type="Area2D" parent="."]
 position = Vector2(210, 642)
 collision_layer = 4
-monitorable = false
+collision_mask = 17
+script = ExtResource("3_k2opa")
 
 [node name="FormeZone" type="CollisionShape2D" parent="ZoneExterieure"]
 shape = SubResource("RectangleShape2D_u5oj2")

+ 15 - 0
godot/composants/objets/arene/hack_detection_statique.gd

@@ -0,0 +1,15 @@
+extends Area2D
+## Rend possible la detection de corps statiques en mouvement
+## Permet de contourner une limitation Godot 4.2
+
+
+func _process(_delta: float) -> void:
+	_force_detection_de_corps_statiques()
+
+
+## Hack Godot 4.2 pour detecter les corps statiques entrant dans la zone
+## Quand la zone bouge, elle detecte les corps statiques : voir Javelot
+## Mais ce n'est pas le cas lorsque la zone ne bouge pas et qu'un corps statique
+## bouge
+func _force_detection_de_corps_statiques() -> void:
+	set_position(get_position())

+ 5 - 2
godot/composants/objets/brique/brique.tscn

@@ -4,11 +4,12 @@
 [ext_resource type="Script" path="res://composants/objets/brique/brique.gd" id="2_gkrr0"]
 [ext_resource type="Texture2D" uid="uid://r7iyjvdve5a1" path="res://composants/objets/brique/images/01.png" id="3_72vd6"]
 
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_ong6t"]
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_tnj5s"]
 size = Vector2(30, 16)
 
 [node name="Brique" type="StaticBody2D"]
 collision_layer = 16
+collision_mask = 0
 physics_material_override = ExtResource("1_exny1")
 script = ExtResource("2_gkrr0")
 
@@ -17,5 +18,7 @@ texture = ExtResource("3_72vd6")
 centered = false
 
 [node name="Forme" type="CollisionShape2D" parent="."]
+visible = false
 position = Vector2(15, 8)
-shape = SubResource("RectangleShape2D_ong6t")
+shape = SubResource("RectangleShape2D_tnj5s")
+debug_color = Color(1, 0.6, 0.701961, 0.419608)

+ 3 - 0
godot/exec/niveaux/avalanche.tscn

@@ -153,3 +153,6 @@ bus = &"Musique"
 [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"]
+[connection signal="brique_sortie" from="Arene" to="Lanceur" method="queue_free"]
+[connection signal="brique_sortie" from="Arene" to="Message" method="show"]
+[connection signal="brique_sortie" from="Arene" to="Message/Perdu" method="show"]

+ 3 - 0
godot/exec/niveaux/falling_dart.tscn

@@ -230,3 +230,6 @@ bus = &"Musique"
 [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"]
+[connection signal="brique_sortie" from="Arene" to="Lanceur" method="queue_free"]
+[connection signal="brique_sortie" from="Arene" to="Message" method="show"]
+[connection signal="brique_sortie" from="Arene" to="Message/Perdu" method="show"]