Randoloot/scripts/ui/planet_services_menu.gd
2026-10-11 13:26:14 +02:00

47 lines
1.8 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends Control
signal next_level_requested
signal closed
@onready var next_button: Button = $Center/Panel/Contents/NextButton
@onready var close_button: Button = $Center/Panel/Contents/CloseButton
@onready var buy_ammunition_button: Button = $Center/Panel/Contents/BuyAmmunitionButton
@onready var services_label: Label = $Center/Panel/Contents/Services
var _inventory: ShipInventory
func _ready() -> void:
next_button.pressed.connect(func() -> void: next_level_requested.emit())
close_button.pressed.connect(_close)
buy_ammunition_button.pressed.connect(_buy_ammunition)
_inventory = get_tree().get_first_node_in_group("ship_inventory") as ShipInventory
if _inventory:
_inventory.ammunition_changed.connect(_refresh_ammunition_service)
GameState.captain.changed.connect(_refresh_ammunition_service)
_refresh_ammunition_service()
func show_services(at_level_cap: bool) -> void:
_refresh_ammunition_service()
next_button.disabled = at_level_cap
next_button.text = "OSIĄGNIĘTO OSTATNI UKŁAD" if at_level_cap else "PRZEJDŹ DO NASTĘPNEGO UKŁADU"
show()
func _refresh_ammunition_service() -> void:
buy_ammunition_button.disabled = _inventory == null or not _inventory.can_buy_ammunition()
if _inventory:
buy_ammunition_button.text = "KUP %d AMUNICJI — %d KREDYTÓW" % [ShipInventory.AMMUNITION_BUY_AMOUNT, _inventory.get_ammunition_buy_cost()]
services_label.text = "Amunicja: %d • Kredyty: %d\nCena: 100 kredytów × poziom układu (%d)" % [_inventory.ammunition, GameState.captain.credits, GameState.system_level]
func _buy_ammunition() -> void:
if visible and _inventory:
_inventory.buy_ammunition()
func _close() -> void:
hide()
closed.emit()
func _unhandled_key_input(event: InputEvent) -> void:
if visible and event.is_action_pressed("ui_cancel"):
_close()
get_viewport().set_input_as_handled()