class_name Consumer
extends CircuitElement
## Потребитель энергии (лампочка, мотор).
## Цель уровня — подать на него нужное напряжение.

## Минимальное напряжение для работы
@export var required_voltage: float = 3.0

## Сигнал при включении потребителя
signal powered_on

## Работает ли потребитель
var is_working: bool = false


func _ready() -> void:
	element_name = "Лампочка (≥%dВ)" % int(required_voltage)
	connection_points = [Vector2i(-1, 0), Vector2i(1, 0)]


## Проверить, достаточно ли напряжения
func check_power(voltage: float) -> void:
	var was_working := is_working
	is_working = voltage >= required_voltage
	_update_work_visual()
	if is_working and not was_working:
		powered_on.emit()


func _update_work_visual() -> void:
	if is_working:
		modulate = Color(1.0, 1.0, 0.0)  # Жёлтый — горит
	else:
		modulate = Color(0.4, 0.4, 0.4)  # Серый — не горит


## Сброс
func reset() -> void:
	is_working = false
	is_powered = false
	_update_work_visual()
