@tool extends Node3D const BATTERY_SCENE = preload("res://gui/game/energy_info/battery_3d.tscn") const BATTERY_SHIFT = Vector3(0,0,-1) @export var max_energy : int = 0 : set = set_max_energy @export var energy : int = 0 : set = set_energy func _ready(): set_max_energy() func set_max_energy(_max_energy : int = max_energy): var old = max_energy max_energy = _max_energy if is_node_ready() and max_energy != len(%Batteries.get_children()): for c in %Batteries.get_children(): c.queue_free() for i in range(max_energy): var new_battery := BATTERY_SCENE.instantiate() as Battery3d %Batteries.add_child(new_battery) new_battery.position = BATTERY_SHIFT * i await get_tree().create_timer(0.1).timeout set_energy() func set_energy(_energy : int = energy): energy = _energy if is_node_ready(): var energy_count = 0 for battery in %Batteries.get_children(): if not battery.is_node_ready(): await battery.ready if battery is Battery3d: battery.powered = energy_count < energy energy_count += 1