Rozbudowa schematów danych
This commit is contained in:
parent
2454f80cf5
commit
05b77d6737
@ -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)
|
||||
|
||||
|
||||
func _ready():
|
||||
generate_sectors(Settings.sector_count)
|
||||
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():
|
||||
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()
|
||||
|
||||
@ -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)
|
||||
|
||||
28
scripts/PlayerData.gd
Normal file
28
scripts/PlayerData.gd
Normal file
@ -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
|
||||
1
scripts/PlayerData.gd.uid
Normal file
1
scripts/PlayerData.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bvcecdv1r6plv
|
||||
@ -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
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
extends Node
|
||||
|
||||
|
||||
var number_of_players = 3
|
||||
# Liczba sektorów w galaktyce
|
||||
var sector_count: int = 3
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user