Add research lab planets and research points (#63)
This commit is contained in:
parent
651f8b787e
commit
3f3a22227d
43 changed files with 459 additions and 30 deletions
55
ResearchLabPlanetVisual.gd
Normal file
55
ResearchLabPlanetVisual.gd
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
extends Node2D
|
||||
|
||||
# Same informal interface as GasGiantVisual/RockyPlanetVisual - configure(),
|
||||
# extractor_anchor(), animates via its own _process(). Deliberately angular
|
||||
# and armoured rather than a natural silhouette (#63: this is an ENEMY
|
||||
# installation, not a celestial body), with a rotating dish and blinking
|
||||
# warning lights to read as occupied/hostile at a glance.
|
||||
|
||||
var phase: float = 0.0
|
||||
|
||||
const RADIUS: float = 108.0
|
||||
const HULL_COLOR: Color = Color(0.55, 0.1, 0.08)
|
||||
const CORE_COLOR: Color = Color(0.9, 0.25, 0.18)
|
||||
const WARNING_COLOR: Color = Color(1.0, 0.2, 0.15)
|
||||
const DARK_CORE: Color = Color(0.14, 0.02, 0.02)
|
||||
|
||||
|
||||
func configure(_shape_seed: int) -> void:
|
||||
queue_redraw()
|
||||
|
||||
|
||||
func extractor_anchor() -> Vector2:
|
||||
return Vector2(0.0, -(RADIUS + 40.0))
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
phase += delta
|
||||
queue_redraw()
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
var hull: PackedVector2Array = PackedVector2Array()
|
||||
for i in range(6):
|
||||
var angle: float = TAU * float(i) / 6.0
|
||||
hull.append(Vector2(cos(angle), sin(angle)) * RADIUS)
|
||||
NeonDraw.draw_glowing_polygon(self, hull, HULL_COLOR, 0.85, DARK_CORE)
|
||||
|
||||
var inner: PackedVector2Array = PackedVector2Array()
|
||||
for i in range(6):
|
||||
var angle: float = TAU * float(i) / 6.0 + PI / 6.0
|
||||
inner.append(Vector2(cos(angle), sin(angle)) * RADIUS * 0.55)
|
||||
NeonDraw.draw_glowing_polygon(self, inner, CORE_COLOR, 0.9, DARK_CORE)
|
||||
|
||||
# A slow-rotating dish - reads as actively transmitting, not derelict.
|
||||
var dish_angle: float = phase * 0.6
|
||||
var dish_tip: Vector2 = Vector2(cos(dish_angle), sin(dish_angle)) * RADIUS * 1.35
|
||||
NeonDraw.draw_glowing_line(self, Vector2.ZERO, dish_tip, CORE_COLOR, 0.8, 0.55, DARK_CORE)
|
||||
NeonDraw.draw_glowing_circle(self, dish_tip, 11.0, CORE_COLOR, 1.0, DARK_CORE)
|
||||
|
||||
# Blinking hull-corner warning lights.
|
||||
var blink: float = 0.4 + 0.6 * absf(sin(phase * 4.0))
|
||||
for i in range(6):
|
||||
var angle: float = TAU * float(i) / 6.0
|
||||
var at: Vector2 = Vector2(cos(angle), sin(angle)) * RADIUS
|
||||
NeonDraw.draw_glowing_circle(self, at, 5.0, WARNING_COLOR, blink, DARK_CORE)
|
||||
Loading…
Reference in a new issue