spaceship/DarkMatterResourceGlyph.gd
Loïc Wisniewski cbe07bbb55 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.
2026-08-16 13:13:38 +02:00

26 lines
1.2 KiB
GDScript

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))