extends CanvasLayer @onready var fuel_gauge = %FuelGauge @onready var eject_pod_level = %EjectPodLevel @onready var eject_indicator_bkgd := $EjectPodLevel/EjectIndicator/Background @onready var cargo_item_container = %CargoItemContainer @onready var no_cargo_placeholder = %NoCargoPlaceholder const CARGO_ITEM = preload("res://scenes/cargo_item.tscn") var cargo_gui_panels := {} func _ready(): DataHandler.pickup_item.connect(_on_pickup_item) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): fuel_gauge.value = DataHandler.get_fuel() var percent = DataHandler.get_fuel_percent() var r = min(2 - 2 * percent, 1) var g = min(2.0 * percent, 1) fuel_gauge.get("theme_override_styles/fill").bg_color = Color(r, g, 0.0) var eject_percent = DataHandler.eject_fuel_max_percentage() eject_pod_level.position.y = (1.0 - eject_percent) * get_viewport().size.y - 16 eject_indicator_bkgd.modulate = Color.GREEN if DataHandler.has_fuel_needed_for_eject() else Color.RED func _on_pickup_item(): if DataHandler.has_cargo(): if cargo_gui_panels.is_empty(): no_cargo_placeholder.queue_free() for key in DataHandler.game_data.cargo: var count = DataHandler.game_data.cargo[key] if count > 0: if not cargo_gui_panels.has(key): cargo_gui_panels[key] = CARGO_ITEM.instantiate() cargo_item_container.add_child(cargo_gui_panels[key]) cargo_gui_panels[key].init(key, count) else: cargo_gui_panels[key].update_count(count) var cargo_gui: Node