extends PanelContainer var _inventory: ShipInventory var _expanded := false var _toggle: Button var _details: VBoxContainer var _parts: Label var _stock: Label var _ammo: Button var _gamma: Button var _missile: Button func _ready() -> void: add_theme_stylebox_override("panel", StyleBoxEmpty.new()) _inventory = get_tree().get_first_node_in_group("ship_inventory") as ShipInventory var contents := VBoxContainer.new() contents.name = "Contents" contents.add_theme_constant_override("separation", 6) add_child(contents) _toggle = Button.new() _toggle.name = "CreateToggle" _toggle.text = "TWÓRZ ▾" _toggle.custom_minimum_size.y = 28 _toggle.add_theme_font_size_override("font_size", 12) _toggle.focus_mode = Control.FOCUS_NONE _toggle.pressed.connect(_toggle_expanded) contents.add_child(_toggle) _details = VBoxContainer.new() _details.name = "CraftingDetails" _details.add_theme_constant_override("separation", 6) contents.add_child(_details) _parts = _label(Color("efb568")) _stock = _label(Color("91dbea")) _ammo = _button("CraftAmmunition", "+%d AMUNICJI · %.0f CZĘŚCI" % [ShipInventory.AMMUNITION_CRAFT_AMOUNT, ShipInventory.AMMUNITION_CRAFT_PARTS_COST]) _ammo.tooltip_text = "Tworzy amunicję do działka maszynowego." _ammo.pressed.connect(func() -> void: _inventory.craft_ammunition()) _missile = _button("CraftMissile", "+1 RAKIETA · %.0f CZĘŚCI" % ShipInventory.MISSILE_CRAFT_PARTS_COST) _missile.tooltip_text = "Tworzy rakietę do dowolnej wyrzutni." _missile.pressed.connect(func() -> void: _inventory.craft_missile()) _gamma = _button("CraftGamma", "+10 NAPROMIENIOWANEJ · 1 URAN + 10 CZĘŚCI") _gamma.pressed.connect(func() -> void: _inventory.craft_irradiated_ammunition()) _details.hide() if bool(GameState.hud_panel_state.get("crafting_expanded", false)): _toggle_expanded() _inventory.ammunition_changed.connect(_refresh) GameState.captain.changed.connect(_refresh) _refresh() func _label(color: Color) -> Label: var label := Label.new() label.add_theme_font_size_override("font_size", 10) label.add_theme_color_override("font_color", color) _details.add_child(label) return label func _button(node_name: String, caption: String) -> Button: var button := Button.new() button.name = node_name button.text = caption button.custom_minimum_size.y = 32 button.add_theme_font_size_override("font_size", 10) button.focus_mode = Control.FOCUS_NONE _details.add_child(button) return button func _toggle_expanded() -> void: _expanded = not _expanded GameState.hud_panel_state["crafting_expanded"] = _expanded _details.visible = _expanded _toggle.text = "TWÓRZ ▴" if _expanded else "TWÓRZ ▾" func _refresh() -> void: _parts.text = "DOSTĘPNE CZĘŚCI: %.1f" % GameState.captain.parts _stock.text = "AMUNICJA: %d / RAKIETY: %d" % [_inventory.ammunition, _inventory.missile_ammunition] _ammo.disabled = not _inventory.can_craft_ammunition() _gamma.disabled = not _inventory.can_craft_irradiated_ammunition() _stock.text += "\nNAPROMIENIOWANA: %d · URAN: %d" % [_inventory.irradiated_ammunition, int(GameState.captain.minerals.get("uranium", 0))] _missile.disabled = not _inventory.can_craft_missile()