Browse Source

Permet a une brique de liberer un pouvoir

Bonjour pouvoir !
DricomDragon 11 months ago
parent
commit
fc26b95263

+ 5 - 0
godot/composants/objets/brique/brique.gd

@@ -10,6 +10,7 @@ const nombre_de_vies_max: int = 4
 ## Le nombre de coups necessaires pour detruire la brique.
 @export_range(1, nombre_de_vies_max) var nombre_de_vies: int = 1:
 	set = set_nombre_de_vies
+@export var pouvoir_type: Pouvoir.Type = Pouvoir.Type.AUCUN
 
 
 func _ready() -> void:
@@ -41,8 +42,12 @@ func _eclater() -> void:
 
 
 func _liberer_capsule() -> void:
+	if Pouvoir.Type.AUCUN == pouvoir_type:
+		return # pas de pouvoir a liberer
+
 	var capsule: Node2D = CapsuleScene.instantiate()
 	capsule.position = self.position
+	capsule.pouvoir = Pouvoir.depuis_enum(pouvoir_type)
 	add_sibling(capsule)
 
 

+ 1 - 0
godot/composants/objets/brique/brique.tscn

@@ -11,6 +11,7 @@ size = Vector2(30, 16)
 collision_layer = 16
 physics_material_override = ExtResource("1_exny1")
 script = ExtResource("2_gkrr0")
+pouvoir_type = null
 
 [node name="Image" type="Sprite2D" parent="."]
 texture = ExtResource("3_fmy5a")

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

@@ -5,6 +5,8 @@ extends Node2D
 
 const VITESSE_DESCENTE: float = 50.0 # px / sec
 
+var pouvoir: PouvoirBase = null
+
 
 func _physics_process(delta: float) -> void:
 	_descendre(delta)
@@ -15,7 +17,8 @@ func _descendre(delta: float) -> void:
 
 
 func _declencher_pouvoir() -> void:
-	print("Le pouvoir ", self, " se declenche !")
+	print("Le pouvoir ", pouvoir, " se declenche !")
+	pouvoir.declencher_pouvoir()
 
 
 func _auto_detruire() -> void:

+ 7 - 0
godot/composants/pouvoirs/bonjour_pouvoir.gd

@@ -0,0 +1,7 @@
+class_name BonjourPouvoir
+extends PouvoirBase
+## Pouvoir de test permettant de dire bonjour
+
+
+func declencher_pouvoir() -> void:
+	print("Bonjour, je m'appelle ", self)

+ 18 - 0
godot/composants/pouvoirs/commun/association_pouvoirs.gd

@@ -0,0 +1,18 @@
+class_name Pouvoir
+
+
+enum Type {
+	BONJOUR,
+	AUCUN # si pas de pouvoir
+}
+
+
+static func depuis_enum(type: Type): # -> PouvoirBase
+	match type:
+		Type.BONJOUR:
+			return BonjourPouvoir.new()
+		Type.AUCUN:
+			return null
+		_:
+			assert(false, "Le nouveau pouvoir doit etre associe a son type " + str(type))
+			return null # sinon compilateur pas content

+ 8 - 0
godot/composants/pouvoirs/commun/base_pouvoir.gd

@@ -0,0 +1,8 @@
+extends Object
+class_name PouvoirBase
+## Classe de base de tous les pouvoirs
+
+
+## Fonction a surcharger pour chaque pouvoir
+func declencher_pouvoir() -> void:
+	assert(false, "Un pouvoir doit obligatoirement surcharger cette fonction !")

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

@@ -16,45 +16,59 @@ position = Vector2(210, 144)
 [node name="Briques" type="Node2D" parent="."]
 
 [node name="Brique1" parent="Briques" instance=ExtResource("2_j0emn")]
+pouvoir_type = 0
 
 [node name="Brique2" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(30, 0)
+pouvoir_type = 0
 
 [node name="Brique3" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(60, 0)
+pouvoir_type = 0
 
 [node name="Brique4" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(90, 0)
+pouvoir_type = 0
 
 [node name="Brique5" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(120, 0)
+pouvoir_type = 0
 
 [node name="Brique6" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(150, 0)
+pouvoir_type = 0
 
 [node name="Brique7" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(180, 0)
+pouvoir_type = 0
 
 [node name="Brique8" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(210, 0)
+pouvoir_type = 0
 
 [node name="Brique9" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(240, 0)
+pouvoir_type = 0
 
 [node name="Brique10" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(270, 0)
+pouvoir_type = 0
 
 [node name="Brique11" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(300, 0)
+pouvoir_type = 0
 
 [node name="Brique12" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(330, 0)
+pouvoir_type = 0
 
 [node name="Brique13" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(360, 0)
+pouvoir_type = 0
 
 [node name="Brique14" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(390, 0)
+pouvoir_type = 0
 
 [node name="Brique15" parent="Briques" instance=ExtResource("2_j0emn")]
 position = Vector2(120, 96)