@tool class_name Brique extends StaticBody2D signal eclatee const EclatementScene: PackedScene = preload("res://effets/eclatement_brique/eclatement_effet.tscn") const CapsuleScene: PackedScene = preload("res://composants/objets/capsule/capsule.tscn") #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: set = set_pouvoir_type var _texture_brique: Texture2D = preload("res://composants/objets/brique/images/01.png") @onready var image: Sprite2D = $Image func _ready() -> void: _montrer_nombre_vies() _montrer_type_pouvoir() func frapper(nb_degats: int) -> void: # plusieurs points de vie : perdre de la vie, et peut-ĂȘtre mourir _mourir() func _montrer_nombre_vies() -> void: pass # vies briques : supprimer cette ligne et dĂ©commenter ci-dessous #var nouvelle_couleur: Color = Color.WHITE * (NOMBRE_DE_VIES_MAX - nombre_de_vies) / (NOMBRE_DE_VIES_MAX - 1) #nouvelle_couleur.a = 1.0 # rendre opaque #set_modulate(nouvelle_couleur) func _montrer_type_pouvoir() -> void: if not is_node_ready(): return image.set_texture(_texture_brique) func _associe_texture_brique(nouveau_type_pouvoir: Pouvoir.Type) -> void: match nouveau_type_pouvoir: Pouvoir.Type.AUCUN: _texture_brique = preload("res://composants/objets/brique/images/01.png") #Pouvoir.Type.RALENTIR: #_texture_brique = preload("res://composants/objets/brique/images/08.png") #Pouvoir.Type.VIE: #_texture_brique = preload("res://composants/objets/brique/images/44.png") #Pouvoir.Type.FEU: #_texture_brique = preload("res://composants/objets/brique/images/43.png") _: _texture_brique = preload("res://composants/objets/brique/images/34.png") _montrer_type_pouvoir() func _mourir() -> void: queue_free() _eclater() _liberer_capsule() func _eclater() -> void: var effet_eclatement: Node2D = EclatementScene.instantiate() effet_eclatement.position = self.position add_sibling(effet_eclatement) eclatee.emit() 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.fabriquer(pouvoir_type) add_sibling(capsule) #func set_nombre_de_vies(nb: int) -> void: #nombre_de_vies = nb #_montrer_nombre_vies() func set_pouvoir_type(nouveau_type: Pouvoir.Type) -> void: pouvoir_type = nouveau_type _associe_texture_brique(nouveau_type)