Custom pipeline for GJ-0 (Sol) that imports real NASA/USGS planetary data instead of procedural generation. Produces the same output format (heightmap.png, globe.png, markers.json). Real data bodies: - Earth: ETOPO2022 elevation + WorldClim climate + 14 rivers - Mars: MOLA DEM + ferric biome classes + terraformed water - Luna: LOLA DEM + lunar biome palette Procedural fallback for Mercury, Venus, Phobos, Deimos. Synthetic elevation from albedo for Io, Europa, Ganymede, Callisto, Titan, Enceladus. Gas giants use existing renderer. New biome classes 34-36 (ferric_dust/highland/lowland) for Mars iron oxide surface. Earth features: 50 cities (smart scatter by continent), 15 named rivers, oceans, mountains. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
26 lines
924 B
Python
26 lines
924 B
Python
"""
|
|
Gas giant body definition helpers for Jupiter, Saturn, Uranus, Neptune.
|
|
|
|
Gas giants have no solid surface — the existing planet_renderer._render_gas_giant()
|
|
handles band patterns procedurally. This module only provides configuration
|
|
validation and body_def enhancement. No terrain dict is produced.
|
|
|
|
The actual overrides are in sol_overrides.json and applied by the body
|
|
definition parser. This module exists for future enhancement (ring tuning,
|
|
storm placement, etc).
|
|
"""
|
|
|
|
|
|
def validate_gas_giant_def(body_def: dict) -> bool:
|
|
"""Check that a gas giant body_def has required fields for rendering."""
|
|
pc = body_def.get("planet_class", "")
|
|
if "gas_giant" not in pc and pc not in ("gas_giant",):
|
|
return False
|
|
|
|
gg = body_def.get("gas_giant", {})
|
|
if not gg.get("band_palette"):
|
|
print(f" WARNING: {body_def['id']} missing gas_giant.band_palette")
|
|
return False
|
|
|
|
return True
|