extends Node2D # A landable world-object - unlike regular Asteroid.gd, planets are # stationary ("Big Stable Asteroid" - stable means it doesn't drift or # destroy ships on touch). Whether the fleet counts as "landed" is decided # by PlanetField comparing the fleet's CENTROID distance to landing_radius, # not per-ship Area2D collision - a single stable number, immune to the # constant minor jostling of individual ships holding formation, which # used to make the "enter atmosphere" prompt flicker on/off as ships # drifted in and out of the boundary independently of each other even # while the fleet as a whole was clearly sitting on the planet. @export var planet_name: String = "" @export var planet_type: String = "big_stable_asteroid" @export var landing_radius: float = 140.0 # Set by whoever spawns this planet (PlanetField, seeded from the chunk's # own coordinates) so the outline shape is stable across respawns of the # same chunk, instead of reading as a "different" planet every time. @export var shape_seed: int = 0 var shape_points: PackedVector2Array = PackedVector2Array() func _ready() -> void: add_to_group("planets") z_index = -1 var rng: RandomNumberGenerator = RandomNumberGenerator.new() rng.seed = shape_seed var point_count: int = 10 for i in range(point_count): var angle: float = (float(i) / point_count) * TAU var radius: float = rng.randf_range(70.0, 100.0) shape_points.append(Vector2(cos(angle), sin(angle)) * radius) queue_redraw() func _draw() -> void: NeonDraw.draw_glowing_polygon(self, shape_points, Color(0.6, 0.55, 0.5), 1.0)