39 lines
1.2 KiB
GDScript
39 lines
1.2 KiB
GDScript
@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
|
|
print(battery.powered)
|
|
energy_count += 1
|