From e5f3e8d155a6d21de139c81ae523ef13e93f0dab Mon Sep 17 00:00:00 2001 From: Tomasz Boruc Date: Thu, 30 Oct 2025 00:16:09 +0100 Subject: [PATCH] =?UTF-8?q?Pr=C3=B3by?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Manager.gd | 2 - Manager.gd.uid | 1 - project.godot | 3 +- scenes/galaxy.tscn | 8 +++- scenes/planet.tscn | 11 ++++- scenes/sector.tscn | 12 ----- scenes/star.tscn | 11 ++++- scripts/GameClasses.gd | 38 ++++++++++++++++ scripts/GameClasses.gd.uid | 1 + scripts/GameData.gd | 87 +++++++++++++++++++----------------- scripts/PlanetData.gd | 38 ---------------- scripts/PlanetData.gd.uid | 1 - scripts/PlayerData.gd | 28 ------------ scripts/PlayerData.gd.uid | 1 - scripts/ResourcesData.gd | 6 --- scripts/ResourcesData.gd.uid | 1 - scripts/SectorData.gd | 65 --------------------------- scripts/SectorData.gd.uid | 1 - scripts/galaxy.gd | 79 +++++++++++--------------------- scripts/planet.gd | 32 +++++++++++++ scripts/planet.gd.uid | 1 + scripts/sector.gd | 25 ----------- scripts/sector.gd.uid | 1 - scripts/star.gd | 19 ++++++++ scripts/star.gd.uid | 1 + 25 files changed, 191 insertions(+), 282 deletions(-) delete mode 100644 Manager.gd delete mode 100644 Manager.gd.uid delete mode 100644 scenes/sector.tscn create mode 100644 scripts/GameClasses.gd create mode 100644 scripts/GameClasses.gd.uid delete mode 100644 scripts/PlanetData.gd delete mode 100644 scripts/PlanetData.gd.uid delete mode 100644 scripts/PlayerData.gd delete mode 100644 scripts/PlayerData.gd.uid delete mode 100644 scripts/ResourcesData.gd delete mode 100644 scripts/ResourcesData.gd.uid delete mode 100644 scripts/SectorData.gd delete mode 100644 scripts/SectorData.gd.uid create mode 100644 scripts/planet.gd create mode 100644 scripts/planet.gd.uid delete mode 100644 scripts/sector.gd delete mode 100644 scripts/sector.gd.uid create mode 100644 scripts/star.gd create mode 100644 scripts/star.gd.uid diff --git a/Manager.gd b/Manager.gd deleted file mode 100644 index 462f880..0000000 --- a/Manager.gd +++ /dev/null @@ -1,2 +0,0 @@ -extends Node -# Autoload: Manager diff --git a/Manager.gd.uid b/Manager.gd.uid deleted file mode 100644 index 83e4348..0000000 --- a/Manager.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c4udho6lk0dla diff --git a/project.godot b/project.godot index 06f6992..132bd0d 100644 --- a/project.godot +++ b/project.godot @@ -17,11 +17,10 @@ config/icon="res://icon.svg" [autoload] -Manager="*res://Manager.gd" MusicManager="*res://music_manager.gd" -GameData="*res://scripts/GameData.gd" ObjectNames="*res://scripts/ObjectNames.gd" Settings="*res://scripts/settings.gd" +GameData="*res://scripts/GameData.gd" [display] diff --git a/scenes/galaxy.tscn b/scenes/galaxy.tscn index d254faa..778d85d 100644 --- a/scenes/galaxy.tscn +++ b/scenes/galaxy.tscn @@ -8,10 +8,14 @@ script = ExtResource("1_jxn3g") [node name="Background" type="Sprite2D" parent="."] -position = Vector2(576.00006, 323.99994) -scale = Vector2(0.3, 0.30000004) +position = Vector2(2603.9998, 1474.0001) +scale = Vector2(1.3562499, 1.3685186) texture = ExtResource("1_n7ltq") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("3_mlxib") autoplay = true + +[node name="Kamera" type="Camera2D" parent="."] +position = Vector2(2632, 1472) +zoom = Vector2(-0.22, -0.22) diff --git a/scenes/planet.tscn b/scenes/planet.tscn index 372aafb..3b5c6f5 100644 --- a/scenes/planet.tscn +++ b/scenes/planet.tscn @@ -1,3 +1,12 @@ -[gd_scene format=3 uid="uid://cynwjsqox5eqx"] +[gd_scene load_steps=3 format=3 uid="uid://cynwjsqox5eqx"] + +[ext_resource type="Script" uid="uid://bdmoi05k2qhjs" path="res://scripts/planet.gd" id="1_h8ms6"] +[ext_resource type="Texture2D" uid="uid://hun546m51ov8" path="res://assets/planets/p8.png" id="2_ggt7d"] [node name="Planet" type="Node2D"] +script = ExtResource("1_h8ms6") + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(61.5, 58) +scale = Vector2(0.40333334, 0.38) +texture = ExtResource("2_ggt7d") diff --git a/scenes/sector.tscn b/scenes/sector.tscn deleted file mode 100644 index c7ac2c7..0000000 --- a/scenes/sector.tscn +++ /dev/null @@ -1,12 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://duxpu41p6vik2"] - -[ext_resource type="Script" uid="uid://c6s5mbfosgmc3" path="res://scripts/sector.gd" id="1_c2nvg"] -[ext_resource type="Texture2D" uid="uid://c77e86rim4e14" path="res://assets/background/space1.jpg" id="1_l8itw"] - -[node name="sector" type="Node2D"] -script = ExtResource("1_c2nvg") - -[node name="Sprite2D" type="Sprite2D" parent="."] -position = Vector2(576.00006, 324) -scale = Vector2(0.29999998, 0.3) -texture = ExtResource("1_l8itw") diff --git a/scenes/star.tscn b/scenes/star.tscn index a4f955e..76792ef 100644 --- a/scenes/star.tscn +++ b/scenes/star.tscn @@ -1,3 +1,12 @@ -[gd_scene format=3 uid="uid://cvc0brcqh2rhu"] +[gd_scene load_steps=3 format=3 uid="uid://cvc0brcqh2rhu"] + +[ext_resource type="Script" uid="uid://c7l387xor12hx" path="res://scripts/star.gd" id="1_j6vao"] +[ext_resource type="Texture2D" uid="uid://b4iycl7xcvpkp" path="res://assets/stars/s1.png" id="2_ef0hr"] [node name="Star" type="Node2D"] +script = ExtResource("1_j6vao") + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(48.999996, 47.000004) +scale = Vector2(0.07206547, 0.06872218) +texture = ExtResource("2_ef0hr") diff --git a/scripts/GameClasses.gd b/scripts/GameClasses.gd new file mode 100644 index 0000000..af1faec --- /dev/null +++ b/scripts/GameClasses.gd @@ -0,0 +1,38 @@ +# Plik: res://data/GameClasses.gd +extends Resource +class_name GameClasses # Użyjemy go do globalnego dostępu (jak Singleton dla klas) + +# ========================================================================= +# === 1. KLASA DANYCH PLANETY ============================================= +# ========================================================================= +class PlanetData extends Resource: + @export var name: String = "" + @export var size: int = 1 + @export var orbit_radius: float = 0.0 + @export var angle: float = 0.0 + @export var rotation_speed: float = 0.0 + @export var texture_path: String = "" + + func randomize_properties(): + size = randi_range(1, 5) + rotation_speed = randf_range(0.0001, 0.001) + var tex_id = randi_range(1, 18) + texture_path = "res://assets/planets/p%d.png" % tex_id + + +# ========================================================================= +# === 2. KLASA DANYCH GWIAZDY/SEKTORA ==================================== +# ========================================================================= +class StarData extends Resource: + @export var name: String = "" + @export var position: Vector2 = Vector2.ZERO + @export var type: String = "G2V" + @export var texture_path: String = "" + @export var planets: Array = [] # Lista obiektów PlanetData + + func randomize_properties(): + var types = ["O", "B", "A", "F", "G", "K", "M"] + type = types[randi() % types.size()] + var tex_id = randi_range(1, 3) + texture_path = "res://assets/stars/s%d.png" % tex_id + name = "Ziemia" diff --git a/scripts/GameClasses.gd.uid b/scripts/GameClasses.gd.uid new file mode 100644 index 0000000..0a76476 --- /dev/null +++ b/scripts/GameClasses.gd.uid @@ -0,0 +1 @@ +uid://knplo8og2w4a diff --git a/scripts/GameData.gd b/scripts/GameData.gd index 34d79e6..fbafe41 100644 --- a/scripts/GameData.gd +++ b/scripts/GameData.gd @@ -1,48 +1,55 @@ +# Plik: res://scripts/GameData.gd extends Node +#class_name GameData -var player_data = [] -var sectors: Array = [] -var selected_sector_data: SectorData = null -func new_game(): - TranslationServer.set_locale(Settings.language) - print("🔹 Tworzenie nowej gry...") - sectors.clear() - player_data.clear() - player_data = PlayerData.generate_players(Settings.number_of_players) - sectors = SectorData.generate_sectors(Settings.sector_count) #planety i reszta losuje sie wewnatrz kolejnych funkcji - # Przyznajmy pierwszą planetę pierwszego sektora graczowi - var first_planet = sectors[0].planets[0] - player_data[0].owned_planets.append(first_planet) - sectors[0].owner = player_data[0] # ustaw właściciela sektora, jeśli potrzebne - print_game_state() +# Ładowanie kontenera klas danych +const CLASSES = preload("res://scripts/GameClasses.gd") -func print_game_state(): #fucnkja do testów - for s in sectors: - print("Sektor:", s.name, "ID:", s.id, "Pozycja:", s.position, "Planety:", s.planets.size(),s.texture) - for p in s.planets: - print(" Planeta:", p.name, "Rozmiar:", p.size, "Orbit:", p.orbit_radius, "Rotation:", round(p.rotation_speed*100)/100, - "Biosfere:", round(p.biosfere*100)/100, "Resource Rich:", round(p.resource_rich*100)/100) - for r in p.resources: - if r.exist: - print(" Surowiec:", tr(r.name)) - for p in player_data[0].owned_planets: - print("Gracz posiada planetę:", p.name, player_data[0].name) - - for i in range(player_data.size()): - var p = player_data[i] - var player_type = "AI" if p.is_ai else "Human" - print("Gracz", i + 1, ":", p.name, "(", player_type, ")") - print(" Kredyty:", p.credits) - - if p.owned_planets.size() > 0: - print(" Planety:") - for planet in p.owned_planets: - print(" -", planet.name) - else: - print(" Brak planet") +# Ustawienie aliasów dla czytelności +const PlanetDataClass = CLASSES.PlanetData +const StarDataClass = CLASSES.StarData + +# --- GLOBALNY STAN GRY --- +var sectors: Array[StarDataClass] = [] +# ... (reszta kodu) ... + +# === FUNKCJE GENERUJĄCE GALAKTYKĘ === func _ready(): - new_game() + # ... (logika inicjalizacji) + generate_galaxy() + print(sectors[0].planets[0].name) + +func generate_galaxy(): + sectors.clear() # na wszelki wypadek, żeby nie duplikować + for i in range(2): + var new_sector_data = StarDataClass.new() + + # --- Pozycja gwiazdy w przestrzeni galaktyki --- + new_sector_data.position = Vector2( + randf_range(0, 400), # szerokość galaktyki + randf_range(0, 400) + ) + + new_sector_data.randomize_properties() + new_sector_data.planets = generate_planets_for_sector() + + sectors.append(new_sector_data) +func generate_planets_for_sector() -> Array: + var planets_list: Array = [] + var planet_count = randi_range(2, 2) + for i in range(planet_count): + var p = PlanetDataClass.new() + p.name = "Planeta %d" % (i + 1) + p.randomize_properties() + + # --- Ustal promień orbity i kąt --- + p.orbit_radius = (i + 1) * randf_range(100.0, 200.0) + p.angle = randf_range(0.0, TAU) + + planets_list.append(p) + + return planets_list diff --git a/scripts/PlanetData.gd b/scripts/PlanetData.gd deleted file mode 100644 index c4cd1a2..0000000 --- a/scripts/PlanetData.gd +++ /dev/null @@ -1,38 +0,0 @@ -extends Resource -class_name PlanetData - -var name = "" -var size = 1 -var rotation_speed = 1 -var biosfere = 1.0 -var orbit_radius = 1.0 -var resource_rich = 1.0 -var owner = null -var resources: Array = [] - -# Funkcja statyczna generująca listę planet -static func generate_planets() -> Array: - var planets_list: Array = [] - var planet_count = randi_range(Settings.min_planets_per_sector, Settings.max_planets_per_sector) - for i in range(planet_count): - var p = PlanetData.new() - p.name = ObjectNames.planet_names[randi() % ObjectNames.planet_names.size()] - p.generate_properties() - planets_list.append(p) - return planets_list - -# Generowanie właściwości jednej planety i surowców -func generate_properties(): - size = randi_range(Settings.min_planet_size, Settings.max_planet_size) - rotation_speed = randf_range(Settings.min_rotation_speed, Settings.max_rotation_speed) - biosfere = randf_range(Settings.min_biosfere, Settings.max_biosfere) - orbit_radius = randi_range(Settings.min_orbit_radius, Settings.max_orbit_radius) - resource_rich = randf_range(Settings.min_resource_rich, Settings.max_resource_rich) - - resources.clear() - for res_name in ObjectNames.resources: - var r = ResourcesData.new() - r.name = res_name - r.exist = randi() % 2 == 0 - #r.amount = r.exist ? randi_range(50, 200) : 0 - resources.append(r) diff --git a/scripts/PlanetData.gd.uid b/scripts/PlanetData.gd.uid deleted file mode 100644 index f7665cc..0000000 --- a/scripts/PlanetData.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d0wo3pt4is20h diff --git a/scripts/PlayerData.gd b/scripts/PlayerData.gd deleted file mode 100644 index 31ebdb9..0000000 --- a/scripts/PlayerData.gd +++ /dev/null @@ -1,28 +0,0 @@ -extends Resource -class_name PlayerData - -var name: String = "Gracz" -var is_ai: bool = false # czy gracz jest botem -var credits: int = 1000 -var fleets: Array = [] # lista statków gracza -var technologies: Array = [] # lista odkrytych technologii -var owned_planets: Array = [] # planety należące do gracza -var owned_sectors: Array = [] # sektory należące do gracza - - - -static func generate_players(player_count: int = 1) -> Array: - var players_list: Array = [] - for i in range(player_count): - var player = PlayerData.new() - if i==0: - player.name = "Tirith" - player.credits = 1000 - player.is_ai = false - players_list.append(player) - else: - player.name = "Gracz" + str(i+1) - player.credits = 1000 - player.is_ai = true - players_list.append(player) - return players_list diff --git a/scripts/PlayerData.gd.uid b/scripts/PlayerData.gd.uid deleted file mode 100644 index d387791..0000000 --- a/scripts/PlayerData.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bvcecdv1r6plv diff --git a/scripts/ResourcesData.gd b/scripts/ResourcesData.gd deleted file mode 100644 index 1e747b0..0000000 --- a/scripts/ResourcesData.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Resource -class_name ResourcesData - -var name = "" # nazwa surowca, np. "iron" -#var amount = 0 # ilość -var exist = false #czy istnieje diff --git a/scripts/ResourcesData.gd.uid b/scripts/ResourcesData.gd.uid deleted file mode 100644 index 4085e92..0000000 --- a/scripts/ResourcesData.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ciu4d1qtrufew diff --git a/scripts/SectorData.gd b/scripts/SectorData.gd deleted file mode 100644 index a260f49..0000000 --- a/scripts/SectorData.gd +++ /dev/null @@ -1,65 +0,0 @@ -extends Resource -class_name SectorData - -var id = "" -var name = "" -var position = Vector2.ZERO -var owner = null -var texture = "" -var planets: Array = [] - -# Stałe definiujące ograniczenia generacji -const MAX_ATTEMPTS = 3 # Maksymalna liczba prób znalezienia pozycji dla pojedynczego sektora -const MARGIN = 50 # Margines od krawędzi powierzchni losowania - -static func generate_sectors(sector_count: int) -> Array: - var sectors_list: Array = [] - var min_distance = 100 - - # Zakładam, że Settings.x i Settings.y przechowują szerokość i wysokość mapy - var map_width = Settings.x - var map_height = Settings.y - - # Określenie zakresu losowania, uwzględniającego margines - var min_x = MARGIN - var max_x = map_width - MARGIN - var min_y = MARGIN - var max_y = map_height - MARGIN - - # Sprawdzenie minimalne, czy obszar losowania jest wystarczająco duży - if max_x <= min_x or max_y <= min_y: - push_error("BŁĄD GENERACJI: Margines jest zbyt duży dla wymiarów mapy.") - return [] - for i in range(sector_count): - var s = SectorData.new() - s.id = "sector_" + str(i) - s.name = ObjectNames.sector_names[randi() % ObjectNames.sector_names.size()] - s.texture = random_star_texture() - # --- LOGIKA ZAPOBIEGANIA ZAPĘTLENIU I MARGINESÓW --- - var pos_ok = false - var attempts = 0 - var new_pos = Vector2.ZERO - - while not pos_ok and attempts < MAX_ATTEMPTS: # 1. Ograniczenie pętli - new_pos.x = randf_range(min_x, max_x) - new_pos.y = randf_range(min_y, max_y) - pos_ok = true - for existing in sectors_list: - if existing.position.distance_to(new_pos) < min_distance: - pos_ok = false - break - attempts += 1 # Zwiększamy licznik prób - if pos_ok: - s.position = new_pos - s.planets = PlanetData.generate_planets() - sectors_list.append(s) - else: - push_warning("Nie udało się znaleźć unikalnej pozycji dla sektora " + str(i) + " po " + str(MAX_ATTEMPTS) + " próbach.") - - - return sectors_list - - -static func random_star_texture() -> Texture2D: - var id = randi_range(1, 8) - return load("res://assets/stars/s%d.png" % id) diff --git a/scripts/SectorData.gd.uid b/scripts/SectorData.gd.uid deleted file mode 100644 index 84b5e2e..0000000 --- a/scripts/SectorData.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dwfbgtr5suob7 diff --git a/scripts/galaxy.gd b/scripts/galaxy.gd index c1226ef..5edf4c1 100644 --- a/scripts/galaxy.gd +++ b/scripts/galaxy.gd @@ -1,62 +1,33 @@ -# Plik: Galaxy.gd +# Plik: res://scripts/Galaxy.gd extends Node2D +const StarScene = preload("res://scenes/Star.tscn") +const PlanetScene = preload("res://scenes/Planet.tscn") + func _ready(): - var sectors = GameData.sectors - _spawn_sectors(sectors) + # Jeśli nie masz autoloada GameData, zrób tak: + # var game_data = preload("res://scripts/GameData.gd").new() + # game_data.generate_galaxy() + # display_galaxy(game_data) -func _spawn_sectors(sectors: Array): - for sector in sectors: - - var star_button = TextureButton.new() - star_button.set_meta("sector_data", sector) - - star_button.texture_normal = sector.texture - star_button.position = sector.position - - star_button.scale = Vector2(0.02, 0.02) - - if sector.texture: - var size = sector.texture.get_size() - star_button.custom_minimum_size = size - star_button.size = size - - add_child(star_button) - - star_button.pressed.connect(_on_star_clicked.bind(star_button)) - - var name_label = Label.new() - name_label.text = sector.name - name_label.position = star_button.position + Vector2(-20, 20) - add_child(name_label) - - var name_label2 = Label.new() - name_label2.text = sector.planets[0].name - name_label2.position = star_button.position + Vector2(-20, 40) - add_child(name_label2) + # Jeśli GameData jest autoloadem (zalecane): + if GameData.sectors.is_empty(): + GameData.generate_galaxy() + _display_galaxy() -func _on_star_clicked(star_button_node: TextureButton): - var clicked_sector_data = star_button_node.get_meta("sector_data") - - if clicked_sector_data: - open_sector_view(clicked_sector_data) - else: - push_error("Błąd: Nie znaleziono danych sektora w przycisku.") +func _display_galaxy(): + for star_data in GameData.sectors: + var star_instance = StarScene.instantiate() + star_instance.data = star_data + star_instance.position = star_data.position + # 👇 dodajemy gwiazdę bezpośrednio do Galaxy + add_child(star_instance) -func open_sector_view(data): - - GameData.selected_sector_data = data - - var error = get_tree().change_scene_to_file("res://scenes/sector.tscn") - - if error != OK: - push_error("BŁĄD ZMIANY SCENY: Nie udało się załadować res://scenes/sector.tscn. Sprawdź ścieżkę i plik.") - else: - print("Przeniesiono do widoku sektora:", data.name) - - -func _input(event): - if event.is_action_pressed("ui_cancel"): - get_tree().change_scene_to_file("res://scenes/Menu.tscn") + # Teraz dodaj planety jako dzieci gwiazdy + for planet_data in star_data.planets: + var planet_instance = PlanetScene.instantiate() + planet_instance.data = planet_data + planet_instance.orbit_center = star_instance.position + star_instance.add_child(planet_instance) diff --git a/scripts/planet.gd b/scripts/planet.gd new file mode 100644 index 0000000..f3d82f6 --- /dev/null +++ b/scripts/planet.gd @@ -0,0 +1,32 @@ +# Plik: res://scripts/Planet.gd +extends Node2D +class_name Planet + +# Brak zagnieżdżonej klasy. Dane będą przypisane z GameData +var data = null + +@onready var sprite: Sprite2D = $Sprite2D + +# --- Właściwości ruchu (będą pobierane z 'data') --- +var orbit_center: Vector2 = Vector2.ZERO +var angle: float = 0.0 + +func _ready(): + _apply_visuals() + # Tutaj w _ready synchronizujemy dane orbitalne + +func _apply_visuals(): + # Sprawdza, czy 'data' jest obiektem i ma ścieżkę do tekstury + if is_instance_valid(data) and data.texture_path != "": + var planet_texture = load(data.texture_path) + if planet_texture and sprite: + sprite.texture = planet_texture + +func _process(delta): + # Logika ruchu orbitalnego, używająca danych z 'data' + if is_instance_valid(data) and data.orbit_radius > 0: + + data.angle += data.rotation_speed * delta + + var offset = Vector2(cos(data.angle), sin(data.angle)) * data.orbit_radius + self.position = orbit_center + offset diff --git a/scripts/planet.gd.uid b/scripts/planet.gd.uid new file mode 100644 index 0000000..0bd65e2 --- /dev/null +++ b/scripts/planet.gd.uid @@ -0,0 +1 @@ +uid://bdmoi05k2qhjs diff --git a/scripts/sector.gd b/scripts/sector.gd deleted file mode 100644 index 8ae80c2..0000000 --- a/scripts/sector.gd +++ /dev/null @@ -1,25 +0,0 @@ -# Plik: sector_view_script.gd (Skrypt podłączony do root węzła w sector.tscn) -extends Node2D # lub inny węzeł główny -class_name SectorView # Używamy class_name dla czystości - -var sector_data: SectorData # Lokalna referencja do danych - -func _ready(): - # Pobieramy referencję do danych z Singletonu - sector_data = GameData.selected_sector_data - - if sector_data: - print("Scena sektor załadowana. Dane pobrane dla:", sector_data.name) - # ZWOLNIJ SCHOWEK - GameData.selected_sector_data = null - - # --- TUTAJ ZACZYNASZ INSTANCJONOWAĆ WIZUALIZACJE --- - # Np. rysujesz gwiazdę, planety itd. - - var debug_label = Label.new() - debug_label.text = "Widok Sektora: " + sector_data.name + ", Planety: " + str(sector_data.planets.size()) - debug_label.position = Vector2(100, 100) - add_child(debug_label) - - else: - push_error("Błąd: Scena sektora nie otrzymała danych z GameData!") diff --git a/scripts/sector.gd.uid b/scripts/sector.gd.uid deleted file mode 100644 index faf1329..0000000 --- a/scripts/sector.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c6s5mbfosgmc3 diff --git a/scripts/star.gd b/scripts/star.gd new file mode 100644 index 0000000..37a8ccd --- /dev/null +++ b/scripts/star.gd @@ -0,0 +1,19 @@ +# Plik: res://scripts/Star.gd +extends Node2D +class_name Star + +# Brak zagnieżdżonej klasy. Dane będą przypisane z GameData +var data = null + +@onready var sprite: Sprite2D = $Sprite2D + +func _ready(): + # Oczekujemy, że węzeł, który nas instancjonuje, przypisze 'data' + _apply_visuals() + +func _apply_visuals(): + # Sprawdza, czy 'data' jest obiektem i ma ścieżkę do tekstury + if is_instance_valid(data) and data.texture_path != "": + var star_texture = load(data.texture_path) + if star_texture and sprite: + sprite.texture = star_texture diff --git a/scripts/star.gd.uid b/scripts/star.gd.uid new file mode 100644 index 0000000..a127451 --- /dev/null +++ b/scripts/star.gd.uid @@ -0,0 +1 @@ +uid://c7l387xor12hx