54 lines
1.3 KiB
GDScript
54 lines
1.3 KiB
GDScript
# scripts/star_system.gd
|
|
class_name StarSystem
|
|
extends Node2D
|
|
|
|
@export_group("System Metadata")
|
|
@export var system_name: String = "Kepler-186"
|
|
@export var galactic_coordinates: Vector2i = Vector2i.ZERO
|
|
|
|
var system_data: SystemData
|
|
|
|
func _ready():
|
|
# 1. Create the generator tool.
|
|
var generator = StarSystemGenerator.new()
|
|
|
|
# 2. Tell the generator to build the system within this StarSystem node.
|
|
system_data = generator.generate(self)
|
|
|
|
# 3. Register the completed system with the GameManager.
|
|
GameManager.register_star_system(self)
|
|
GameManager.start_game()
|
|
|
|
# --- Public API for accessing system data ---
|
|
func get_star() -> OrbitalBody2D:
|
|
if is_instance_valid(system_data):
|
|
return system_data.star
|
|
return null
|
|
|
|
func get_planetary_systems() -> Array[Barycenter]:
|
|
var bodies: Array[Barycenter] = []
|
|
for child in get_children():
|
|
if child is Barycenter:
|
|
bodies.append(child)
|
|
|
|
return bodies
|
|
|
|
func get_orbital_bodies() -> Array[OrbitalBody2D]:
|
|
var bodies: Array[OrbitalBody2D] = []
|
|
for child in get_children():
|
|
if child is Star or child is Barycenter:
|
|
continue
|
|
if child is OrbitalBody2D:
|
|
bodies.append(child)
|
|
|
|
return bodies
|
|
|
|
func get_system_data() -> SystemData:
|
|
return system_data
|
|
|
|
class AsteroidBelt:
|
|
var width : float
|
|
var mass : float
|
|
var centered_radius : float = 0.0
|
|
var asteroids : Array[OrbitalBody2D]
|