38 lines
1.1 KiB
GDScript3
38 lines
1.1 KiB
GDScript3
|
|
extends Node2D
|
||
|
|
|
||
|
|
# Purely visual: a transport vessel running a hub -> mothership -> building
|
||
|
|
# supply route. Carries no state of its own; GameState owns the simulation
|
||
|
|
# and TransporterField creates, positions and frees this to match.
|
||
|
|
|
||
|
|
const HULL_COLOR: Color = Color(0.95, 0.55, 0.85)
|
||
|
|
|
||
|
|
var laden: bool = false
|
||
|
|
|
||
|
|
|
||
|
|
func _ready() -> void:
|
||
|
|
add_to_group("transporters")
|
||
|
|
z_index = -1
|
||
|
|
queue_redraw()
|
||
|
|
|
||
|
|
|
||
|
|
func set_laden(value: bool) -> void:
|
||
|
|
if laden == value:
|
||
|
|
return
|
||
|
|
laden = value
|
||
|
|
queue_redraw()
|
||
|
|
|
||
|
|
|
||
|
|
func _draw() -> void:
|
||
|
|
# Squat and boxy, in the transport hub's own magenta, so it reads as
|
||
|
|
# "belongs to the hub" and not as an extractor hauler (green) or a fleet
|
||
|
|
# vessel (sharp cyan triangle).
|
||
|
|
var hull: PackedVector2Array = PackedVector2Array([
|
||
|
|
Vector2(0, -16), Vector2(10, -4), Vector2(10, 14), Vector2(-10, 14), Vector2(-10, -4),
|
||
|
|
])
|
||
|
|
NeonDraw.draw_glowing_polygon(self, hull, HULL_COLOR, 1.0)
|
||
|
|
if laden:
|
||
|
|
# A visible payload, so a loaded run is distinguishable from a
|
||
|
|
# deadhead back to the hub at a glance.
|
||
|
|
NeonDraw.draw_glowing_polygon(self, PackedVector2Array([
|
||
|
|
Vector2(-5, 0), Vector2(5, 0), Vector2(5, 9), Vector2(-5, 9),
|
||
|
|
]), HULL_COLOR, 0.85)
|