Browse Source

:beettle: Corrige blocage lors de l'activation de la detection

Pour la balle electrique, le 'set_monitoring' etait appele par signal.

Regle l'erreur :
Function blocked during in/out signal. Use set_deferred("monitoring", true/false).
DricomDragon 8 months ago
parent
commit
e343c317c1

+ 5 - 3
godot/composants/objets/balle/balle_elec/balle_electrique.tscn

@@ -1,8 +1,9 @@
-[gd_scene load_steps=6 format=3 uid="uid://crpfyx6e5kn45"]
+[gd_scene load_steps=7 format=3 uid="uid://crpfyx6e5kn45"]
 
 [ext_resource type="Script" path="res://composants/objets/balle/balle_elec/balle_electrique.gd" id="1_fuild"]
 [ext_resource type="Texture2D" uid="uid://blttr4e575gkk" path="res://composants/objets/balle/balle_elec/09.png" id="2_rvm4r"]
 [ext_resource type="Texture2D" uid="uid://86sugnk085c1" path="res://composants/objets/balle/balle_elec/10.png" id="3_r4arp"]
+[ext_resource type="Script" path="res://composants/objets/balle/balle_elec/champ_detection.gd" id="4_jf5yp"]
 
 [sub_resource type="CircleShape2D" id="CircleShape2D_lab73"]
 radius = 5.42
@@ -32,6 +33,7 @@ shape = SubResource("CircleShape2D_lab73")
 
 [node name="ChampElectrique" type="Area2D" parent="."]
 collision_mask = 16
+script = ExtResource("4_jf5yp")
 
 [node name="PorteeChamp" type="CollisionShape2D" parent="ChampElectrique"]
 shape = SubResource("CircleShape2D_cg8wg")
@@ -39,8 +41,8 @@ debug_color = Color(1, 0.6, 0.701961, 0.419608)
 
 [connection signal="charge" from="." to="ImageSurcharge" method="show"]
 [connection signal="charge" from="." to="ImageStatique" method="hide"]
-[connection signal="charge" from="." to="ChampElectrique" method="set_monitoring" binds= [true]]
+[connection signal="charge" from="." to="ChampElectrique" method="activer_detection"]
 [connection signal="decharge" from="." to="ImageSurcharge" method="hide"]
 [connection signal="decharge" from="." to="ImageStatique" method="show"]
-[connection signal="decharge" from="." to="ChampElectrique" method="set_monitoring" binds= [false]]
+[connection signal="decharge" from="." to="ChampElectrique" method="desactiver_detection"]
 [connection signal="body_entered" from="ChampElectrique" to="." method="_quand_champ_electrique_detecte_coprs"]

+ 17 - 0
godot/composants/objets/balle/balle_elec/champ_detection.gd

@@ -0,0 +1,17 @@
+class_name ChampDetection
+extends Area2D
+## Zone d'influence permettant de detecter les briques
+
+
+func activer_detection():
+	_regler_detection_sans_blocage(true)
+
+
+func desactiver_detection() -> void:
+	_regler_detection_sans_blocage(false)
+
+
+## Evite l'erreur: Function blocked during in/out signal. Use set_deferred("monitoring", true/false).
+func _regler_detection_sans_blocage(est_actif: bool) -> void:
+	set_deferred("monitoring", est_actif)
+	set_deferred("monitorable", est_actif)