Zmiany - jedna wielka scena
This commit is contained in:
parent
edd30ea0f4
commit
a4842dc22e
@ -1,2 +0,0 @@
|
|||||||
extends Node
|
|
||||||
# Autoload: Manager
|
|
||||||
@ -1 +0,0 @@
|
|||||||
uid://c4udho6lk0dla
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
importer="csv_translation"
|
importer="csv_translation"
|
||||||
type="Translation"
|
type="Translation"
|
||||||
uid="uid://0ien22wevy7d"
|
uid="uid://cisrti2abcb3n"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
|
|||||||
@ -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]
|
||||||
|
|
||||||
@ -56,7 +55,17 @@ menu={
|
|||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
zoom_in={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
zoom_out={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[internationalization]
|
[internationalization]
|
||||||
|
|
||||||
locale/translations=PackedStringArray("res://localization/translation.de.translation", "res://localization/translation.en.translation", "res://localization/translation.pl.translation", "res://localization/translation.cs.translation", "res://localization/translation.es.translation")
|
locale/translations=PackedStringArray("res://localization/translation.cs.translation", "res://localization/translation.de.translation", "res://localization/translation.en.translation", "res://localization/translation.es.translation", "res://localization/translation.pl.translation")
|
||||||
|
|||||||
@ -1,17 +1,27 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://b1vxl6rs5odt1"]
|
[gd_scene load_steps=5 format=3 uid="uid://b1vxl6rs5odt1"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cts6e8xmnqsax" path="res://scripts/galaxy.gd" id="1_jxn3g"]
|
[ext_resource type="Script" uid="uid://cts6e8xmnqsax" path="res://scripts/galaxy.gd" id="1_jxn3g"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dvydsg5o77wdm" path="res://assets/background/galaxy_background.jpg" id="1_n7ltq"]
|
[ext_resource type="Texture2D" uid="uid://dvydsg5o77wdm" path="res://assets/background/galaxy_background.jpg" id="1_n7ltq"]
|
||||||
[ext_resource type="AudioStream" uid="uid://c8xg32p8lbltw" path="res://assets/sounds/music/game_music.mp3" id="3_mlxib"]
|
[ext_resource type="AudioStream" uid="uid://c8xg32p8lbltw" path="res://assets/sounds/music/game_music.mp3" id="3_mlxib"]
|
||||||
|
[ext_resource type="Script" uid="uid://b4cmg63daeo7g" path="res://scripts/camera_2d.gd" id="4_5xxpo"]
|
||||||
|
|
||||||
[node name="Galaxy" type="Node2D"]
|
[node name="Galaxy" type="Node2D"]
|
||||||
script = ExtResource("1_jxn3g")
|
script = ExtResource("1_jxn3g")
|
||||||
|
|
||||||
[node name="Background" type="Sprite2D" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
position = Vector2(576.00006, 323.99994)
|
layer = -1
|
||||||
scale = Vector2(0.3, 0.30000004)
|
|
||||||
|
[node name="Background" type="Sprite2D" parent="CanvasLayer"]
|
||||||
|
z_index = -10
|
||||||
|
position = Vector2(580, 332)
|
||||||
|
scale = Vector2(0.30208334, 0.32222223)
|
||||||
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="Camera2D" type="Camera2D" parent="."]
|
||||||
|
position = Vector2(904, 512)
|
||||||
|
zoom = Vector2(0.64, 0.64)
|
||||||
|
script = ExtResource("4_5xxpo")
|
||||||
|
|||||||
18
scenes/planet.tscn
Normal file
18
scenes/planet.tscn
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://cynwjsqox5eqx"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bdmoi05k2qhjs" path="res://scripts/planet.gd" id="1_cktii"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bmu7jwnvu7ob2" path="res://assets/planets/p5.png" id="2_h8ms6"]
|
||||||
|
|
||||||
|
[node name="Planet" type="Node2D"]
|
||||||
|
script = ExtResource("1_cktii")
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
|
scale = Vector2(0.053333335, 0.053333335)
|
||||||
|
texture = ExtResource("2_h8ms6")
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="."]
|
||||||
|
offset_left = -16.0
|
||||||
|
offset_top = 8.0
|
||||||
|
offset_right = 8.0
|
||||||
|
offset_bottom = 21.0
|
||||||
|
theme_override_font_sizes/font_size = 8
|
||||||
19
scenes/star.tscn
Normal file
19
scenes/star.tscn
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://cvc0brcqh2rhu"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://c7l387xor12hx" path="res://scripts/star.gd" id="1_mcqwg"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b4iycl7xcvpkp" path="res://assets/stars/s1.png" id="2_j6vao"]
|
||||||
|
|
||||||
|
[node name="Star" type="Node2D"]
|
||||||
|
script = ExtResource("1_mcqwg")
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
|
position = Vector2(-2.3841858e-07, 0)
|
||||||
|
scale = Vector2(0.014858843, 0.014858842)
|
||||||
|
texture = ExtResource("2_j6vao")
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="."]
|
||||||
|
offset_left = -16.0
|
||||||
|
offset_top = 16.0
|
||||||
|
offset_right = 16.0
|
||||||
|
offset_bottom = 30.0
|
||||||
|
theme_override_font_sizes/font_size = 10
|
||||||
@ -1,48 +1,3 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
var player_data = []
|
var game_lunched = false
|
||||||
var sectors: Array = []
|
|
||||||
|
|
||||||
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
|
|
||||||
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")
|
|
||||||
|
|
||||||
func _ready():
|
|
||||||
new_game()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
|
||||||
29
scripts/camera_2d.gd
Normal file
29
scripts/camera_2d.gd
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
extends Camera2D
|
||||||
|
|
||||||
|
@export var speed := 500 # prędkość przesuwania
|
||||||
|
@export var zoom_speed := 0.1 # prędkość zoomu
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
var move = Vector2.ZERO
|
||||||
|
|
||||||
|
# przesuwanie WSAD / strzałki
|
||||||
|
if Input.is_action_pressed("map_move_right"):
|
||||||
|
move.x += 1
|
||||||
|
if Input.is_action_pressed("map_move_left"):
|
||||||
|
move.x -= 1
|
||||||
|
if Input.is_action_pressed("map_move_down"):
|
||||||
|
move.y += 1
|
||||||
|
if Input.is_action_pressed("map_move_up"):
|
||||||
|
move.y -= 1
|
||||||
|
|
||||||
|
position += move.normalized() * speed * delta
|
||||||
|
|
||||||
|
# zoom
|
||||||
|
if Input.is_action_pressed("zoom_in"): # np. Q
|
||||||
|
zoom -= Vector2(zoom_speed, zoom_speed) * delta
|
||||||
|
if Input.is_action_pressed("zoom_out"): # np. E
|
||||||
|
zoom += Vector2(zoom_speed, zoom_speed) * delta
|
||||||
|
|
||||||
|
# ograniczenie minimalnego i maksymalnego zoomu
|
||||||
|
zoom.x = clamp(zoom.x, 0.1, 3)
|
||||||
|
zoom.y = clamp(zoom.y, 0.1, 3)
|
||||||
1
scripts/camera_2d.gd.uid
Normal file
1
scripts/camera_2d.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://b4cmg63daeo7g
|
||||||
@ -1,30 +1,65 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
|
@onready var StarScene = preload("res://scenes/Star.tscn")
|
||||||
|
@onready var PlanetScene = preload("res://scenes/Planet.tscn")
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
var sectors = GameData.sectors # zakładam że GameData jest autoloadem
|
if GameData.game_lunched == false:
|
||||||
_spawn_sectors(sectors)
|
_generate_galaxy(Settings.NUMBER_OF_SYSTEMS) # 5 gwiazd testowo
|
||||||
|
GameData.game_lunched = true
|
||||||
|
print_all_stars_and_planets()
|
||||||
|
|
||||||
func _spawn_sectors(sectors: Array):
|
|
||||||
for sector in sectors:
|
|
||||||
var star = Sprite2D.new()
|
|
||||||
star.texture = sector.texture
|
|
||||||
star.position = sector.position
|
|
||||||
star.scale = Vector2(0.02, 0.02) # ewentualnie zmień skalę
|
|
||||||
add_child(star) # dodajemy bezpośrednio do Galaxy
|
|
||||||
|
|
||||||
# dodaj nazwę pod gwiazdą
|
func _generate_galaxy(count: int):
|
||||||
var name_label = Label.new()
|
for i in range(count):
|
||||||
name_label.text = sector.name
|
var star = StarScene.instantiate()
|
||||||
name_label.position = star.position + Vector2(-20, 20)
|
star.star_name = "Star_" + str(i)
|
||||||
add_child(name_label)
|
star.planet_count = randi_range(Settings.min_planet, Settings.max_planet)
|
||||||
|
star.global_position = Vector2(randi_range(50, Settings.x), randi_range(50, Settings.y))
|
||||||
|
star.get_node("Sprite2D").texture = load("res://assets/stars/s%d.png" % randi_range(1,8))
|
||||||
|
add_child(star)
|
||||||
|
|
||||||
# dodaj nazwę pod gwiazdą
|
# generowanie planet dla danej gwiazdy
|
||||||
var name_label2 = Label.new()
|
for j in range(star.planet_count):
|
||||||
name_label2.text = sector.planets[0].name
|
var planet = PlanetScene.instantiate()
|
||||||
name_label2.position = star.position + Vector2(-20, 40)
|
planet.pname = "Planet_" + str(i) + "_" + str(j)
|
||||||
add_child(name_label2)
|
planet.orbit_radius = 30 + j * 20
|
||||||
|
planet.orbit_speed = randf_range(0.01, 0.04)
|
||||||
|
generate_planet_resources(planet) # <-- tu losujemy surowce
|
||||||
|
var angle = randf() * TAU
|
||||||
|
planet.position = Vector2(cos(angle), sin(angle)) * planet.orbit_radius
|
||||||
|
planet.biosfere = randf() # float od 0 do 1
|
||||||
|
if planet.biosfere > 0.7:
|
||||||
|
planet.get_node("Sprite2D").texture = load("res://assets/planets/p%d.png" % randi_range(1,9))
|
||||||
|
else:
|
||||||
|
planet.get_node("Sprite2D").texture = load("res://assets/planets/p%d.png" % randi_range(10,18))
|
||||||
|
#planet.get_node("Sprite2D").texture = load("res://assets/planets/p16.png")
|
||||||
|
star.add_child(planet) # Planeta należy do gwiazdy!
|
||||||
|
star.planets.append(planet)
|
||||||
|
|
||||||
|
func print_all_stars_and_planets():
|
||||||
|
print("--- Lista gwiazd i planet ---")
|
||||||
|
|
||||||
|
for star in get_children():
|
||||||
|
if star is Star:
|
||||||
|
print("Gwiazda: ", star.star_name)
|
||||||
|
|
||||||
|
if star.planets.size() == 0:
|
||||||
|
print(" (Brak planet)")
|
||||||
|
else:
|
||||||
|
for planet in star.planets:
|
||||||
|
print("Planeta: ", planet.pname, " | Surowiec: ", planet.resource_type)
|
||||||
|
|
||||||
|
print("--- Koniec listy ---")
|
||||||
|
|
||||||
|
|
||||||
func _input(event):
|
|
||||||
if event.is_action_pressed("ui_cancel"): # "ui_cancel" to ESC
|
# Lista wszystkich możliwych surowców
|
||||||
get_tree().change_scene_to_file("res://scenes/Menu.tscn")
|
var RESOURCE_TYPES = Settings.RESOURCE_TYPES
|
||||||
|
|
||||||
|
func generate_planet_resources(planet):
|
||||||
|
planet.resources = {} # resetujemy słownik
|
||||||
|
for res_name in RESOURCE_TYPES:
|
||||||
|
var exists = randi() % 100 < 50 # 50% szans na wystąpienie
|
||||||
|
var amount = 0
|
||||||
|
planet.resources[res_name] = {"exist": exists, "amount": amount}
|
||||||
|
|||||||
27
scripts/planet.gd
Normal file
27
scripts/planet.gd
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
extends Node2D
|
||||||
|
class_name Planet
|
||||||
|
@onready var label = $Label
|
||||||
|
var pname: String = ""
|
||||||
|
var orbit_radius: float = 30.0
|
||||||
|
var orbit_speed: float = 0.01
|
||||||
|
var biosfere: float = 0.1
|
||||||
|
var resources := {}
|
||||||
|
|
||||||
|
var texture: Texture2D
|
||||||
|
var angle = randf() * TAU
|
||||||
|
func _ready():
|
||||||
|
print("Planeta: %s, surowiec: %s" % [pname, resources])
|
||||||
|
#str(round(biosfere * 100) / 100.0)
|
||||||
|
_update_position()
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
angle += orbit_speed * delta # obrót w czasie
|
||||||
|
angle = fmod(angle, TAU) # utrzymanie kąta w 0..2π
|
||||||
|
_update_position()
|
||||||
|
print(pname, angle)
|
||||||
|
label.text = str(round(position * 100) / 100.0)
|
||||||
|
|
||||||
|
func _update_position():
|
||||||
|
# pozycja lokalna względem gwiazdy
|
||||||
|
position = Vector2(cos(angle), sin(angle)) * orbit_radius
|
||||||
1
scripts/planet.gd.uid
Normal file
1
scripts/planet.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://bdmoi05k2qhjs
|
||||||
@ -1,34 +1,15 @@
|
|||||||
extends Node
|
extends Node
|
||||||
var language = 'pl'
|
var language = 'pl'
|
||||||
var number_of_players = 3
|
var number_of_players = 1
|
||||||
# Liczba sektorów w galaktyce
|
# Liczba sektorów w galaktyce
|
||||||
var sector_count: int = 4
|
var NUMBER_OF_SYSTEMS: int = 14
|
||||||
|
|
||||||
# Minimalna i maksymalna liczba planet w sektorze
|
const RESOURCE_TYPES = ["Iron", "Uran", "Titan", "Water"]
|
||||||
var min_planets_per_sector: int = 1
|
|
||||||
var max_planets_per_sector: int = 3
|
|
||||||
|
|
||||||
# Minimalna i maksymalna wielkość planety
|
#pozycja systemów
|
||||||
var min_planet_size: int = 1
|
var x = 1900
|
||||||
var max_planet_size: int = 3
|
var y = 1000
|
||||||
|
|
||||||
# Minimalna i maksymalna prędkość obrotu planety
|
#Ilosc systemów
|
||||||
var min_rotation_speed: float = 0.1
|
var min_planet = 1
|
||||||
var max_rotation_speed: float = 1.0
|
var max_planet = 5
|
||||||
|
|
||||||
# Minimalna i maksymalna odległość planety od gwiazdy
|
|
||||||
var min_orbit_radius: float = 50
|
|
||||||
var max_orbit_radius: float = 250
|
|
||||||
|
|
||||||
# Minimalna i maksymalna wartość biosfery (habitability)
|
|
||||||
var min_biosfere: float = 0.0
|
|
||||||
var max_biosfere: float = 1.0
|
|
||||||
|
|
||||||
# Minimalna i maksymalna wartość resource_rich
|
|
||||||
var min_resource_rich: float = 0.1
|
|
||||||
var max_resource_rich: float = 1.0
|
|
||||||
|
|
||||||
# Inne parametry świata możesz dodawać tutaj w miarę potrzeb
|
|
||||||
#Granice galaktyki
|
|
||||||
var x = 500
|
|
||||||
var y = 500
|
|
||||||
|
|||||||
11
scripts/star.gd
Normal file
11
scripts/star.gd
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
extends Node2D
|
||||||
|
class_name Star
|
||||||
|
@onready var label = $Label
|
||||||
|
@export var star_name: String = ""
|
||||||
|
@export var planet_count: int = 0
|
||||||
|
var planets: Array = []
|
||||||
|
var texture: Texture2D
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
print("Gwiazda %s z %d planetami" % [star_name, planet_count])
|
||||||
|
label.text = star_name
|
||||||
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