@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
