Browse Source

Creee le pouvoir d'enflammer les balles !

DricomDragon 11 months ago
parent
commit
433e826a1e

+ 7 - 0
godot/composants/objets/balle/balle.gd

@@ -31,6 +31,13 @@ func _physics_process(delta: float) -> void:
 			_impacter_brique(obstacle)
 
 
+## Recopie les proprietes utiles de l'autre balle
+func recopier(autre_balle: Balle) -> void:
+	position = autre_balle.position
+	_vitesse = autre_balle._vitesse
+	_mouvement = autre_balle._mouvement
+
+
 func _rebondir(impact: KinematicCollision2D) -> void:
 	_mouvement = _mouvement.bounce(impact.get_normal())
 

+ 3 - 3
godot/composants/objets/balle/balle.tscn

@@ -1,18 +1,18 @@
 [gd_scene load_steps=4 format=3 uid="uid://vilrv0y5q2re"]
 
-[ext_resource type="Script" path="res://composants/objets/balle/balle.gd" id="1_ssf8u"]
+[ext_resource type="Script" path="res://composants/objets/balle/balle.gd" id="1_n72rw"]
 [ext_resource type="Texture2D" uid="uid://bbpkc5fx4p34l" path="res://composants/objets/balle/ball_main0001.png" id="2_aab72"]
 
 [sub_resource type="CircleShape2D" id="CircleShape2D_lab73"]
 radius = 5.42
 
-[node name="Balle" type="CharacterBody2D"]
+[node name="Balle" type="CharacterBody2D" groups=["groupe_des_balles"]]
 collision_mask = 22
 motion_mode = 1
 wall_min_slide_angle = 0.0
 platform_floor_layers = 2
 platform_wall_layers = 4
-script = ExtResource("1_ssf8u")
+script = ExtResource("1_n72rw")
 
 [node name="Image" type="Sprite2D" parent="."]
 scale = Vector2(2, 2)

+ 9 - 0
godot/composants/objets/balle/balle_de_feu/balle_de_feu.gd

@@ -3,8 +3,17 @@ extends Balle
 
 
 const DEGATS_FEU: int = 5
+const BalleDeFeuScene: PackedScene = preload("res://composants/objets/balle/balle_de_feu/balle_de_feu.tscn")
 
 
 ## La balle de feu fait plus de degats
 func _impacter_brique(brique: Brique) -> void:
 	brique.frapper(DEGATS_FEU)
+
+
+## Transforme une balle quelconque en balle de feu
+static func transformer(balle: Balle) -> void:
+	var balle_de_feu: BalleDeFeu = BalleDeFeuScene.instantiate()
+	balle.add_sibling(balle_de_feu)
+	balle_de_feu.recopier(balle)
+	balle.queue_free()

+ 27 - 0
godot/composants/objets/balle/balle_de_feu/balle_de_feu.tscn

@@ -0,0 +1,27 @@
+[gd_scene load_steps=4 format=3 uid="uid://caq4nri545npd"]
+
+[ext_resource type="Script" path="res://composants/objets/balle/balle_de_feu/balle_de_feu.gd" id="1_snyek"]
+[ext_resource type="Texture2D" uid="uid://bbpkc5fx4p34l" path="res://composants/objets/balle/ball_main0001.png" id="2_s1mc5"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_lab73"]
+radius = 5.42
+
+[node name="BalleDeFeu" type="CharacterBody2D" groups=["groupe_des_balles"]]
+modulate = Color(1, 0.317647, 0, 1)
+collision_mask = 22
+motion_mode = 1
+wall_min_slide_angle = 0.0
+platform_floor_layers = 2
+platform_wall_layers = 4
+script = ExtResource("1_snyek")
+
+[node name="Image" type="Sprite2D" parent="."]
+scale = Vector2(2, 2)
+texture = ExtResource("2_s1mc5")
+
+[node name="Forme" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_lab73")
+
+[node name="VerificateurVisibilite" type="VisibleOnScreenNotifier2D" parent="."]
+
+[connection signal="screen_exited" from="VerificateurVisibilite" to="." method="_quand_verificateur_visibilite_detecte_sortie_ecran"]

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

@@ -18,7 +18,7 @@ func _descendre(delta: float) -> void:
 
 func _declencher_pouvoir() -> void:
 	print("Le pouvoir ", pouvoir, " se declenche !")
-	pouvoir.declencher_pouvoir()
+	pouvoir.declencher_pouvoir(get_tree())
 
 
 func _auto_detruire() -> void:

+ 1 - 1
godot/composants/pouvoirs/bonjour_pouvoir.gd

@@ -3,5 +3,5 @@ extends PouvoirBase
 ## Pouvoir de test permettant de dire bonjour
 
 
-func declencher_pouvoir() -> void:
+func declencher_pouvoir(_arbre_scene: SceneTree) -> void:
 	print("Bonjour, je m'appelle ", self)

+ 5 - 2
godot/composants/pouvoirs/commun/association_pouvoirs.gd

@@ -2,8 +2,9 @@ class_name Pouvoir
 
 
 enum Type {
-	BONJOUR,
-	AUCUN # si pas de pouvoir
+	AUCUN, # si pas de pouvoir, laisser en premier
+	FEU,
+	BONJOUR # laisser en dernier
 }
 
 
@@ -11,6 +12,8 @@ static func depuis_enum(type: Type): # -> PouvoirBase
 	match type:
 		Type.BONJOUR:
 			return BonjourPouvoir.new()
+		Type.FEU:
+			return PouvoirFeu.new()
 		Type.AUCUN:
 			return null
 		_:

+ 1 - 1
godot/composants/pouvoirs/commun/base_pouvoir.gd

@@ -4,5 +4,5 @@ class_name PouvoirBase
 
 
 ## Fonction a surcharger pour chaque pouvoir
-func declencher_pouvoir() -> void:
+func declencher_pouvoir(_arbre_scene: SceneTree) -> void:
 	assert(false, "Un pouvoir doit obligatoirement surcharger cette fonction !")

+ 9 - 0
godot/composants/pouvoirs/pouvoir_feu.gd

@@ -0,0 +1,9 @@
+class_name PouvoirFeu
+extends PouvoirBase
+## Pouvoir qui rend les balles enflammees
+
+
+func declencher_pouvoir(arbre_scene: SceneTree) -> void:
+	for balle in arbre_scene.get_nodes_in_group("groupe_des_balles"):
+		assert(balle is Balle, "Le groupe_des_balles ne doit contenir que des Balle !")
+		BalleDeFeu.transformer(balle)

+ 14 - 0
godot/exec/niveaux/bulle_facile.tscn

@@ -17,45 +17,59 @@ position = Vector2(210, 176)
 
 [node name="Brique1" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(150, 112)
+pouvoir_type = 0
 
 [node name="Brique2" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(180, 112)
+pouvoir_type = 0
 
 [node name="Brique3" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(210, 112)
+pouvoir_type = 0
 
 [node name="Brique4" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(240, 112)
+pouvoir_type = 0
 
 [node name="Brique5" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(120, 128)
+pouvoir_type = 0
 
 [node name="Brique6" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(150, 128)
+pouvoir_type = 0
 
 [node name="Brique7" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(180, 128)
+pouvoir_type = 0
 
 [node name="Brique8" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(210, 128)
+pouvoir_type = 0
 
 [node name="Brique9" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(240, 128)
+pouvoir_type = 0
 
 [node name="Brique10" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(270, 128)
+pouvoir_type = 0
 
 [node name="Brique11" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(150, 144)
+pouvoir_type = 0
 
 [node name="Brique12" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(180, 144)
+pouvoir_type = 0
 
 [node name="Brique13" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(210, 144)
+pouvoir_type = 0
 
 [node name="Brique14" parent="Briques" instance=ExtResource("3_cdjfa")]
 position = Vector2(240, 144)
+pouvoir_type = 0
 
 [node name="Arene" parent="." instance=ExtResource("4_0av0d")]
 metadata/_edit_lock_ = true

+ 26 - 14
godot/exec/niveaux/carre_simple.tscn

@@ -16,111 +16,123 @@ position = Vector2(210, 144)
 [node name="Briques" type="Node2D" parent="."]
 
 [node name="Brique1" parent="Briques" instance=ExtResource("2_j0emn")]
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique2" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(30, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique3" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(60, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique4" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(90, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique5" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(120, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique6" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(150, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique7" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(180, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique8" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(210, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique9" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(240, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique10" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(270, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique11" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(300, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique12" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(330, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique13" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(360, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique14" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(390, 0)
-pouvoir_type = 0
+pouvoir_type = 1
 
 [node name="Brique15" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(120, 96)
+pouvoir_type = 0
 
 [node name="Brique16" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(150, 96)
+pouvoir_type = 0
 
 [node name="Brique17" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0.333333, 0.333333, 0.333333, 1)
 position = Vector2(180, 96)
 nombre_de_vies = 3
+pouvoir_type = 0
 
 [node name="Brique18" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0.333333, 0.333333, 0.333333, 1)
 position = Vector2(210, 96)
 nombre_de_vies = 3
+pouvoir_type = 0
 
 [node name="Brique19" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(240, 96)
+pouvoir_type = 0
 
 [node name="Brique20" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(270, 96)
+pouvoir_type = 0
 
 [node name="Brique35" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0.666667, 0.666667, 0.666667, 1)
 position = Vector2(120, 112)
 nombre_de_vies = 2
+pouvoir_type = 0
 
 [node name="Brique36" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0.666667, 0.666667, 0.666667, 1)
 position = Vector2(150, 112)
 nombre_de_vies = 2
+pouvoir_type = 0
 
 [node name="Brique37" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0, 0, 0, 1)
 position = Vector2(180, 112)
 nombre_de_vies = 4
+pouvoir_type = 0
 
 [node name="Brique38" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0, 0, 0, 1)
 position = Vector2(210, 112)
 nombre_de_vies = 4
+pouvoir_type = 0
 
 [node name="Brique39" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0.666667, 0.666667, 0.666667, 1)
 position = Vector2(240, 112)
 nombre_de_vies = 2
+pouvoir_type = 0
 
 [node name="Brique40" parent="Briques" instance=ExtResource("2_j0emn")]
 modulate = Color(0.666667, 0.666667, 0.666667, 1)
 position = Vector2(270, 112)
 nombre_de_vies = 2
+pouvoir_type = 0
 
 [node name="Arene" parent="." instance=ExtResource("4_imfht")]
 metadata/_edit_lock_ = true