extends Node2D var StarScene = preload("res://scenes/Star.tscn") var PlanetScene = preload("res://scenes/Planet.tscn") @onready var PlanetStatPanel = $PlanetStatPanel var PLANET_COUNT = randi_range(1,6) const ORBIT_STEP = 120 var planet_names = [ "Arcturus","Betelgeuse","Canopus","Deneb","Elnath", "Fomalhaut","Gacrux","Hadar","Izar","Jabbah", "Kaus","Lesath","Menkent","Nunki","Okul", "Pollux","Rigel","Sargas","Toliman","Unukalhai", "Vega","Wezen","Xamidimura","Yildun","Zosma", "Alkaid","Baten","Caph","Diphda","Electra" ] # Planeta, której statystyki są aktualnie pokazywane var tracked_planet: Node = null func _ready(): randomize() spawn_star() spawn_planets(PLANET_COUNT) _init_background() func _process(delta): if tracked_planet != null: _update_panel() func spawn_star(): var star = StarScene.instantiate() add_child(star) star.position = get_viewport_rect().size / 2 star.set_texture(random_star_texture()) func spawn_planets(count: int): var center = get_viewport_rect().size / 2 for i in range(count): var planet = PlanetScene.instantiate() add_child(planet) var orbit_radius = (i + 1) * ORBIT_STEP planet.orbit_radius = orbit_radius planet.orbit_center = center planet.rotation_speed = randf_range(0.01, 0.04) planet.planet_size = randi_range(1, 3) planet.set_size(planet.planet_size) planet.resources = 0 planet.mining_rate = randf_range(0.1, 1.0) planet.planet_name = planet_names[randi() % planet_names.size()] planet.set_texture(random_planet_texture()) planet.connect("show_stats", Callable(self, "_on_show_stats")) planet.connect("hide_stats", Callable(self, "_on_hide_stats")) func _init_background(): var background = Sprite2D.new() background.texture = load("res://assets/background/space1.jpg") background.centered = true background.position = get_viewport_rect().size / 2 var screen_size = get_viewport_rect().size var tex_size = background.texture.get_size() var scale_factor = max(screen_size.x / tex_size.x, screen_size.y / tex_size.y) background.scale = Vector2(scale_factor, scale_factor) add_child(background) background.z_index = -10 func random_star_texture() -> Texture2D: var id = randi_range(1, 16) return load("res://assets/stars/s%d.png" % id) func random_planet_texture() -> Texture2D: var id = randi_range(1, 18) return load("res://assets/planets/p%d.png" % id) # --- GUI --- func _on_show_stats(planet): tracked_planet = planet PlanetStatPanel.visible = true _update_panel() func _on_hide_stats(): PlanetStatPanel.visible = false tracked_planet = null func _update_panel(): var colonized_text = "" if tracked_planet.is_colonized: colonized_text = " (Skolonizowana)" PlanetStatPanel.get_node("PlanetName").text = "Name: " + tracked_planet.planet_name + colonized_text PlanetStatPanel.get_node("PopulationPanel").text = ("Populacja: %d / %d" % [tracked_planet.population, tracked_planet.max_population]) PlanetStatPanel.get_node("MiningRate").text = ("Współczynnik wydobycia: %.2f" % tracked_planet.mining_rate) var mined_per_cycle = tracked_planet.get_mined_per_cycle() PlanetStatPanel.get_node("ResourcePlanet").text = ( "Surowce: %.2f (+%.2f / cykl)" % [tracked_planet.resources, mined_per_cycle] )