72 lines
2.4 KiB
GDScript
72 lines
2.4 KiB
GDScript
extends Node2D
|
|
|
|
@onready var StarScene = preload("res://scenes/Star.tscn")
|
|
@onready var PlanetScene = preload("res://scenes/Planet.tscn")
|
|
@onready var MenuScene = preload("res://scenes/Menu.tscn")
|
|
|
|
|
|
func _ready():
|
|
if GameData.game_lunched == false:
|
|
_generate_galaxy(Settings.NUMBER_OF_SYSTEMS)
|
|
GameData.game_lunched = true
|
|
|
|
|
|
|
|
func _generate_galaxy(count: int):
|
|
for i in range(count):
|
|
var star = StarScene.instantiate()
|
|
star.star_name = Names.sector_names[randi() % Names.sector_names.size()]
|
|
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)
|
|
|
|
# generowanie planet dla danej gwiazdy
|
|
for j in range(star.planet_count):
|
|
var planet = PlanetScene.instantiate()
|
|
planet.pname = Names.planet_names[randi() % Names.planet_names.size()]
|
|
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)
|
|
|
|
|
|
|
|
print("--- Koniec listy ---")
|
|
|
|
|
|
|
|
# Lista wszystkich możliwych surowców
|
|
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}
|
|
|
|
|
|
func _input(event):
|
|
if event.is_action_pressed("ui_cancel"): # np. klawisz ESC
|
|
show_menu()
|
|
|
|
func show_menu():
|
|
|
|
var cam = $Camera2D
|
|
if cam:
|
|
cam.enabled = false
|
|
var menu_instance = MenuScene.instantiate()
|
|
add_child(menu_instance)
|
|
menu_instance.z_index = 100 # na wierzchu wszystkiego
|
|
get_tree().paused = true # pauzuje grę, jeśli chcesz
|