Files
millimeters-of-aluminum/scripts/star_system.gd

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]