diff --git a/scripts/GameData.gd b/scripts/GameData.gd index 09ade75..f98879a 100644 --- a/scripts/GameData.gd +++ b/scripts/GameData.gd @@ -1,66 +1,45 @@ extends Node -# Podstawowe dane gry var player_data = null -var sectors = [] -var fleets = [] +var sectors: Array = [] -# Funkcja inicjalizuj膮ca dane nowej gry func new_game(): print("馃敼 Tworzenie nowej gry...") - player_data = null sectors.clear() - fleets.clear() - -func generate_sectors(sector_count: int = 10): - sectors.clear() - - for i in range(sector_count): - # Tworzymy sektor - var s = SectorData.new() - s.id = "sector_" + str(i) - s.name = ObjectNames.sector_names[randi() % ObjectNames.sector_names.size()] - s.position = Vector2(randi() % 1000, randi() % 600) - - # Losowa liczba planet (1-5) - var planet_count = randi_range(Settings.min_planets_per_sector, Settings.max_planets_per_sector ) - var planet_size = randi_range(Settings.min_planet_size, Settings.max_planet_size) - for j in range(planet_count): - var p = PlanetData.new() - p.name = ObjectNames.planet_names[randi() % ObjectNames.planet_names.size()] - p.size = planet_size # rozmiar 50-200 - p.rotation_speed = randf() * 5 # pr臋dko艣膰 obrotu 0-5 - p.biosfere = randf() # 0.0 - 1.0 - p.orbit_radius = randi() % 200 + 50 # 50-250 - p.resource_rich = randf() # 0.0 - 1.0 - - # Generowanie surowc贸w dla planety - p.resources.clear() - for res_name in ObjectNames.resources: - var r = ResourcesData.new() - r.name = res_name - r.exist = randi() % 2 == 0 # 50% szans, 偶e surowiec wyst膮pi - #r.amount = (randi() % 200 + 50) if r.exist else 0 # je艣li istnieje, losowa ilo艣膰 - p.resources.append(r) - - s.planets.append(p) - - # Dodajemy sektor do listy GameData - sectors.append(s) + 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 _ready(): - generate_sectors(Settings.sector_count) - +func print_game_state(): for s in sectors: print("Sektor:", s.name, "ID:", s.id, "Pozycja:", s.position, "Planety:", s.planets.size()) 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 res in p.resources: - if res.exist: - print(" Surowiec:", res.name) + 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:", 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") + + +func _ready(): + new_game() diff --git a/scripts/PlanetData.gd b/scripts/PlanetData.gd index 6954582..c4cd1a2 100644 --- a/scripts/PlanetData.gd +++ b/scripts/PlanetData.gd @@ -4,8 +4,35 @@ class_name PlanetData var name = "" var size = 1 var rotation_speed = 1 -var biosfere = 1.0 # 0.0 - 1.0 -var owner = null # PlayerData lub AI -var orbit_radius = 1.0 # odleg艂o艣膰 od gwiazdy -var resource_rich = 1.0 #bogato艣膰 surow贸cw 0-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/PlayerData.gd b/scripts/PlayerData.gd new file mode 100644 index 0000000..b8d30cd --- /dev/null +++ b/scripts/PlayerData.gd @@ -0,0 +1,28 @@ +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 = "Gracz 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 new file mode 100644 index 0000000..d387791 --- /dev/null +++ b/scripts/PlayerData.gd.uid @@ -0,0 +1 @@ +uid://bvcecdv1r6plv diff --git a/scripts/SectorData.gd b/scripts/SectorData.gd index 801b053..e817018 100644 --- a/scripts/SectorData.gd +++ b/scripts/SectorData.gd @@ -1,13 +1,23 @@ extends Resource class_name SectorData -# Unikalne ID sektora var id = "" -# Nazwa sektora var name = "" -# Pozycja na mapie galaktyki (np. do wy艣wietlenia w UI) var position = Vector2.ZERO -# W艂a艣ciciel sektora (gracz lub AI), null je艣li nie zaj臋ty var owner = null -# Lista planet w sektorze -var planets = [] +var planets: Array = [] + +# Funkcja statyczna tworz膮ca list臋 sektor贸w +static func generate_sectors(sector_count: int) -> Array: + var sectors_list: Array = [] + 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.position = Vector2(randi() % 1000, randi() % 600) + + # Generujemy planety dla tego sektora + s.planets = PlanetData.generate_planets() + + sectors_list.append(s) + return sectors_list diff --git a/scripts/settings.gd b/scripts/settings.gd index 916518e..01c0d18 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -1,6 +1,6 @@ extends Node - +var number_of_players = 3 # Liczba sektor贸w w galaktyce var sector_count: int = 3