@tool class_name Hearts extends Control @export_range(0, 10, 1) var health: int = 10: set(value): health = clamp(value, 0, max_health) update_health_textures() var max_health: int = 10 var heart_textures: Array[Node] func _ready() -> void: heart_textures = $HeartContainer.get_children() for heart_texture in heart_textures: heart_texture.texture = heart_texture.texture.duplicate() update_health_textures() func update_health_textures() -> void: @warning_ignore("integer_division") var full_hearts: int = health / 2 var half_heart: bool = health % 2 == 1 for i in range(heart_textures.size()): var heart_texture: TextureRect = heart_textures[i] var atlas: AtlasTexture = heart_texture.texture as AtlasTexture if i < full_hearts: atlas.region.position.x = 1 heart_texture.visible = true elif i == full_hearts and half_heart: atlas.region.position.x = 17 heart_texture.visible = true else: heart_texture.visible = false