43 lines
1.5 KiB
GDScript
43 lines
1.5 KiB
GDScript
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
|