spaceship/surface/PlanetSurfaceProfile.gd
2026-09-03 22:31:32 +02:00

31 lines
1.7 KiB
GDScript

class_name PlanetSurfaceProfile
extends Resource
# Declarative recipe for a landed planet surface. The host scene only knows
# how to apply one of these; the feature scene owns the actual resource nodes.
@export var profile_id: String = "rocky"
@export var features_scene: PackedScene
# Optional self-contained gameplay encounter. Unlike an authored PlanetSetup,
# this owns its own objectives and layout and is therefore not configurable in
# the setup editor.
@export var encounter_scene: PackedScene
@export var editor_visible: bool = true
@export var show_capture_status: bool = true
# Which shader draws this surface's backdrop. Every profile names one - the
# old "null means keep whatever the scene already had" convention is what let
# the game and the setup editor drift apart, since each scene "already had" a
# different shader. SurfaceBackground.apply_profile() is the only consumer.
@export var background_shader: Shader = null
# Optional ready-made field for a tiled background shader. Procedural rocky
# terrain still bakes once; authored surfaces can avoid both that load spike
# and all per-frame procedural fragment work by shipping their tile directly.
@export var background_field_texture: Texture2D = null
# World-space size of one background field cell. Smaller values reveal more
# of the authored field at once without changing the gameplay camera zoom.
@export_range(40.0, 440.0, 1.0) var background_cell_size: float = 220.0
@export var base_color: Color = Color(0.75, 0.75, 0.76, 1.0)
@export var crater_color: Color = Color(0.44, 0.44, 0.45, 1.0)
@export var highlight_color: Color = Color(0.89, 0.89, 0.9, 1.0)
@export var caption_color: Color = Color(0.08, 0.16, 0.2, 1.0)
@export var caption_outline_color: Color = Color(0.9, 0.95, 0.96, 0.8)