Add black hole planet and dark matter resource (#55)
A rare, deterministically-seeded landable body yielding a fourth resource, dark matter, obtainable only through an extractor - never a surface pickup. Reuses every existing generic system (resource/planet definitions, surface profiles, extractor/transporter pipeline) with no type-switch branching. Also fixes a latent conquest-gating gap: a surface profile with no authored PlanetSetup (like the black hole's "void") never registered capture points at all, permanently blocking extractor placement. register_capture_points() now treats zero required points as vacuously conquered, and PlanetSurfaceController registers that zero-point state explicitly when no setup exists.
This commit is contained in:
parent
097e17f7aa
commit
cbe07bbb55
20 changed files with 421 additions and 2 deletions
26
DarkMatterResourceGlyph.gd
Normal file
26
DarkMatterResourceGlyph.gd
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
extends Control
|
||||
|
||||
@export var colour: Color = Color(0.55, 0.15, 0.85)
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
var centre: Vector2 = size * 0.5
|
||||
var radius: float = minf(size.x, size.y) * 0.34
|
||||
var points := PackedVector2Array()
|
||||
for i in range(8):
|
||||
var angle: float = TAU * float(i) / 8.0 - PI * 0.5
|
||||
points.append(centre + Vector2(cos(angle), sin(angle)) * radius)
|
||||
# Deep violet glow around a near-black core - not colour.darkened() like
|
||||
# every other glyph's core, deliberately: dark matter has to read as an
|
||||
# absence even against deep space, where a merely-darker version of the
|
||||
# glow colour would still show up as a faint fill instead of a void
|
||||
# with a rim.
|
||||
NeonDraw.draw_glowing_polygon(self, points, colour, 1.0, Color(0.04, 0.01, 0.06), maxf(0.5, radius * 0.035))
|
||||
# A tighter inner ring hints at an event horizon rather than a solid
|
||||
# body - the same outline-only idiom every glyph already uses, just
|
||||
# nested once more.
|
||||
var inner := PackedVector2Array()
|
||||
for i in range(8):
|
||||
var angle: float = TAU * float(i) / 8.0 - PI * 0.5
|
||||
inner.append(centre + Vector2(cos(angle), sin(angle)) * radius * 0.5)
|
||||
NeonDraw.draw_glowing_polygon(self, inner, colour.lightened(0.25), 0.75, Color(0.04, 0.01, 0.06), maxf(0.35, radius * 0.02))
|
||||
Loading…
Reference in a new issue