31 lines
1.7 KiB
GDScript
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)
|