Próby
This commit is contained in:
parent
e9172db507
commit
e5f3e8d155
@ -1,2 +0,0 @@
|
|||||||
extends Node
|
|
||||||
# Autoload: Manager
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://c4udho6lk0dla
|
|
||||||
@ -17,11 +17,10 @@ config/icon="res://icon.svg"
|
|||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
Manager="*res://Manager.gd"
|
|
||||||
MusicManager="*res://music_manager.gd"
|
MusicManager="*res://music_manager.gd"
|
||||||
GameData="*res://scripts/GameData.gd"
|
|
||||||
ObjectNames="*res://scripts/ObjectNames.gd"
|
ObjectNames="*res://scripts/ObjectNames.gd"
|
||||||
Settings="*res://scripts/settings.gd"
|
Settings="*res://scripts/settings.gd"
|
||||||
|
GameData="*res://scripts/GameData.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
|
|||||||
@ -8,10 +8,14 @@
|
|||||||
script = ExtResource("1_jxn3g")
|
script = ExtResource("1_jxn3g")
|
||||||
|
|
||||||
[node name="Background" type="Sprite2D" parent="."]
|
[node name="Background" type="Sprite2D" parent="."]
|
||||||
position = Vector2(576.00006, 323.99994)
|
position = Vector2(2603.9998, 1474.0001)
|
||||||
scale = Vector2(0.3, 0.30000004)
|
scale = Vector2(1.3562499, 1.3685186)
|
||||||
texture = ExtResource("1_n7ltq")
|
texture = ExtResource("1_n7ltq")
|
||||||
|
|
||||||
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
|
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
|
||||||
stream = ExtResource("3_mlxib")
|
stream = ExtResource("3_mlxib")
|
||||||
autoplay = true
|
autoplay = true
|
||||||
|
|
||||||
|
[node name="Kamera" type="Camera2D" parent="."]
|
||||||
|
position = Vector2(2632, 1472)
|
||||||
|
zoom = Vector2(-0.22, -0.22)
|
||||||
|
|||||||
@ -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"]
|
[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")
|
||||||
|
|||||||
@ -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")
|
|
||||||
@ -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"]
|
[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")
|
||||||
|
|||||||
38
scripts/GameClasses.gd
Normal file
38
scripts/GameClasses.gd
Normal file
@ -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"
|
||||||
1
scripts/GameClasses.gd.uid
Normal file
1
scripts/GameClasses.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://knplo8og2w4a
|
||||||
@ -1,48 +1,55 @@
|
|||||||
|
# Plik: res://scripts/GameData.gd
|
||||||
extends Node
|
extends Node
|
||||||
|
#class_name GameData
|
||||||
|
|
||||||
var player_data = []
|
# Ładowanie kontenera klas danych
|
||||||
var sectors: Array = []
|
const CLASSES = preload("res://scripts/GameClasses.gd")
|
||||||
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()
|
|
||||||
|
|
||||||
func print_game_state(): #fucnkja do testów
|
# Ustawienie aliasów dla czytelności
|
||||||
for s in sectors:
|
const PlanetDataClass = CLASSES.PlanetData
|
||||||
print("Sektor:", s.name, "ID:", s.id, "Pozycja:", s.position, "Planety:", s.planets.size(),s.texture)
|
const StarDataClass = CLASSES.StarData
|
||||||
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()):
|
# --- GLOBALNY STAN GRY ---
|
||||||
var p = player_data[i]
|
var sectors: Array[StarDataClass] = []
|
||||||
var player_type = "AI" if p.is_ai else "Human"
|
# ... (reszta kodu) ...
|
||||||
print("Gracz", i + 1, ":", p.name, "(", player_type, ")")
|
|
||||||
print(" Kredyty:", p.credits)
|
|
||||||
|
|
||||||
if p.owned_planets.size() > 0:
|
# === FUNKCJE GENERUJĄCE GALAKTYKĘ ===
|
||||||
print(" Planety:")
|
|
||||||
for planet in p.owned_planets:
|
|
||||||
print(" -", planet.name)
|
|
||||||
else:
|
|
||||||
print(" Brak planet")
|
|
||||||
|
|
||||||
func _ready():
|
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
|
||||||
|
|||||||
@ -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)
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://d0wo3pt4is20h
|
|
||||||
@ -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
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://bvcecdv1r6plv
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
extends Resource
|
|
||||||
class_name ResourcesData
|
|
||||||
|
|
||||||
var name = "" # nazwa surowca, np. "iron"
|
|
||||||
#var amount = 0 # ilość
|
|
||||||
var exist = false #czy istnieje
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://ciu4d1qtrufew
|
|
||||||
@ -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)
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://dwfbgtr5suob7
|
|
||||||
@ -1,62 +1,33 @@
|
|||||||
# Plik: Galaxy.gd
|
# Plik: res://scripts/Galaxy.gd
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
|
const StarScene = preload("res://scenes/Star.tscn")
|
||||||
|
const PlanetScene = preload("res://scenes/Planet.tscn")
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
var sectors = GameData.sectors
|
# Jeśli nie masz autoloada GameData, zrób tak:
|
||||||
_spawn_sectors(sectors)
|
# var game_data = preload("res://scripts/GameData.gd").new()
|
||||||
|
# game_data.generate_galaxy()
|
||||||
|
# display_galaxy(game_data)
|
||||||
|
|
||||||
func _spawn_sectors(sectors: Array):
|
# Jeśli GameData jest autoloadem (zalecane):
|
||||||
for sector in sectors:
|
if GameData.sectors.is_empty():
|
||||||
|
GameData.generate_galaxy()
|
||||||
var star_button = TextureButton.new()
|
_display_galaxy()
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_star_clicked(star_button_node: TextureButton):
|
func _display_galaxy():
|
||||||
var clicked_sector_data = star_button_node.get_meta("sector_data")
|
for star_data in GameData.sectors:
|
||||||
|
var star_instance = StarScene.instantiate()
|
||||||
|
star_instance.data = star_data
|
||||||
|
star_instance.position = star_data.position
|
||||||
|
|
||||||
if clicked_sector_data:
|
# 👇 dodajemy gwiazdę bezpośrednio do Galaxy
|
||||||
open_sector_view(clicked_sector_data)
|
add_child(star_instance)
|
||||||
else:
|
|
||||||
push_error("Błąd: Nie znaleziono danych sektora w przycisku.")
|
|
||||||
|
|
||||||
|
# Teraz dodaj planety jako dzieci gwiazdy
|
||||||
func open_sector_view(data):
|
for planet_data in star_data.planets:
|
||||||
|
var planet_instance = PlanetScene.instantiate()
|
||||||
GameData.selected_sector_data = data
|
planet_instance.data = planet_data
|
||||||
|
planet_instance.orbit_center = star_instance.position
|
||||||
var error = get_tree().change_scene_to_file("res://scenes/sector.tscn")
|
star_instance.add_child(planet_instance)
|
||||||
|
|
||||||
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")
|
|
||||||
|
|||||||
32
scripts/planet.gd
Normal file
32
scripts/planet.gd
Normal file
@ -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
|
||||||
1
scripts/planet.gd.uid
Normal file
1
scripts/planet.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://bdmoi05k2qhjs
|
||||||
@ -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!")
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://c6s5mbfosgmc3
|
|
||||||
19
scripts/star.gd
Normal file
19
scripts/star.gd
Normal file
@ -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
|
||||||
1
scripts/star.gd.uid
Normal file
1
scripts/star.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://c7l387xor12hx
|
||||||
Loading…
x
Reference in New Issue
Block a user