74 lines
4.6 KiB
GDScript
74 lines
4.6 KiB
GDScript
extends RefCounted
|
|
const MENU := preload("res://scripts/planets/freighter_menu.gd")
|
|
const NETWORK := preload("res://scripts/planets/mining_network.gd")
|
|
|
|
static func build(screen: Control) -> void:
|
|
var progress: Resource = screen.captain.expedition
|
|
var navigation := MENU.card(screen._content)
|
|
MENU.label(navigation, "NAWIGACJA / ODKRYTE UKŁADY", 14, MENU.GOLD)
|
|
MENU.label(navigation, "Obecny: System %d · Najdalszy odkryty: %d" % [GameState.system_level, GameState.highest_system], 12)
|
|
var row := MENU.row(navigation)
|
|
var destination := OptionButton.new()
|
|
destination.name = "SystemDestination"
|
|
destination.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
|
destination.add_theme_font_size_override("font_size", 11)
|
|
destination.add_theme_font_override("font", ThemeDB.fallback_font)
|
|
for level in range(1, GameState.highest_system + 1):
|
|
destination.add_item("System %d%s" % [level, " · HARD" if level > 60 else ""], level)
|
|
destination.select(GameState.system_level - 1)
|
|
row.add_child(destination)
|
|
var travel := MENU.button(row, "LEĆ DO UKŁADU", func(): screen._travel_to_system(destination.get_selected_id()), true)
|
|
travel.name = "TravelToSystem"
|
|
travel.disabled = true
|
|
destination.item_selected.connect(func(_index): travel.disabled = destination.get_selected_id() == GameState.system_level)
|
|
MENU.label(navigation, "Nowe układy odblokujesz, przechodząc dalej przez tunel po pokonaniu przeciwników.", 11, MENU.MUTED)
|
|
var summary := MENU.card(screen._content)
|
|
MENU.label(summary, "SIEĆ WYDOBYWCZA", 14, MENU.GOLD)
|
|
var stock := MENU.label(summary, "", 13, Color("95dce8"))
|
|
screen._economy_labels["network"] = stock
|
|
MENU.label(summary, "Obsadzona placówka: 1 deuter/min + punkty zarządzania. Dostawy automatyczne do magazynu.", 11, MENU.MUTED)
|
|
MENU.label(summary, "Jeden załogant obsługuje jedną placówkę. Nowy przydział przenosi go z poprzedniej.", 11, MENU.MUTED)
|
|
if progress.mining_stations.is_empty():
|
|
MENU.label(summary, "Brak placówek. Szukaj głębokich złóż na planetach (szansa 60%). Budowa: 200 części.", 12)
|
|
for station_id in progress.mining_stations:
|
|
var station: Dictionary = progress.mining_stations[station_id]
|
|
var card := MENU.card(screen._content)
|
|
MENU.label(card, "%s · SYSTEM %d" % [station.planet_name, station.system], 13, MENU.GOLD)
|
|
var member: Dictionary = progress.crew.get(str(station.get("crew_id", "")), {})
|
|
MENU.label(card, "Czeka na załoganta" if member.is_empty() else "%s · zarządzanie %d/100 · %.0f deuteru/min" % [member.name, member.management, NETWORK.station_rate(progress, station)], 12)
|
|
var assign_row := MENU.row(card)
|
|
var option := OptionButton.new()
|
|
option.name = "StationCrew_" + str(station_id).md5_text().substr(0, 8)
|
|
option.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
|
option.fit_to_longest_item = false
|
|
option.add_theme_font_size_override("font_size", 11)
|
|
option.add_theme_font_override("font", ThemeDB.fallback_font)
|
|
option.add_item("Bez przydziału")
|
|
option.set_item_metadata(0, "")
|
|
for crew_id in progress.crew:
|
|
var person: Dictionary = progress.crew[crew_id]
|
|
option.add_item("%s · %d/100" % [person.name, person.management])
|
|
option.set_item_metadata(option.item_count - 1, crew_id)
|
|
if str(station.get("crew_id", "")) == str(crew_id): option.select(option.item_count - 1)
|
|
assign_row.add_child(option)
|
|
var apply := MENU.button(assign_row, "PRZYDZIEL", screen._assign_station.bind(str(station_id), option))
|
|
apply.disabled = progress.crew.is_empty() and member.is_empty()
|
|
if progress.crew.is_empty(): MENU.label(screen._content, "Brak załogantów. Przygotuj kajutę i zatrudnij specjalistę spotkanego na planecie.", 12, MENU.MUTED)
|
|
screen._refresh_live_labels()
|
|
|
|
static func cabin(screen: Control) -> void:
|
|
var progress: Resource = screen.captain.expedition
|
|
var member := NETWORK.cabin_crew(progress, screen._tab)
|
|
var card := MENU.card(screen._content)
|
|
if member.is_empty():
|
|
MENU.label(card, "WOLNA KAJUTA", 14, MENU.GOLD)
|
|
MENU.label(card, "Przygotowana dla jednego załoganta. Specjalistów możesz zatrudniać na planetach.", 12)
|
|
return
|
|
MENU.label(card, str(member.name), 15, MENU.GOLD)
|
|
MENU.label(card, "Zarządzanie: %d / 100\nPremia do wydobycia: +%d deuteru/min\nPochodzenie: %s" % [member.management, member.management, member.planet_name], 12)
|
|
var assignment := "Bez przydziału"
|
|
for station in progress.mining_stations.values():
|
|
if str(station.get("crew_id", "")) == str(member.id): assignment = "%s · System %d" % [station.planet_name, station.system]
|
|
MENU.label(card, "Placówka: " + assignment, 12, Color("95dce8"))
|
|
MENU.button(card, "ZWOLNIJ ZAŁOGANTA", screen._dismiss_crew.bind(str(member.id)))
|